我正在尝试在raspberryPi上实现Python 3中的数据发送(作为更大项目的一部分),并且在连接Rx和Tx引脚时无法接收数据。无论使用Python 2还是3(据我所知this API允许Python 3编程)我都会得到Received: b'\n'
响应或者这样的异常:
追踪(最近一次呼叫最后一次):
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
时,我被告知我已经安装了最新版本。
答案 0 :(得分:1)
我发布这个answear以关闭主题并帮助任何可能遇到类似困难的人。
由于处理器具有不同的架构,尝试使用setserial设置端口是尖端的,但这确实是问题所在。
pi@raspberrypi ~ $ sudo setserial -g /dev/ttyAMA0
/dev/ttyAMA0, UART: undefined, Port: 0x0000, IRQ: 83
我发现的here解决了所有问题。