我使用Python程序将Raspberry Pi的串行数据发送到Arduino。我正在运行Python 2.7.3。该计划是:发送Raspberry Pi的串行通信
import serial
ser = serial.Serial('/dev/ttyACM0', 115200)
ser.write(b'\x4c\xff\x46')
的问题是,似乎没有什么,如果他们在程序运行被这些三线发送。但是如果我在Python shell中逐行运行它们,它们工作正常。另外,如果我打开了Arduino串行监视器,程序也可以正常工作,而不需要在shell中逐行运行。
编辑补充:
似乎存在发送到Arduino一些延迟。所以当我在解释模式下运行代码时,它可以工作,但是如果作为一个程序,它不会。我认为这是因为我在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
我用了RESET引脚和地之间有220 uF电容。这样可行。
难以忍受这样的错误!它仍然智慧。
您是否以具有相同权限的相同用户身份运行? – BillyBigPotatoes
是的,即使在同一个shell中,我仍以同一用户身份运行。如果我使用线路解释器,它可以工作。在同一个shell中,如果我将它作为程序运行,它不起作用,除非我打开Arduino串行监视器。 – Daanii
所以你不得不添加一个电容器成功地将数据从pi发送到arduino? – marciokoko