SHOW:
|
|
- or go back to the newest paste.
| 1 | local tArgs = { ... }
| |
| 2 | ||
| 3 | for k,v in pairs({"right","left","top","bottom","front","back"}) do
| |
| 4 | if peripheral.getType(v)=="modem" then | |
| 5 | rednet.open(v) | |
| 6 | isOpen=true | |
| 7 | end | |
| 8 | end | |
| 9 | ||
| 10 | local function printUsage() | |
| 11 | - | rednet.open("right")
|
| 11 | + | |
| 12 | print(" bluetooth receive")
| |
| 13 | print(" bluetooth send <file> <computerID>")
| |
| 14 | print(" bluetooth scan")
| |
| 15 | return | |
| 16 | end | |
| 17 | ||
| 18 | local function scan() | |
| 19 | print("Scanning for Bluetooth devices...")
| |
| 20 | rednet.broadcast("bluetooth.scan")
| |
| 21 | local id,msg = "","" | |
| 22 | local foundComputers = { }
| |
| 23 | while not msg == nil do | |
| 24 | local id,msg = rednet.receive() | |
| 25 | if msg == string.sub(msg, 1, #"bluetooth.scan.reply:") == "bluetooth.scan.reply:" then | |
| 26 | --foundComputers[#foundComputers + 1] = {string.sub(msg, #"bluetooth.scan.reply:" + 1), id}
| |
| 27 | ||
| 28 | foundComputers[#foundComputers + 1] = id | |
| 29 | print("Found: " .. string.sub(msg, #"bluetooth.scan.reply:" + 1) .. " - ID: " .. tostring(id))
| |
| 30 | end | |
| 31 | end | |
| 32 | - | print("File can't be sent!")
|
| 32 | + | |
| 33 | - | print("It is either non existant or is a directory!")
|
| 33 | + | |
| 34 | ||
| 35 | local function sendFile(file, computerID) | |
| 36 | if not fs.exists(file) or fs.isDir(file) then | |
| 37 | print("File can't be sent.")
| |
| 38 | print("It either does not exist or is a directory.")
| |
| 39 | return | |
| 40 | end | |
| 41 | ||
| 42 | computerID = tonumber(computerID) | |
| 43 | ||
| 44 | local sr = fs.open(file, "r") | |
| 45 | print("Connecting to bluetooth device.")
| |
| 46 | ||
| 47 | while true do | |
| 48 | rednet.send(computerID, "bluetooth.connect") | |
| 49 | os.startTimer(1) | |
| 50 | local e,p1,p2,p3 = os.pullEvent() | |
| 51 | if e == "rednet_message" then | |
| 52 | local id,msg = p1,p2 | |
| 53 | if msg == "bluetooth.accept" then | |
| 54 | print("Bluetooth device connected!")
| |
| 55 | - | sleep(0.8) |
| 55 | + | |
| 56 | end | |
| 57 | end | |
| 58 | - | sleep(0.5) |
| 58 | + | |
| 59 | ||
| 60 | sleep(0.2) | |
| 61 | - | local data |
| 61 | + | |
| 62 | ||
| 63 | - | data = sr.readLine() |
| 63 | + | sleep(0.1) |
| 64 | - | if data == nil then |
| 64 | + | |
| 65 | print("Sending file...")
| |
| 66 | data = sr.readAll() | |
| 67 | - | rednet.send(computerID, "bluetooth.file:" .. data) |
| 67 | + | rednet.send(computerID, "bluetooth.file:" .. data) |
| 68 | - | sleep(0.1) |
| 68 | + | sleep(0) |
| 69 | rednet.send(computerID, "bluetooth.done") | |
| 70 | print("File sent!")
| |
| 71 | sr.close() | |
| 72 | end | |
| 73 | ||
| 74 | local function receiveFile() | |
| 75 | print("Waiting for a bluetooth connection...")
| |
| 76 | ||
| 77 | while true do | |
| 78 | local id,msg | |
| 79 | local e,p1,p2,p3 = os.pullEvent() | |
| 80 | if e == "rednet_message" then | |
| 81 | id,msg = p1,p2 | |
| 82 | end | |
| 83 | if e == "key" then | |
| 84 | break | |
| 85 | end | |
| 86 | ||
| 87 | if msg == "bluetooth.scan" then | |
| 88 | rednet.send(id, "bluetooth.scan.reply:" .. os.getComputerLabel()) | |
| 89 | sleep(0) | |
| 90 | - | sleep(0.1) |
| 90 | + | |
| 91 | ||
| 92 | if msg == "bluetooth.connect" then | |
| 93 | print("Connected to " .. id .. ".")
| |
| 94 | local remoteID = id | |
| 95 | - | print("Connected to " .. id .. "!")
|
| 95 | + | |
| 96 | ||
| 97 | local fileName | |
| 98 | ||
| 99 | local id,msg = "","" | |
| 100 | while true do | |
| 101 | - | print("Getting the file name...")
|
| 101 | + | |
| 102 | ||
| 103 | if id == remoteID and string.sub(msg, 1, #"bluetooth.filename:") == "bluetooth.filename:" then | |
| 104 | fileName = string.sub(msg, #"bluetooth.filename:" + 1) | |
| 105 | break | |
| 106 | end | |
| 107 | end | |
| 108 | ||
| 109 | if fs.exists(fileName) then | |
| 110 | print("File already exists. Overwrite existing file? (Y/N)")
| |
| 111 | a = read() | |
| 112 | if a == "y" then | |
| 113 | fs.delete(fileName) | |
| 114 | - | print("File already exists! Deleting old file...")
|
| 114 | + | else |
| 115 | - | fs.delete(fileName) |
| 115 | + | return |
| 116 | end | |
| 117 | end | |
| 118 | - | print("Receiving file: " .. fileName)
|
| 118 | + | |
| 119 | local file = fs.open(fileName, "w") | |
| 120 | ||
| 121 | local id,msg | |
| 122 | while true do | |
| 123 | id,msg = rednet.receive() | |
| 124 | if id == remoteID then | |
| 125 | if string.sub(msg, 1, #"bluetooth.file:") == "bluetooth.file:" then | |
| 126 | local subbedData = string.sub(msg, #"bluetooth.file:" + 1) | |
| 127 | ||
| 128 | file.writeLine(subbedData) | |
| 129 | elseif msg == "bluetooth.done" then | |
| 130 | - | term.setTextColor(colors.lime) |
| 130 | + | |
| 131 | file.close() | |
| 132 | ||
| 133 | - | print(subbedData) |
| 133 | + | |
| 134 | term.setTextColor(colors.white) | |
| 135 | end | |
| 136 | ||
| 137 | print("Received file '" .. fileName .. "'.")
| |
| 138 | ||
| 139 | return true | |
| 140 | end | |
| 141 | end | |
| 142 | end | |
| 143 | - | print("Received file!")
|
| 143 | + | |
| 144 | end | |
| 145 | - | break |
| 145 | + | |
| 146 | ||
| 147 | if tArgs[1] == "receive" then | |
| 148 | receiveFile() | |
| 149 | elseif tArgs[1] == "send" and #tArgs == 3 then | |
| 150 | sendFile(tArgs[2], tArgs[3]) | |
| 151 | elseif tArgs[1] == "scan" then | |
| 152 | scan() | |
| 153 | else | |
| 154 | printUsage() | |
| 155 | end |