On Monday, February 18, 2013 7:29:09 PM UTC, Serhiy Storchaka wrote: > On 18.02.13 17:12, mikp...@gmail.com wrote: > > > on an embedded linux system (BeagleBoard) I am writing data coming from > > bluetooth dongle into a pipe. > > > The function is the following one: > > > > > > > > > def write_to_pipe(line): > > > > > > # next line ensures that bytes like '0x09' are not translated into > > '\t' for > > > #example, and they are sent as such > > > hexbytes = "\\x" + "\\x".join([hex(ord(c))[2:].zfill(2) for c in line]) > > > wrap = ["echo -en '", "' > /tmp/mypipe"] > > > msg = hexbytes.join(wrap) > > > print "DBG: sending: ", msg > > > > > > try: > > > os.popen( msg ) > > > except: > > > print "Error: write_to_pipe has failed!" > > > > > > > > > Now I typically receive 4 bytes from the bluetooth dongle and that is fine. > > > However when I receive many more than that it seems that the writing into > > the pipe is too slow. > > > > > > Is there any clever/obvious way to improve the code above? > > > (I am quite sure there is to be honest). > > > > def write_to_pipe(line): > > hexbytes = ''.join('\\x%02x' % ord(c) for c in line) > > with open('/tmp/mypipe', 'w') as f: > > f.write(hexbytes)
I'll take your hexbytes = '' line (which is surely more efficient than mine). However whit this approach open + write it seems the pipe doesn't get the data... I am not sure what is going on. At this point I suspect it could be a problem on the pipe itself (which I inherited). It is just weird that the pipe accept this correctly: wrap = ["echo -en '", "' > /tmp/midi"] msg = hexbytes.join(wrap) os.popen( msg ) but seems to be careless of approach open + write. I need to investigate there. Thanks a lot, to you and to everyone else. Mik -- http://mail.python.org/mailman/listinfo/python-list