Python 从Raspberry pi发送串行通信

Python 从Raspberry pi发送串行通信,python,serial-port,arduino,raspberry-pi,Python,Serial Port,Arduino,Raspberry Pi,我使用Python程序从树莓Pi向Arduino发送串行数据。我正在运行Python 2.7.3。该计划是: import serial ser = serial.Serial('/dev/ttyACM0', 115200) ser.write(b'\x4c\xff\x46') 问题是,如果这三行在程序中运行,它们似乎不会发送任何内容。但是如果我在pythonshell中逐行运行它们,它们工作得很好 另外,如果我打开了Arduino串行监视器,程序也可以正常工作,而不用在shell中逐个运

我使用Python程序从树莓Pi向Arduino发送串行数据。我正在运行Python 2.7.3。该计划是:

import serial

ser = serial.Serial('/dev/ttyACM0', 115200)

ser.write(b'\x4c\xff\x46')
问题是,如果这三行在程序中运行,它们似乎不会发送任何内容。但是如果我在pythonshell中逐行运行它们,它们工作得很好

另外,如果我打开了Arduino串行监视器,程序也可以正常工作,而不用在shell中逐个运行这些行

编辑以添加:

发送到Arduino号的时间似乎有些延迟。因此,当我以解释模式运行代码时,它可以工作,但如果作为一个程序,它就不能工作。我想这是因为我在Windows机器上尝试了相同的程序

import serial

ser = serial.Serial('COM8', 115200)

ser.write(b'\x4c\x20\x46')
如果我在解释模式下运行程序,或者甚至在调试模式下使用ser.write命令上的断点运行程序,它就可以工作。但如果作为程序运行,则不会

编辑以添加更多内容:

结果表明,Arduino在串行通信上具有自动复位功能,必须禁用该功能:

我在复位引脚和接地之间使用了220 uF电容器。这很有效


很难被那样的虫子咬到!它仍然很痛

试试这个。如果不能在空闲或etc下运行,请键入python name.py尝试终端。我还建议您使用putty检查来自/写入Rpi的数据,以确保

import serial
import time


def readlineCR(port):
    rv = ""
    while True:
    ch = port.read()
    rv += ch
    if ch == '\r' or ch == '':
         return rv


port = serial.Serial("/dev/ttyAMA0", baudrate = 7200, timeout = 2)

while True: 
     rcv = readlineCR(port)
     port.write("I typed: " + repr(rcv))
     print(rcv)

您是以具有相同权限的相同用户身份运行的吗?是的,我是以相同用户身份运行的,即使是在同一个shell中。如果我使用行解释器,它可以工作。在同一个外壳中,如果我将其作为程序运行,它将无法工作,除非我打开Arduino串行监视器。因此,您必须添加一个电容器才能成功地将数据从pi发送到Arduino?