Serial port NodeMCU UART,一段时间后不再接收数据。如何调试?

Serial port NodeMCU UART,一段时间后不再接收数据。如何调试?,serial-port,uart,nodemcu,Serial Port,Uart,Nodemcu,我已经将一个简单的传感器连接到我的NodeMCU,它每半秒发送一次数据,以回车结束。一段时间后(30分钟-5小时),不再传输数据。它不再工作,但不会崩溃,因为其余的代码仍在工作 我曾尝试重新启动设备或重置UART,但在一定时间后没有收到更多数据,但这不起作用。只有当我关闭/打开电源时,它才能重新正常工作 因为我使用的是uart.alt,所以调试起来非常困难,而且我没有任何方法来调试/修复我的问题。我还测试了传感器与覆盆子Pi,在这里它工作完美,不停止传输 读取UART的主要代码如下: local

我已经将一个简单的传感器连接到我的NodeMCU,它每半秒发送一次数据,以回车结束。一段时间后(30分钟-5小时),不再传输数据。它不再工作,但不会崩溃,因为其余的代码仍在工作

我曾尝试重新启动设备或重置UART,但在一定时间后没有收到更多数据,但这不起作用。只有当我关闭/打开电源时,它才能重新正常工作

因为我使用的是uart.alt,所以调试起来非常困难,而且我没有任何方法来调试/修复我的问题。我还测试了传感器与覆盆子Pi,在这里它工作完美,不停止传输

读取UART的主要代码如下:

local capture = function(data)
  local number = tonumber(data)
  if number ~= nil and number ~= 0 then
    pm25 = number
  end
end

local start = function()
  tmr.alarm(4, 10000, tmr.ALARM_SINGLE, function()
    print("start uart")
    uart.alt(1)
    uart.setup(0, 9600, 8, uart.PARITY_NONE, uart.STOPBITS_1, 0)
    uart.on("data", "\n", function(data)
      capture(data)
    end, 0)
  end)
end
有人知道如何解决或调试这个问题吗


问候。

您是否定期调用uart.setup()?如果你这么做了,如果你一开始只叫它一次呢?还有,uart.on()做什么?除了与UART交换数据外,它是否会以某种方式更改UART配置/状态?此外,当这个东西工作时,还有其他硬件或中断操作吗?它看起来像是一些比赛条件,一些东西被错过或卡住了。不,我只调用uart设置一次。我只是试着暂时再叫它一次,试着让它恢复“生活”。uart.on仅捕获读取的数据。“当这个东西工作时,还有其他硬件或中断操作吗?”你这么说是什么意思?到目前为止,你已经提到UART和传感器是一些操作(配置、读取、写入)的设备。还有吗?您是否可以尝试查看不访问这些其他设备是否修复了UART操作?如果是这样的话,你应该知道应该在哪里查找问题。嘿,Alexey,我已经隔离了固件,只读取传感器,这似乎是可行的。让我试着找出,一段时间后,哪一部分是破坏读数的原因。谢谢你!