Я работаю с некоторым встроенным оборудованием, Rabbit SBC, которое использует Dynamic C 9.
Я использую микроконтроллер для чтения информации с цифрового датчика компаса через один из его последовательных портов.
Датчик отправляет значения в микроконтроллер с использованием одного байта со знаком.(От -85 до 85)
Когда я получаю эти данные, я помещаю их в переменную char
Это отлично работает для положительных значений, но когда датчик начинает отправлять отрицательные значения, чтение переходит к 255, а затем возвращается к 0. Я предполагаю, что это связано с тем, что последний бит используется для определения отрицательного / положительного значения и искажает реальные значения.
Моей первоначальной мыслью было изменить тип данных на знаковый символ
.
Однако моя проблема заключается в том, что версия Dynamic C на микроконтроллере, который я использую, изначально не поддерживает подписанные значения char, а только беззнаковые.
Интересно, есть ли способ вручную преобразовать данные, которые я получаю, в знаковое значение?