SHOW:
|
|
- or go back to the newest paste.
| 1 | -- ############################## | |
| 2 | - | -- msg_sender test4 |
| 2 | + | -- msg_sender |
| 3 | -- version 0.6 | |
| 4 | -- (a paired program: msg_receiver 0.6 http://pastebin.com/ZsGmzz2T) | |
| 5 | -- http://hevohevo.hatenablog.com/ | |
| 6 | ||
| 7 | rednet.open("right")
| |
| 8 | ||
| 9 | local args = {...}
| |
| 10 | assert(args and #args>0, "msg_sender <receiver_id>") | |
| 11 | local receiver_id = tonumber(args[1]) | |
| 12 | ||
| 13 | - | a="turtle.turnLeft() turtle.forward() turtle.turnRight()", |
| 13 | + | |
| 14 | w="turtle.forward()", | |
| 15 | - | d="turtle.turnRight() turtle.forward() turtle.turnLeft()", |
| 15 | + | a="turtle.turnLeft(); turtle.forward(); turtle.turnRight()", |
| 16 | s="turtle.back()", | |
| 17 | d="turtle.turnRight(); turtle.forward(); turtle.turnLeft()", | |
| 18 | space="turtle.up()", | |
| 19 | leftShift="turtle.down()", | |
| 20 | left="turtle.turnRight()", | |
| 21 | right="turtle.turnLeft()", | |
| 22 | - | c="hevo()" -- call receiver's function |
| 22 | + | |
| 23 | x="shell.run('boring')", -- run receiver's other program
| |
| 24 | c="myRefuelAll()" -- call receiver's function | |
| 25 | } | |
| 26 | ||
| 27 | function printResults(sender_id, tbl_results) | |
| 28 | local exist_status, run_status, err_msg = unpack(tbl_results) | |
| 29 | if exist_status then -- found a function | |
| 30 | - | if keyname == "q" then break end |
| 30 | + | if run_status then -- success for running |
| 31 | print(" #",sender_id,": ok")
| |
| 32 | else -- failed with running or doesn't reply | |
| 33 | if err_msg then | |
| 34 | print(" #",sender_id,": (error) ",err_msg)
| |
| 35 | else | |
| 36 | print(" #",sender_id,": no reply")
| |
| 37 | end | |
| 38 | end | |
| 39 | else -- not found by wrong string | |
| 40 | print(" #",sender_id,": (NotFound) ")
| |
| 41 | end | |
| 42 | end | |
| 43 | ||
| 44 | function interactiveMode() | |
| 45 | print(" Start: interactive mode")
| |
| 46 | write(" > ")
| |
| 47 | local message = io.read() | |
| 48 | print(" Exit: interactive mode")
| |
| 49 | return message | |
| 50 | end | |
| 51 | ||
| 52 | print("Press 'q' to terminate")
| |
| 53 | while true do | |
| 54 | local event, scancode = os.pullEvent("key")
| |
| 55 | local keyname = keys.getName(scancode) | |
| 56 | local message = trans_tbl[keyname] | |
| 57 | ||
| 58 | if keyname == "enter" and not message then | |
| 59 | message = interactiveMode() | |
| 60 | end | |
| 61 | print(keyname," => ",message or "none") | |
| 62 | ||
| 63 | -- button for terminating | |
| 64 | if keyname == "q" or message =="q" then break end | |
| 65 | ||
| 66 | -- send an order message and recieve the results of running | |
| 67 | if message then | |
| 68 | rednet.send(receiver_id, message) | |
| 69 | local sender_id, results, distance = rednet.receive(3) | |
| 70 | printResults(sender_id, textutils.unserialize(results)) | |
| 71 | end | |
| 72 | end | |
| 73 | print("Terminated") |