覆盆子pi上的python中的UART不接收数据

时间:2015-11-02 22:02:19

标签: python raspberry-pi pyserial uart

我正在尝试在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 updatesudo apt-get upgrade更新并升级了我的raspbian,当我输入sudo apt-get install python3-serial时,我被告知我已经安装了最新版本。

1 个答案:

答案 0 :(得分:1)

我发布这个answear以关闭主题并帮助任何可能遇到类似困难的人。

由于处理器具有不同的架构,尝试使用setserial设置端口是尖端的,但这确实是问题所在。

pi@raspberrypi ~ $ sudo setserial -g /dev/ttyAMA0 /dev/ttyAMA0, UART: undefined, Port: 0x0000, IRQ: 83

我发现的here解决了所有问题。