0

I am trying to implement data sending in Python 3 on a raspberryPi (as a part of a bigger project) and cannot receive data when I connect the Rx and Tx pins. Regardless of using Python 2 or 3 (as far as I understand this API allows Python 3 programming) I either get Received: b'\n' response or such an exception:

Traceback (most recent call last):

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  

During handling of the above exception, another exception occurred:

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  

I can't write anything except from buffered reader though.

The code I've made is here:

#!/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()

I want to use ASCII encoding since it will be further connected to an microcontroller with code in C. I've also checked whether any data is written into the buffer (and it is), I've tried out laying the programme to sleep for a second after sending data, I've tried using port.read(port.inWaiting()) and port.read(in_waiting) (no attribute found in the latter case) and nothing seems to be helpful.

I've also tried this example; I am sure correct pins are connected and I have updated and upgraded my raspbian by using sudo apt-get update and sudo apt-get upgrade and when I typed sudo apt-get install python3-serial I was told that I already have newest version installed.

1
  • Your exception looks like a connection problem to me. You could try testing your serial port with putty (apt-get install putty) or something a like. Commented Nov 2, 2015 at 23:18

1 Answer 1

1

I am posting this answear to close the topic and to help anyone who might come across similar difficulties.

Since the processor is of different architecture trying to set up ports with setserial was pointles, however this was exactly the problem.

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

The answear I found here solved all the problems.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.