我試圖在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