手动在控制台中键入命令可行,但在程序中无效

我遇到一个问题,在命令行版本的lua中,我可以执行每个函数,但是当我运行程序时,它不会抛出任何错误,而是直接结束。我不知道如何进行诊断,但我尝试过几次让不同的事情出错,它会出错并打印错误。

power = peripheral.wrap("bottom")
mon = peripheral.wrap("top")

x,y = mon.getSize()

clearTerm = function()
  term.clear()
  term.setCursorPos(1,1)
end

clearBoth = function()
  clearMon()
  clearTerm()
end

intLen = function(bar)
  tab = tostring(bar)
  tab = string.len(tab)
  return tab
end

checkPower = function()
  total = power.getMaxEnergyStored()
  local til = intLen(total)
  local yy = math.floor(y/2)
  local tol = math.floor(x-til)
  mon.setCursorPos(yy+0,tol/2)
  for z=1,til do mon.write("-") end
  mon.setCursorPos(yy-1,tol/2)
  mon.write(total)
  while true do
    current = power.getEnergyStored()
    local cil = intLen(current)
    local col = math.floor(x-cil)
    mon.setCursorPos(yy+1,col/2)
    mon.write(current)
    sleep(1)
  end
end

我将在 这里 留下完整程序的 pastebin 链接。

点赞
用户4984564
用户4984564

首先,您可以向您的代码添加一些输出。只需添加类似于

print1”-调试输出
...
print2”-调试输出
...
-别忘了在调试完成后将它们删除!

到您的代码中并查看运行程序时看到了多少个输出,这样您就可以缩小程序崩溃的具体时间。

另外,我找不到函数clearMon()的定义在哪里,这可能是问题的来源,还是在其他地方定义的?

2016-03-14 12:51:56