Python Forum
How to understand the received bytes of ser.read?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to understand the received bytes of ser.read?
#1
Question 
Hello,

I'm using a function ser.read (from PySerial) to read a sequence of 2000 bytes from a microcontroller. Two received bytes in a sequence are actually two bytes of uint16 data which are combined in python script (so in Python these sequence of 2000 bytes are combined into 1000 uint16_t data), but that's not important here.

I have a problem with understanding the received bytes of ser.read form the figure bellow (print(s))? Please click the the gray rectangle bellow to see the figure.

   


After printing out data received with ser.read with print(s) I can see strange printout. I would expect that each byte is in a form like \x04, but at the beginning I can see the form like \x04J, the listing also start with G\04F\...? So at the beginning of the figure I can see that there are three numbers or a strange (not hex) characters instead of two hex numbers (equals one byte)?

The code is here:
import serial
import numpy as np
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import Slider, Button, RadioButtons
from scipy.signal import savgol_filter

import matplotlib.pyplot as plt
from pylab import *
import numpy as np

ser = serial.Serial('COM13', 921600, timeout=None,parity=serial.PARITY_NONE)
fig = plt.figure()


while True:

    ser.flush()

    x = np.linspace(0, 1000, 1000)

    s = ser.read(2000)
    y1 = np.frombuffer(s, np.uint16)  #y ... np array...
    
    plt.plot(x,y1,'-*',label='graf 1')  

    plt.xlabel('TIME')
    plt.ylabel('ADC current')
    plt.title('Solenoid I/t')

    legend()

    plt.show()

    print(s)

ser.close()             # close port
I will be grateful for any help
Ernest
Larz60+ write Mar-24-2022, 11:16 AM:
Fixed BBCode tags.
Reply
#2
can you find any help here: https://github.com/pyserial/pyserial/tre...r/examples ?
pf2022 likes this post
Reply
#3
This is because Python shows bytes corresponding to printable ascii characters as characters, as well as the escape sequences \t \n \r
>>> bytes(range(256))
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
>>> for i in range(16):
...     print(bytes(range(16 * i, 16 * i + 16)))
... 
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
b'\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f'
b' !"#$%&\'()*+,-./'
b'0123456789:;<=>?'
b'@ABCDEFGHIJKLMNO'
b'PQRSTUVWXYZ[\\]^_'
b'`abcdefghijklmno'
b'pqrstuvwxyz{|}~\x7f'
b'\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f'
b'\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f'
b'\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf'
b'\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf'
b'\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf'
b'\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf'
b'\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef'
b'\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
>>> 
so G is \x47 and F is \x46 for example.
pf2022 likes this post
Reply
#4
Thank you very much!
Ernest
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Attribute Error received not understood (Please Help) crocolicious 5 2,701 Jun-19-2021, 08:45 PM
Last Post: crocolicious
  I dont understand bytes in python. blackknite 3 4,025 Oct-02-2019, 07:39 PM
Last Post: Gribouillis
  Invalid JSON payload received. Unknown name “”: Root element must be a message." hellraiser 4 13,272 Aug-18-2019, 03:41 PM
Last Post: hellraiser
  How to continue in loop until correct input received sunnyarora 10 9,951 May-04-2019, 02:37 PM
Last Post: Yoriz
  replace bytes with other byte or bytes BigOldArt 1 10,651 Feb-02-2019, 11:00 PM
Last Post: snippsat
  assign the variable to every value received serial from Arduino barry76 4 3,335 Feb-01-2019, 10:19 AM
Last Post: barry76
  Can't read url when specifying more than a specific number of bytes deivid 3 3,086 Aug-13-2018, 02:24 PM
Last Post: deivid
  how to read a text file as bytes Skaperen 1 8,199 May-29-2018, 08:12 AM
Last Post: killerrex

Forum Jump:

User Panel Messages

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