Binary data exchange
friends I have a pair of simple python programs as follows: #!/usr/bin/python # broadcast.py import socket from ctypes import * import random class PurgeData(Structure): _fields_ = [(press,c_int), (ticks,c_int), (volume,c_float)] myPort = 10756 sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) addr = ('localhost',myPort) #sock.sendto(data,addr) presdata = PurgeData() presdata.press = 0 presdata.ticks = 100 for msg in range(1,20): presdata.press = presdata.press+1 presdata.ticks = presdata.ticks+1 presdata.volume = random.random() sock.sendto(presdata,addr) # #!/usr/bin/python # Receiver import socket from ctypes import * class PurgeData(Structure): _fields_ = [(press,c_int), (ticks,c_int), (volume,c_float)] myPort = 10756 sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) addr = ('localhost',myPort) sock.bind(addr) presdata=PurgeData() while True: data,addr = sock.recvfrom(1024) memmove(addressof(presdata),data.strip(),len(data.strip())) print presdata.press, presdata.ticks, presdata.volume - When I tried to run this I get some bizarre results: 1 101 0.343009024858 2 102 0.36397305131 3 103 0.495895296335 4 104 0.372055351734 5 105 0.933839201927 6 106 0.931187808514 7 107 0.876732826233 8 108 0.298638045788 1828716544 -754974720 0.183644190431 1845493760 1660944384 0.186560109258 1862270976 1056964608 0.18631502986 1879048192 1728053248 0.186902835965 1895825408 2097152000 0.18658298254 14 114 0.407857120037 15 115 0.833854913712 16 116 0.00646247947589 17 117 0.297783941031 18 118 0.58082228899 19 119 0.61717569828 the received data for the messages 9 thru 13 are not as expected. I wonder if anyone can see what I am doing wrong? Appreciate any hints. thanks, srini -- https://mail.python.org/mailman/listinfo/python-list
Re: Binary data exchange
BTW - My environment is: H:\python Enthought Canopy Python 2.7.6 | 64-bit | (default, Apr 11 2014, 20:31:44) [MSC v .1500 64 bit (AMD64)] on win32 Type help, copyright, credits or license for more information. -- https://mail.python.org/mailman/listinfo/python-list
Re: Binary data exchange
On 2014-05-29 23:08, rasikasriniva...@gmail.com wrote: friends I have a pair of simple python programs as follows: #!/usr/bin/python # broadcast.py import socket from ctypes import * import random class PurgeData(Structure): _fields_ = [(press,c_int), (ticks,c_int), (volume,c_float)] myPort = 10756 sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) addr = ('localhost',myPort) #sock.sendto(data,addr) presdata = PurgeData() presdata.press = 0 presdata.ticks = 100 for msg in range(1,20): presdata.press = presdata.press+1 presdata.ticks = presdata.ticks+1 presdata.volume = random.random() sock.sendto(presdata,addr) # #!/usr/bin/python # Receiver import socket from ctypes import * class PurgeData(Structure): _fields_ = [(press,c_int), (ticks,c_int), (volume,c_float)] myPort = 10756 sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) addr = ('localhost',myPort) sock.bind(addr) presdata=PurgeData() while True: data,addr = sock.recvfrom(1024) memmove(addressof(presdata),data.strip(),len(data.strip())) print presdata.press, presdata.ticks, presdata.volume - When I tried to run this I get some bizarre results: 1 101 0.343009024858 2 102 0.36397305131 3 103 0.495895296335 4 104 0.372055351734 5 105 0.933839201927 6 106 0.931187808514 7 107 0.876732826233 8 108 0.298638045788 1828716544 -754974720 0.183644190431 1845493760 1660944384 0.186560109258 1862270976 1056964608 0.18631502986 1879048192 1728053248 0.186902835965 1895825408 2097152000 0.18658298254 14 114 0.407857120037 15 115 0.833854913712 16 116 0.00646247947589 17 117 0.297783941031 18 118 0.58082228899 19 119 0.61717569828 the received data for the messages 9 thru 13 are not as expected. I wonder if anyone can see what I am doing wrong? Appreciate any hints. thanks, srini I don't understand why you're using the .strip method. That's for stripping whitespace from text, but you're not sending and receiving text, you're sending and receiving binary data. Personally, I'd use the struct module. -- https://mail.python.org/mailman/listinfo/python-list
Re: Binary data exchange
On Thu, May 29, 2014 at 5:09 PM, MRAB pyt...@mrabarnett.plus.com wrote: On 2014-05-29 23:08, rasikasriniva...@gmail.com wrote: the received data for the messages 9 thru 13 are not as expected. I wonder if anyone can see what I am doing wrong? Appreciate any hints. thanks, srini I don't understand why you're using the .strip method. That's for stripping whitespace from text, but you're not sending and receiving text, you're sending and receiving binary data. And indeed, ASCII characters 9-13 are all whitespace. The receiver appears to be stripping off the first byte of the (presumably little-endian) data and thus shifting the whole struct by a byte for those entries. -- https://mail.python.org/mailman/listinfo/python-list
Re: Binary data exchange
Of course Cut and paste issue. Anyhow, i will look at the struct module. cheers, srini On Thursday, May 29, 2014 7:09:21 PM UTC-4, MRAB wrote: On 2014-05-29 23:08, rasikasriniva...@gmail.com wrote: friends I have a pair of simple python programs as follows: #!/usr/bin/python # broadcast.py import socket from ctypes import * import random class PurgeData(Structure): _fields_ = [(press,c_int), (ticks,c_int), (volume,c_float)] myPort = 10756 sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) addr = ('localhost',myPort) #sock.sendto(data,addr) presdata = PurgeData() presdata.press = 0 presdata.ticks = 100 for msg in range(1,20): presdata.press = presdata.press+1 presdata.ticks = presdata.ticks+1 presdata.volume = random.random() sock.sendto(presdata,addr) # #!/usr/bin/python # Receiver import socket from ctypes import * class PurgeData(Structure): _fields_ = [(press,c_int), (ticks,c_int), (volume,c_float)] myPort = 10756 sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) addr = ('localhost',myPort) sock.bind(addr) presdata=PurgeData() while True: data,addr = sock.recvfrom(1024) memmove(addressof(presdata),data.strip(),len(data.strip())) print presdata.press, presdata.ticks, presdata.volume - When I tried to run this I get some bizarre results: 1 101 0.343009024858 2 102 0.36397305131 3 103 0.495895296335 4 104 0.372055351734 5 105 0.933839201927 6 106 0.931187808514 7 107 0.876732826233 8 108 0.298638045788 1828716544 -754974720 0.183644190431 1845493760 1660944384 0.186560109258 1862270976 1056964608 0.18631502986 1879048192 1728053248 0.186902835965 1895825408 2097152000 0.18658298254 14 114 0.407857120037 15 115 0.833854913712 16 116 0.00646247947589 17 117 0.297783941031 18 118 0.58082228899 19 119 0.61717569828 the received data for the messages 9 thru 13 are not as expected. I wonder if anyone can see what I am doing wrong? Appreciate any hints. thanks, srini I don't understand why you're using the .strip method. That's for stripping whitespace from text, but you're not sending and receiving text, you're sending and receiving binary data. Personally, I'd use the struct module. -- https://mail.python.org/mailman/listinfo/python-list
Re: Binary data exchange
On 30/05/2014 00:25, rasikasriniva...@gmail.com wrote: Of course Cut and paste issue. Anyhow, i will look at the struct module. cheers, srini Please let us know how you get on, please don't top post, and please either use the mailing list https://mail.python.org/mailman/listinfo/python-list or read and action this https://wiki.python.org/moin/GoogleGroupsPython to prevent us seeing double line spacing and single line paragraphs, thanks. -- My fellow Pythonistas, ask not what our language can do for you, ask what you can do for our language. Mark Lawrence --- This email is free from viruses and malware because avast! Antivirus protection is active. http://www.avast.com -- https://mail.python.org/mailman/listinfo/python-list