On 7 feb, 06:07, Roy Smith <r...@panix.com> wrote: > In article > <e84f3af4-da6d-4ae9-8974-54354ec16...@b18g2000vbz.googlegroups.com>, > Jean Dupont <jeandupont...@gmail.com> wrote: > > > I'd like to read in a stream of data which looks like this: > > the device sends out a byte-string of 11 bytes roughly every second: > > > B0B0B0B0B03131B0B50D8A > > B0B0B0B0B03131B0B50D8A > > B0B0B031B63131B0310D8A > > B0B034B3323432B3310D8A > > B0B03237B53432B3310D8A > > . > > . > > . > > > As you see every string is ended by 0D8A > > How can this be accomplished in Python? > > The basic idea would be to open your datastream in binary mode > (http://docs.python.org/library/functions.html#open), then use read(11) > to read exactly 11 bytes into a string. > > Depending on what the 11 bytes are, you might want to use the struct > module (http://docs.python.org/library/struct.html) to extract the data > in a more useful form.
Thank you very much for taking the time to reply. I'm really completely new to python and all help is really very welcome. In the documentation I read that to open the datastream binary I need to add the option b this is how far I got until now: #!/usr/bin/python import serial, time, os voltport='/dev/ttyUSB2' print "Enter a filename:", filename = raw_input() voltdata = open(filename,'wb') ser2 = serial.Serial(voltport, 2400, 8, serial.PARITY_NONE, 1, rtscts=0, dsrdtr=0, timeout=15) ser2.setDTR(level=True) print "State of DSR-line: ", ser2.getDSR() #the following line was added because I want to be sure that all parameters are set the same as under a working application for the same device os.system("stty -F31:0:bbb: 0:0:0:0:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0") print "Opening " + ser2.portstr s =ser2.read(11) #read up to 11bytes voltdata.write(s) ser2.close() voltdata.close() However the above code doesn't fill my file with data, I guess the data should also be flushed somewhere in the code but I'm unsure where to do that. A futher consideration: because the device sends its data continuously I guess I'd have to use the byte sequence 0D8A of the previously sent data string as an indicator that the next 9 bytes are those I really want and put those in a string which than coudl be written to the file all help welcome Jean -- http://mail.python.org/mailman/listinfo/python-list