Encoding in my Lopy4



  • I'm using my Lopy4 to send some data to my server using the ustruct library. Since here all ok, the data arrives to my server without problems, with the correct values.

    But furthermore I want to observe this data in my Atom's console. Here comes the problem, this is what I see, Payload: �@A��YD)\�D instead of 06 a9 13 40 41 f6 f0 59 44 29 5c 86 44 00 00 00 00 or something similar with the hexa format \x.

    This is my code how I convert float values to binary data.

    import struct
    
    valores = ['12.0048', '871.765', '1074.88', '0']
    
    payload = struct.pack('B', 6)
    for val in valores:
      val = struct.pack('f', float(val))
      payload = payload + val
    

    I tried with all of this codecs to print my data but neither works

    codecs = ['ascii', 'big5', 'big5hkscs', 'cp037', 'cp273',
                    'cp424', 'cp437', 'cp500', 'cp720', 'cp737', 'cp775', 'cp850',
                    'cp852', 'cp855', 'cp856', 'cp857', 'cp858', 'cp860', 'cp861',
                    'cp862', 'cp863', 'cp864', 'cp865', 'cp866', 'cp869', 'cp874',
                    'cp875', 'cp932', 'cp949', 'cp950', 'cp1006', 'cp1026',
                    'cp1125', 'cp1140', 'cp1250', 'cp1251', 'cp1252', 'cp1253',
                    'cp1254', 'cp1255', 'cp1256', 'cp1257', 'cp1258', 'euc_jp',
                    'euc_jis_2004', 'euc_jisx0213', 'euc_kr', 'gb2312', 'gbk',
                    'gb18030', 'hz', 'iso2022_jp', 'iso2022_jp_1', 'iso2022_jp_2',
                    'iso2022_jp_2004', 'iso2022_jp_3', 'iso2022_jp_ext', 'iso2022_kr',
                    'latin_1', 'iso8859_2', 'iso8859_3', 'iso8859_4', 'iso8859_5',
                    'iso8859_6', 'iso8859_7', 'iso8859_8', 'iso8859_9', 'iso8859_10',
                    'iso8859_11', 'iso8859_13', 'iso8859_14', 'iso8859_15',
                    'iso8859_16', 'johab', 'koi8_r', 'koi8_t', 'koi8_u', 'kz1048',
                    'mac_cyrillic', 'mac_greek', 'mac_iceland', 'mac_latin2',
                    'mac_roman', 'mac_turkish', 'ptcp154', 'shift_jis',
                    'shift_jis_2004', 'shift_jisx0213', 'utf_32', 'utf_32_be',
                    'utf_32_le', 'utf_16', 'utf_16_be', 'utf_16_le', 'utf_7',
                    'utf_8', 'utf_8_sig']
    
    for code in codecs:
        myString = '\t\t· PAYLOAD: ' + str(payload, code) + '\n'
        print(code,'>',myString)
    

    My question, how can I see correctly my hexa payload???

    Thank you very much



  • @g0hww I was thinking more in something about decoding, but is a good solution. Thanks!



  • Does binascii.hexlify() do what you want?



  • @kjm mmm it's true, we saw it different because I save the results in a json file and when LoRa time it's ok (to avoid send to much messages) I read this json and send it. Just at this time is when I want to observe it.

    Even so, you are having the same problem as me, is not printing with the correct encoding.

    I want to see

    b'\x06\xa9\x13\x40\x41\xf6\xf0\x59\x44\x29\x5c\x86\x44\x00\x00\x00\x00'
    


  • valores = ['12.0048', '871.765', '1074.88', '0']
    
    payload = struct.pack('B', 6)
    for val in valores:
      val = struct.pack('f', float(val))
      payload = payload + val
    print(payload)  
    

    gives

    b'\x06\xa9\x13@A\xf6\xf0YD)\\\x86D\x00\x00\x00\x00'
    

    on my lopy


Log in to reply
 

Pycom on Twitter