Arduino的Pyserial问题 - 适用于Python shell但不适用于程序

dot*_*lol 9 python serial-port arduino

好吧,所以我很肯定我的Arduino电路是正确的和它的代码.我知道这是因为当我使用Arduino IDE中内置的串行监视器并发送'H'时,LED亮起,当我发送'L'时LED熄灭.

现在我做了一个Python程序

import serial
ser = serial.Serial("COM4",9600)
ser.write("H")
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,LED闪烁一秒然后再关闭.但是,当我在shell中单独执行这些行时,它就像它应该的那样工作.

有任何想法吗?

小智 8

当您打开串行端口时,这会导致Arduino重置.由于Arduino需要一些时间来启动,所有输入都会转到bitbucket(或者可能是引导程序,上帝知道它是什么).如果你插入一个睡眠,你等待Arduino出现,所以你的序列号.这就是它以交互方式工作的原因; 你正在等待软件出现所需的1.5秒.

我确认打开串口会重置我的Arduino Uno ; 我闪过一个程序,它会使程序中的LED闪烁setup()- 调用open("/dev/ttyACM0")足以触发复位.这是恕我直言,在序列支持中一个令人困惑和无证的皱纹.


小智 6

我有同样的问题,如果我从打开串行连接到写入它添加约2秒的延迟,它有效,1秒是不够的.