【发布时间】:2018-03-19 18:07:49
【问题描述】:
我有通过 USB FTDI 适配器连接的带有 Arduino 的 Openwrt 路由器。 串口是/dev/ttyUSB0
Arduino 代码打印一些数据:
通过命令print()延迟打印的第一部分数据,例如:
Serial.begin(9600);
Serial.print(var1);
delay(1000);
Serial.print(var2);
delay(1000);
Serial.print(var3);
delay(1000);
第二部分用println() 命令打印:
Serial.println("");
Serial.println(var4);
Serial.println(var5);
Serial.println(var6);
因此,当我在终端中打开串行端口时,我可以看到如下内容:
1
然后在 1 秒后超时,然后
1 2
下一次超时。然后
1 2 3
上次超时和
1 2 3
4
5
6
它可以在终端程序和 OpenWRT 的控制台中使用,例如 screen /dev/ttyUSB0
我需要制作一个 Lua 脚本来读取串行端口并以相同的方式打印数据。我有一个简单的脚本,但它没有按预期工作。
rserial=io.open("/dev/ttyUSB0","r")
while true do
chain = nil
while chain==nil do
chain=rserial:read();
print(chain)
end
end
它一次显示所有数据。 它没有延迟显示前 3 个变量。 似乎是因为 rserial:read() - 它会读取直到收到换行符。 它在类似的问题中指出: How to read from a serial port in lua
我尝试按照那里的建议运行此命令:
stty -F /dev/ttyUSB0 -icanon
但这无济于事,我不明白为什么。 是否可以通过 stty 解决此问题? 或者我肯定需要为 Lua 脚本使用另一个串行库? 所有这些库现在似乎都已经过时了,我不想使用过时的东西..
【问题讨论】:
标签: lua serial-port openwrt