如何关闭Nodemcu上的lua interpeter (Lua解释器)?

我需要通过串口与一个特殊设备进行通信。该设备每500毫秒查询一次,并将其响应存储在一个本地变量中。

下面是一个最小工作示例:

my_data = "尚无数据"

function devReq()
    uart.write(0, "value?\n\r") -- 请求下一个值
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                -- 存储值
            tmr.alarm(1, 500, tmr.ALARM_SINGLE, devReq, 0) -- 请求下一个值
        end
    )
    devReq() -- 请求第一个值
end

这段代码可以正常工作。我可以使用putty连接至串口端口。我的问题是,设备发送回的答案也会被lua解释:

> value?

423
stdin:1: '423'附近有意外符号

> value?

2345
stdin:1: '2345'附近有意外符号

> value?

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

点赞
用户1142045
用户1142045

请查看 uart.on()。这是第四个参数。您已省略它,因此默认为 1 -- 将输入传递给解释器。

2016-11-21 20:54:29