Разобрать пакет (байт) на части

Простейшие вопросы в области инженерной разработки
Ответить
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Разобрать пакет (байт) на части

Сообщение FireFly »

Получаю пакеты от устройства. Пытаюсь разобрать его на составляющие:

Поле Request/Ack/CMD.
Request – бит устанавливается в 0 при передаче запросов, данных и уведомлений, при передачи ответа 1.

Ack[1..0] - код подтверждения выполнения (код ошибки);
0 - успешное выполнение
1 - ошибка при выполнении запроса, если необходимо идентифицировать ошибку можно в поле данных высылать код ошибки.
2- устройство занято (можно повторить запрос позже)
3 - нет такого устройства(приемника), либо оно неисправно.

CMD[4..0] - код команды/запроса;
0x00 - нет операции
0x01 - выдать номер версии ПО(формат не определен).
0x02 - смена скорости передачи
0x03 - зарезервировано
0x04 - 0x1F по усмотрению разработчика
Как мне из байта получить отдельно Request, Ack, CMD. Сейчас делаю с помощью Logical Shift, но понимаю что это неправильный метод. Но не могу в LabVIEW найти другие подходящие инструменты работы с байтами. Подскажите как работать с байтом правильно.
Вложения
s1.PNG
s1.PNG (2.27 КБ) 2525 просмотров
s1.PNG
s1.PNG (15.6 КБ) 2525 просмотров
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Разобрать пакет (байт) на части

Сообщение Eugen Graf »

Преобразовываешь в boolean array и вроде всё, готово.
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Разобрать пакет (байт) на части

Сообщение FireFly »

Точно. Не додумался. :D Спасибо :super:
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Pavel

Activity
developer
developer
Сообщения: 271
Зарегистрирован: 31 июл 2009, 08:07
Награды: 1
Версия LabVIEW: 8.5

Re: Разобрать пакет (байт) на части

Сообщение Pavel »

FireFly писал(а):Точно. Не додумался. :D Спасибо :super:
Обычно маскируют нужные биты с помощь and
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Разобрать пакет (байт) на части

Сообщение mzu2006 »

Да, мне тоже больше нравятся битовые маски. Жаль что в :labview: нет битовых полей (bit fields).
Напоминаю, что тема перекликается с темой текущего конкурса: разбить битовый массив на составляющие
Ответить

Вернуться в «Для чайников»