Python Forum
UART Serial Read & Write to MP3 Player Doesn't Work
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
UART Serial Read & Write to MP3 Player Doesn't Work
#12
I'm running this code on a Raspberry Pi 4. If the program fails to close the port when it ends properly, the next time it runs it think there are more devices accessing the port.

Also, the documentation says to expect a status of AA 01 01 00 AC when MP3 has finished playing but the return appears to be 00 00 00, but the program is coded to accept the 00 00 00 to end.

I added print(" port ", ser.isOpen) in the read routine but how would I check to see if it thinks more devices are attempting to use the port?

What I saw after running this the second time is important! Shutting the RPi down and starting it fresh, I ran the program the first time with the print("port Open? ", isOpen) and the program ran and ended well printing the 00 00 00 return after the MP3 finished playing only. Makes me believe that the chip on the MP3 board can process only one thing at a time.

But the next observance is the real problem. When I ran the program again with no changes, I got the errors indicating that the device disconnected or multiple access on port. See output below.
Something needs to be closed or reset but at the end of the program is the ser.close() statement.

Output:
pi@raspberrypi:~ $ sudo python3 SerialTest3.py Command = [170, 7, 2, 0, 4, 183] Command = [170, 1, 0, 171] port Open? <bound method SerialBase.isOpen of Serial<id=0xb66e7bb0, open=True>(port='/dev/ttyS0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)> Status = b'\xaa' Command = [170, 1, 0, 171] port Open? <bound method SerialBase.isOpen of Serial<id=0xb66e7bb0, open=True>(port='/dev/ttyS0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)> Status = b'' Command = [170, 1, 0, 171] port Open? <bound method SerialBase.isOpen of Serial<id=0xb66e7bb0, open=True>(port='/dev/ttyS0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)> Status = b'' Command = [170, 1, 0, 171] port Open? <bound method SerialBase.isOpen of Serial<id=0xb66e7bb0, open=True>(port='/dev/ttyS0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)> Status = b'' Command = [170, 1, 0, 171] port Open? <bound method SerialBase.isOpen of Serial<id=0xb66e7bb0, open=True>(port='/dev/ttyS0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)> Status = b'' Command = [170, 1, 0, 171] port Open? <bound method SerialBase.isOpen of Serial<id=0xb66e7bb0, open=True>(port='/dev/ttyS0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)> Status = b'' Command = [170, 1, 0, 171] port Open? <bound method SerialBase.isOpen of Serial<id=0xb66e7bb0, open=True>(port='/dev/ttyS0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)> Status = b'\x00\x00\x00' pi@raspberrypi:~ $ sudo python3 SerialTest3.py Command = [170, 7, 2, 0, 4, 183] Command = [170, 1, 0, 171] port Open? <bound method SerialBase.isOpen of Serial<id=0xb664ebb0, open=True>(port='/dev/ttyS0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)> Traceback (most recent call last): File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 501, in read 'device reports readiness to read but returned no data ' serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "SerialTest3.py", line 37, in <module> playing = read_status(ser) File "SerialTest3.py", line 19, in read_status return port.read(3) File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 509, in read raise SerialException('read failed: {}'.format(e)) serial.serialutil.SerialException: read failed: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
Reply


Messages In This Thread
RE: UART Serial Read & Write to MP3 Player Doesn't Work - by bill_z - Jul-13-2021, 12:48 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Delete file with read-only permission, but write permission to parent folder cubei 6 22,371 Jun-01-2024, 07:22 AM
Last Post: Eleanorreo
  Extending list doesn't work as expected mmhmjanssen 2 350 May-09-2024, 05:39 PM
Last Post: Pedroski55
  UART write binary code trix 3 477 Apr-28-2024, 04:57 PM
Last Post: deanhystad
  Last record in file doesn't write to newline gonksoup 3 592 Jan-22-2024, 12:56 PM
Last Post: deanhystad
  UART & I2C slow down a loop trix 4 771 Dec-28-2023, 05:14 PM
Last Post: trix
  python Read each xlsx file and write it into csv with pipe delimiter mg24 4 1,815 Nov-09-2023, 10:56 AM
Last Post: mg24
Question Special Characters read-write Prisonfeed 1 721 Sep-17-2023, 08:26 PM
Last Post: Gribouillis
  pyserial/serial "has no attribute 'Serial' " gowb0w 9 5,695 Aug-24-2023, 07:56 AM
Last Post: gowb0w
  Why doesn't calling a parent constructor work with arbitrary keyword arguments? PurposefulCoder 4 1,078 Jun-24-2023, 02:14 PM
Last Post: deanhystad
  How do I read and write a binary file in Python? blackears 6 8,138 Jun-06-2023, 06:37 PM
Last Post: rajeshgk

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020