Цитата:
Сообщение от T_r_D
также попробовал написать
if (canId = 8)
{
C = (buf[3]*256+buf[2])/16;
Serial.println(C);
}
И получил пляшущие цифры ни малейшим образом не намекающие на обороты!
|
И не удивительно,
C = (buf[3]*256+buf[2])/16;
Я не знаю тип переменной C , но в принципе это и не важно.
buf[3]*256 - байт умножается на 256 и сохраняется в байт, то есть всегда равно 0. Теперь к нулю прибавляем байт buf[2] и делим на 16 в результате значения от 0 до 15.
а надо так, если C имеет тип unsigned int, то
C = buf[3];
C = (C*256+buf[2])/16;
То есть сначала байт преобразуем в unsigned int, а уже потом выполняем все действия, вот тогда получим правильное значение