2015-11-02 261 views
0

我試圖在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 updatesudo apt-get upgrade更新和升級了我的raspbian,當我輸入sudo apt-get install python3-serial時,我被告知已安裝最新版本。

+0

您的異常看起來像是一個連接問題。你可以用putty(''apt-get install putty'')或類似的東西來測試你的串口。 – Dietrich

回答

1

我發佈此answear關閉該主題,並幫助任何人可能遇到類似的困難。

由於處理器是不同的架構,試圖用setserial設置端口是pointles,但是這正是問題所在。

[email protected] ~ $ sudo setserial -g /dev/ttyAMA0 /dev/ttyAMA0, UART: undefined, Port: 0x0000, IRQ: 83

我發現here的answear解決所有的問題。