Я пытаюсь прочитать данные с последовательного порта, используя C #.
Обычные байты в целые числа или числа с плавающей запятой и bools не являются проблемой.Тем не менее, есть одна последовательность из 3 байтов, которые перемешиваются, и я не могу заставить ее правильно проанализировать.
Эти 3 байта представляют 2 беззнаковых 12-разрядных целых числа, один для MainSupplyDC, один для питания двигателя.Они перетасовываются так, что перед синтаксическим анализом их нужно переупорядочить.
Моя последняя попытка закончилась примерно так, но теперь я снова понял, что это не может быть правильно.
// Main Supply DC
int MainSupplyDCval = (byte2 >> 4 | byte1);
// MotorPower
int MotorPowerVal = (byte3 << 4 | byte2);
Я не знаю, как правильно сдвинуть его.
Вот схема последовательности байтов:
то же самое в тексте:
Byte1 | Byte2 | Byte3
------------------------------------------------------
Lowbyte | 4 Lowbit | 4 Highbit | Highbyte
MainSupplyDC | MotorPower| MainSupplyDC | MotorPower
Примеры последовательности байтов:
E5-00-00
MainSupplyDC expected around 230
MotorPower expected 0
E4-A0-06
MainSupplyDC expected around 230
MotorPower expected about 97
E5-90-0F
MainSupplyDC expected around 230
MotorPower expected about 190
Уже 2 дня стучу по голове, просто не могу заставить ее работать ...
РЕДАКТИРОВАТЬ
Кажется, что есть два способа интерпретации данной таблицы.В моем случае у @ canton7 был правильный ответ, но я думаю, что если бы поставщик / производитель закодировал другой путь, у @dumetrulo был бы правильный ответ.