我在用nodemcu固件在ESP32上创建了一个小项目,该固件通过uart2与sim808模块通信。我的问题是,在lua和nodemcu中难以多次解释来自uart的响应。 这是我的代码的简短示例:
Son
在上述情况下-RING和NO CARRIER输入正确匹配,并给出了正确的信息。 我也有许多其他这样的搜索有效。但是当我查找电话号码(+ CLIP:...)时,该代码将忽略此输入,但是我在串行控制台输出上看到了它:
uart.on(2, "data", "\r", function(data)
print("Checking UART: "..data)
if (string.match(data, "RING")) then
print("Someone rings")
elseif (string.match(data, "CLIP:")) then
print("Phone number: "..data) -- shortened, I know that the whole line will appear
elseif (string.match(data, 'NO CARRIER')) then
print("Ring canceled")
else
print("Dont understand")
end
end, 0)
我还看到这个特定的答案后面有换行符,并且循环再次没有字符,这也许就是为什么代码找不到它的原因,但是内置函数uart.on应该检查每行(\ r )。 当我收到一些蓝牙命令时,同样的问题,也无法将其放入变量中。