Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    Encoding in my Lopy4

    Scheduled Pinned Locked Moved LoPy
    5 Posts 3 Posters 67 Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M Offline
      M m
      last edited by

      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

      K 1 Reply Last reply Reply Quote 0
      • K Offline
        kjm @M m
        last edited by

        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

        M 1 Reply Last reply Reply Quote 1
        • M Offline
          M m @kjm
          last edited by

          @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'
          
          1 Reply Last reply Reply Quote 0
          • G Offline
            g0hww
            last edited by

            Does binascii.hexlify() do what you want?

            M 1 Reply Last reply Reply Quote 3
            • M Offline
              M m @g0hww
              last edited by

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

              1 Reply Last reply Reply Quote 0

              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

              With your input, this post could be even better 💗

              Register Login
              • 1 / 1
              • First post
                Last post

              Pycom on Twitter

              Pycom