Опрос состояния устройства и запись в структуру или побитовое сравнение - 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 )
    {
 
     }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы