如何关闭uart的lua解释器? (Nodemcu)

Posted

技术标签:

【中文标题】如何关闭uart的lua解释器? (Nodemcu)【英文标题】:How to turn off lua interpeter for uart? (Nodemcu) 【发布时间】:2017-04-05 00:41:21 【问题描述】:

我需要与 uart 上的特殊设备通信。设备每 500 毫秒查询一次,其响应存储在局部变量中。

这是一个最小的工作示例:

my_data = "no data yet"

function devReq()
    uart.write(0, "value?\n\r") -- request next value from device
end

function devStart()
    uart.alt(0) 
    uart.setup(0, 2400, 7, uart.PARITY_NONE, uart.STOPBITS_2, 0)
    uart.on("data", "\r", 
        function(data)
            my_data=data                -- store value
            tmr.alarm(1, 500, tmr.ALARM_SINGLE, devReq, 0) -- request next value
        end
    )
    devReq() -- request first value 
end

此代码有效。我可以用腻子连接做UART端口。我的问题是设备发回的答案也是被lua解释的:

> value?

423
stdin:1: unexpected symbol near '423'

> value?

2345
stdin:1: unexpected symbol near '2345'

> value?

所以除了将值存储在 my_data 中之外,数据还由 lua 解释。如何关闭它?

【问题讨论】:

【参考方案1】:

见uart.on()。这是第四个参数。你已经省略了这个,所以它默认为 1 - 将输入传递给解释器。

【讨论】:

以上是关于如何关闭uart的lua解释器? (Nodemcu)的主要内容,如果未能解决你的问题,请参考以下文章

nodemcu恢复出厂设置

如何在 Lua 中通过 ESP32 和 NodeMCU 使用蓝牙

无法读取 NodeMCU 上的串行/UART 引脚

如何让KY-022红外接收器模块在Lua的NodeMCU上工作?

ESP8266 NodeMCU Lua 如何清除堆?

如何从 Lua NodeMCU 中的日期和时间字符串创建日期对象?