我正在使用Python程序将一个树莓Pi的串行数据发送到一个Arduino。我正在运行Python2.7.3。程序是:
import serial
ser = serial.Serial('/dev/ttyACM0', 115200)
ser.write(b'\x4c\xff\x46')
问题是,如果这三行代码在程序中运行,它们似乎不会发送任何内容。但如果我在Python shell中逐行运行它们,它们就可以正常工作。
另外,如果我打开了Arduino串行监视器,程序也可以正常工作,而不必在shell中逐个运行这些行。
编辑以添加:
看来派往阿杜伊诺号有点耽搁。所以当我在解释模式下运行代码时,它是有效的,但如果作为一个程序,它就不起作用了。我想这是因为我在Windows机器上尝试了相同的程序。
import serial
ser = serial.Serial('COM8', 115200)
ser.write(b'\x4c\x20\x46')
如果我在解释模式下运行程序,或者甚至在ser.write命令上有断点的调试模式下运行程序,它就会工作。但如果作为程序运行就不行了。
编辑以添加更多:
原来,Arduino在串行通信上有一个自动复位功能,必须禁用:
http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection#.UwP_wfldV8E
http://forum.arduino.cc/index.php/topic,28723.0.html
我在复位引脚和接地之间使用了一个220超滤电容器。那很有效。
很难被那样的虫子咬!它仍然很聪明。
试试这个。如果您不能在idle或etc下运行它,请输入python name.py来尝试terminal。我还建议您用putty检查来自Rpi或从Rpi写入Rpi的数据。
相关问题 更多 >
编程相关推荐