0

我最近一直在做一个项目,要制造一台可以防止飞机相互降落的机场计算机。出于某种原因,每次我运行我的程序时,它都会给我一条错误消息。我有另一个程序也收到错误消息,它将所有传入的消息打印到监视器上。这是我的代码:

程序 1 的错误消息(此消息仅在收到消息后出现:

[startup:9: 尝试在 nil 和 number 上比较 __le]

程序 2 的错误消息:

[监视器:2:尝试调用零]

第一个程序:

shell.openTab("monitor")
local Landing_open = true
rednet.open("top")

while true do

  local id, message, distance = rednet.receive()

  if message == "Requesting Landing" and distance <= 500 and Landing_open == true then   
    rednet.send(id, "Landing is granted. Please respond with Landing finished when you exit the runway.")
    Landing_open = false

  elseif message == "Requesting Landing" and distance>500 then
     rednet.send(id, "Landing is not granted. Please try again when you are closer to the airport,")

  elseif message == "Requesting Landing" and Landing_open == false then
       rednet.send(id, "Landing is not granted. Please try again later.")

  elseif message == "Landing Finished" then
    rednet.send(id, "Roger that")
    Landing_open = true    

  elseif message == "Airports" then
    rednet.send(id, "Melee Airport")
  end
end    

下一个程序:

local monitor = peripheral.wrap("left")
monitor.setCursorPos(1,1)
while true do
  local x, y = monitor.getCursorPos()
  if y > 10 then
  monitor.clear()
  monitor.setCursorPos(1,1)
  end
  id, message,distance = rednet.receive()
  monitor.write(id)
  monitor.write(message)
  monitor.write(distance)
end
4

1 回答 1

0
  • 程序 1 ( startup) 因“LE”失败而抱怨,该失败转换为“小于或等于”,仅在distance <= 500. 所以distance由于某种原因没有被设置为数字。在检查rednet.receive 文档时,它看起来像是第三个返回值protocol,它声称是一个“字符串”。
  • 程序 2 失败,因为第 1 行中的调用由于某种原因未设置monitor
于 2015-08-02T17:40:16.953 回答