我正在Lua中编写一个代码来读取串口,但是当我读到的时候,我收到了一个回复代码:
print("Dragino Uart Test started\n")
while 1 do
serialin=io.open("/dev/ttyS0","r")
print(serialin:read()) --print the data
serialin:close()
end
当我打开minicom向他发送一些数据时,我启用本地回声而不是输入“text”,我看到了:
tteexxtt
然后我需要按回车键以在我的lua脚本中查看我的消息。
我在Dragino中使用OpenWRT。
看起来它就像是一个提示命令,你输入你看到的所有东西,你需要按回车发送命令。
还有其他方法可以读取和写入串口吗?
是的,有人能帮帮我吗?非常感谢你!答案 0 :(得分:1)
没有参数的read
方法读取一个完整的行。这就是你需要在文本末尾按Enter键的原因。尝试使用:read(1)
一次读取一个字节,或者使用:read("*a")
读取所有字节。
答案 1 :(得分:0)
我不知道这对某人来说是否仍然是一个问题,但这可能对一些人有所帮助。像lhf所说的那样:read(1)是这样做的一种方式。我遇到了一些问题:虽然读了(" * a")。在我看来,最简单的方法是逐个追加答案:
rserial=io.open("/dev/ttyS0",'r')
lines = ""
repeat
local line=rserial:read(1)
if string.sub(line, 0, 3) == "OED" then --OED is here the stream ending. This can vary
EOD = true
rserial:close()
elseif line then
lines = lines .. line
end
until EOD == true
print (lines)