2015-11-02 327 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解决所有的问题。