ESP32 NodeMCU uart输入匹配字符串问题

我在ESP32上使用nodemcu固件创建了一个小项目,通过uart2与sim808模块通信。我的问题是,从uart返回的响应在lua和nodemcu中很难解释。 这里是我的代码片段:

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) -- 缩短,我知道整行都会出现
    elseif (string.match(data, 'NO CARRIER')) then
        print("Ring canceled")
    else
        print("Dont understand")
    end
end, 0)

在上述情况下,RING和NO CARRIER输入正确匹配并给出适当的信息。 我还有许多其他类似的搜索工作。但是当我查找电话号码(+CLIP:...)时,代码忽略了此输入,但我在串行控制台输出中看到了它:

Checking UART:

Dont understand
Checking UART:
+CLIP: "+xxxxxxxxxxx",145,"",0,"",0

Checking UART:

Dont understand

我还看到这个特定的答案后面有一个新行字符,然后循环再次开始没有字符,也许这就是代码找不到它的原因,但是内置函数uart.on应该检查每行(\r)。 当我获得一些蓝牙命令时也会出现同样的问题,也不能将其放入变量中。

点赞