Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 6, 2019 15:53:04

Fundla
Зарегистрирован: 2019-12-06
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить данные из байтового массива?

Доброго времени суток!
Есть ардуинка которая шлет в ком порт некий байтовый массив, а в питоне необходимо этот массив поймать, разложить по переменным и соответственно иметь возможность ими манипулировать.
Принять данные получается в таком виде:
b'\x00\x08\r\n' или 00080d0a (если применить “.hex()”)
Что с этим делать дальше не понятно. Необходимо, например, создать переменную из 3го бита 1го байта полученного массива для дальнейшей работы с этой переменной. Как это сделать? Документации или примеров в сети не нашел. Прошу помощи…
Используемый код:
*****
import serial
import time

ser = serial.Serial('COM3')
time.sleep(2)
print(ser.name)

while True:
data = ser.readline().hex()
print(data)

Отредактировано Fundla (Дек. 6, 2019 15:53:40)

Офлайн

#2 Дек. 6, 2019 16:07:26

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Как получить данные из байтового массива?

>>> arr = b'\x00\x08\r\n'
>>> list(arr)
[0, 8, 13, 10]



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Дек. 6, 2019 16:47:32

Fundla
Зарегистрирован: 2019-12-06
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить данные из байтового массива?

Спасибо, но не совсем понятно что это. В какое место моего кода это надо вставить?

Офлайн

#4 Дек. 6, 2019 17:56:57

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как получить данные из байтового массива?

Fundla
Необходимо, например, создать переменную из 3го бита 1го байта полученного массива для дальнейшей работы с этой переменной.
используйте битовые операции, сдвиги, маски и пр. Это не питон специфично. Если хотите получить значение N-го бита, это можно сделать например вот так
 def get_bit(num, i):
    mask = 1 << i
    return (num & mask) >> i



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version