0

私は最近、飛行機が互いに着陸しないようにする空港コンピューターを作成するプロジェクトに取り組んでいます。何らかの理由で、プログラムを実行するたびにエラー メッセージが表示されます。エラーメッセージも取得し、すべての着信メッセージをモニターに出力する別のプログラムがあります。これが私のコードです:

プログラム 1 のエラー メッセージ (このメッセージは、次のメッセージを受信した後にのみ発生します。

[startup:9: nil と number の __le を比較しようとしました]

プログラム 2 のエラー メッセージ:

[monitor:2:nil を呼び出そうとしています]

最初のプログラム:

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 ドキュメントを確認すると、3 番目の戻り値がprotocol「文字列」であると主張されているように見えます。
  • monitor1行目の呼び出しが何らかの理由で設定されていないため、プログラム2は失敗しています。
于 2015-08-02T17:40:16.953 に答える