首页 文章

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

提问于
浏览
9

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

现在我做了一个Python程序

import serial
ser = serial.Serial("COM4",9600)
ser.write("H")

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

有任何想法吗?

3 回答

  • 1

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

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

  • 6

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

  • 8

    为了使它更清楚,我将修改代码,以便每个人都可以看到需要添加的内容!

    import serial
    import time
    ser = serial.Serial("COM4",9600)
    time.sleep(3)
    ser.write("H")
    

    添加睡眠状态有助于让序列打开而不会出现任何问题!

相关问题