Hex to Float Converstion - PullRequest
       9

Hex to Float Converstion

0 голосов
/ 24 октября 2019

Использование Windows 10 с Python 3.7.1 и Spyder IDE.

Этот сегмент кода импортирует последовательные и считывает данные из порта COM1.

    ser = serial.Serial('COM1')
    print (ser.name)
    ser.baudrate = 115200
    s = ser.read(100)
    print (s)

Я ожидаю получить строкуэто выглядит примерно так: прямые шестнадцатеричные байты.

FA 01 08 00 0E A7 C0 C2 68 47 13 BF DD 2F 3E BD 4C B9 FA 01 08 00 DD A6 C0 C2 2D 25 12 BF 21 18 29 BDF3 47 FA 01 08 00 20 A7 C0 C2 55 D1 11 BF E8 B0 3B BD AF 81

Но я получаю это из печати (-ов)

COM1 b '\ xfa \ x01\ x08 \ x00 \ хк \ XB0 # \ xc1 \ x05 \ x83 \ xc1 = \ x0e \ X07 \ XB2 \ XBE | \ XEC \ РФА \ x01 \ x08 \ x00 {\ x92 # \ XC10 \ x14 \ XCA = \ XFF\ XF6 \ XB6 \ xbem \ x96 \ РФА \ x01 \ x08 \ x00G \ x9d # \ xc1 \ xd5 \ Xab \ XC4 = \ xa6 \ x89 \ XB8 \ xbe8 \ хеа \ РФА \ x01 \ x08 \ x00 \ xc2 \ Хва# \ xc1 \ x88 \ x7f \ XCA = \ x9d \ x89 \ XB5 \ XBE \ xc6 \ x8c \ РФА \ x01 \ x08 \ x00C \ XCD # \ xc1 \ XDc \ xa6 \ XCC = \ x8c \ x1e \ XB6 \ XBE\ x1b \ xd4 \ xfa \ x01 \ x08 \ x00g \ xcb # \ xc1 \ xb5 \ xbc '

Является ли это только функцией того, как при печати Python на ноутбуке с Windows отображается поток шестнадцатеричных байтов в потоке, считываемый сCOM порт? Это действительно только те шестнадцатеричные байты на проводе?

Спасибо

1 Ответ

1 голос
/ 24 октября 2019

То, что вы видите, это распечатка типа Python 3 bytes. \x## чанки - это байтовые шестнадцатеричные значения, которые не могут быть представлены в ASCII, в то время как другие символы - это байты, которые могут быть представлены в ASCII.

Как и предположил @ChrisDoyle, вы можетеполучить представление Hex с помощью bytes.hex:

>>> b = b'\xfa\x01\x08\x00\xfc\xb0#\xc1\x05\x83\xc1=\x0e\x07\xb2\xbe|\xec\xfa\x01\x08\x00{\x92#\xc10\x14\xca=\xff\xf6\xb6\xbem\x96\xfa\x01\x08\x00G\x9d#\xc1\xd5\xab\xc4=\xa6\x89\xb8\xbe8\xea\xfa\x01\x08\x00\xc2\xba#\xc1\x88\x7f\xca=\x9d\x89\xb5\xbe\xc6\x8c\xfa\x01\x08\x00C\xcd#\xc1\xdc\xa6\xcc=\x8c\x1e\xb6\xbe\x1b\xd4\xfa\x01\x08\x00g\xcb#\xc1\xb5\xbc'
>>> b.hex()
'fa010800fcb023c10583c13d0e07b2be7cecfa0108007b9223c13014ca3dfff6b6be6d96fa010800479d23c1d5abc43da689b8be38eafa010800c2ba23c1887fca3d9d89b5bec68cfa01080043cd23c1dca6cc3d8c1eb6be1bd4fa01080067cb23c1b5bc'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...