Parsing printer ASCII data from serial on Python: need to separate prints
Hello everybody...
I am building some kind of small virtual printer with python.
I read all data coming from a serial port in ASCII format and I can save into a file the prints coming.
I'd need to find a method to correctly separate one print from the other...
Any ideas?
Here's the code so far:
#!/usr/bin/python# get lines of text from serial port, save them to a filefrom __future__ import print_functionimport serial, ioaddr = '/dev/ttyUSB0' # serial port to read data frombaud = 115200 # baud rate for serial portfname = 'serial.dat' # log file to save data infmode = 'a' # log file mode = appendwith serial.Serial(addr,baud) as pt, open(fname,fmode) as outf: spb = io.TextIOWrapper(io.BufferedRWPair(pt,pt,1), encoding='ascii', errors='ignore', newline='\r',line_buffering=True) spb.readline() # throw away first line; likely to start mid-sentence (incomplete) while (1): x = spb.readline() # read one line of text from serial port print (x,end='') # echo line of text on-screen outf.write(x) # write line of text to file outf.flush() # make sure it actually gets written out
But this is row-related or whole transmission-related?
I've read more from your suggestion and here I find a list of the characters I should look for:
https://en.wikipedia.org/wiki/ASCII#ASCII_control_characters
The problem is that I don't get an Escape Code for (example) Start of Text: how can I detect it in my data?