我试图在RaspberryPi上实现数据发送(作为更大项目的一部分),并且当我连接Rx和Tx引脚时无法接收数据。无论使用Python 2或3(据我了解this API允许Python 3编程)的我要么得到Received: b'\n'
响应或这样的例外:python在树莓派上的UART没有收到数据
回溯(最近通话最后一个):
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 471, in write n = os.write(self.fd, d) OSError: [Errno 5] Input/output error
在处理上述异常,另一个异常:
Traceback (most recent call last): File "./uart.py", line 12, in <module> port.write(bytearray(input_data, 'utf-8')) File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 485, in write raise SerialException('write failed: %s' % (v,)) serial.serialutil.SerialException: write failed: [Errno 5] Input/output error
我不能写,除了从任何缓冲读者虽然。
我所做的代码是在这里:
#!/usr/bin/env python3
import serial
port = serial.Serial("/dev/ttyAMA0", baudrate=9600)
while True:
input_data = input("Say sth: ")
if input_data != 'exit':
port.write(bytearray(input_data, 'utf-8'))
print('Sent: {0}'.format(bytearray(input_data, 'ASCII')))
output_data = port.readline()
print('Received: {0}\n'.format(str(output_data)))
else:
break
port.close()
我想用ASCII编码,因为它会进一步连接到C.与代码的微控制器我还检查所有数据是否写入进入缓冲区(现在是这样),我试着在发送数据后让程序休眠一秒钟,我尝试使用port.read(port.inWaiting())
和port.read(in_waiting)
(在后一种情况下没有找到属性),没有任何东西似乎有帮助。
我也试过this的例子;我确信连接了正确的引脚,并且通过使用sudo apt-get update
和sudo apt-get upgrade
更新和升级了我的raspbian,当我输入sudo apt-get install python3-serial
时,我被告知已安装最新版本。
您的异常看起来像是一个连接问题。你可以用putty(''apt-get install putty'')或类似的东西来测试你的串口。 – Dietrich