Опрос состояния устройства и запись в структуру или побитовое сравнение - C (СИ)
Формулировка задачи:
Здравствуйте!
По modbus получаю от устройства состояние его работы, грубо говоря ошибки возникшие в работе. Ошибки передаются следующим образом:
0 бит - ошибка 1 (0 - нет ошибки, 1 - есть)
1 бит - ошибка 2 (0 - нет ошибки, 1 - есть)
.......
15 бит - ошибка 15 (0 - нет ошибки, 1 - есть)
итого 16 бит.
Результатом ответа от устройства передается число, но не биты (00010000000000), а десятичное 16, или 535215 например. как оно формируется разобрался. 1 2 4 8 16 32 ... 32768 = 2 в степени порядковый номер бита. и там где 1 производится сумма этих чисел
Необходимо определить что за ошибки переданы в ответе.
Раньше с программированием на Си не сталкивался, поэтому забуксовал. В мануалах прочитал про структуры и понял что их использование мне очень подходит для решения проблемы, но никак не получается правильно перевести ответ в двоичный код (например функции которые пробовал переводят 16 в 10000, а другое число, грубо говоря 434561 переводит в 5260 (это просто для примера цифры привел)). также экспериментируя с 16 и 10000 не получается разбить 10000 на составляющие и записать в структуру.
пробовал преобразовать в массив используя char array[] = 10000; никак не получается
Может быть я пошел не по верному пути, начал пытаться преобразовать все в структуру...коллега подсказывает применить побитовое сравнение, но как его реализовать не знаем. как разбить число на биты и сравнивать его с 1 или 0?
Заранее благодарен. Спасибо за помощь
Решение задачи: «Опрос состояния устройства и запись в структуру или побитовое сравнение»
textual
Листинг программы
for (int i=0; i<15; i++) { if ((input & (1<<i)) != 0 ) { } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д