Тема: CITROEN-ARDUINO
Показать сообщение отдельно
Старый 20.10.2015, 23:34   #61
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Помогите ещё чутка.
есть бит в котором
01022222
0 - не используются
1 - активно меню или нет
2 - данные меню.
Пишу вот так (переменная равна int)
AM = buf[6] << 3;
Serial.println(AM);
По моему мнению это должно заставить сообщение принять вид
22222000
но в реале почему-то получаю число типо 696.
Этого числа вообще тут быть не может!
При этом видно что значения меняются и данные ячеек меню тоже.

Что я не так делаю?

Вот кусок кода
if(canId == 485) //1E5
{
if (bitRead(buf[0],7) == 1){AP = 1; APV = (buf[0] << 1 / 2) - 191; AM = 0;}
if (bitRead(buf[1],7) == 1){AP = 2; APV = (buf[1] << 1 / 2) - 191; AM = 0;}
if (bitRead(buf[2],7) == 1){AP = 3; APV = (buf[2] << 1 / 2) - 191; AM = 0;}
if (bitRead(buf[4],7) == 1){AP = 4; APV = (buf[4] << 1 / 2) - 191; AM = 0;}
if (bitRead(buf[5],7) == 1){AP = 5; APV = bitRead(buf[5],6); AM = 0;}
if (bitRead(buf[5],4) == 1){AP = 6; APV = bitRead(buf[5],2); AM = 0;}
if (bitRead(buf[6],6) == 1){AP = 7; APV = 0; AM = buf[6] << 3;}
}
Serial.println(AM);

значение в этом байте такие.
00011 None
00111 Classical
01011 Jazz-Blues
01111 Pop-Rock
10011 Vocal
10111 Techno
полностью сообщение с активным меню и предустановкой Classic выглядит как
01000111
T_r_D вне форума   Ответить с цитированием