View difference between Paste ID: yUgqzL98 and n1LPLrij
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")