PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Общение с машиной (http://pccar.ru/forumdisplay.php?f=14)
-   -   CITROEN-ARDUINO (http://pccar.ru/showthread.php?t=23275)

T_r_D 24.02.2016 23:36

У меня на столе собрана магнитола и дисплей. При включении они выплёвывают по одному Id. На картинке такой id для дисплея указан. При этом есть циклический id который очень похож на тот который единожды проходит.

Короче я понял- Ща с глюком перекодировки разбирусь, доделаю менюшки не требующие эмуляции дисплея и с машины сниму свой строчечный дисплей чтоб на столе запустить и посмотреть отличия.

Dmitry8 25.02.2016 10:25

Так у вас в машине другой тип дисплея?
Скорее всего при телекодировании в магнитоле прописывается тип дисплея и от этого зависит как она передаёт данные на дисплей.

T_r_D 25.02.2016 15:56

Народ- дурацкий вопрос. Передаю из ардуины дройду два байта
DATA[9] = 0x09;
DATA[10] = 0xA0;
принимаю на стороне дройда нормально, а теперь пытаюсь их склеить и получаю чушь!
(Arbyte[9] << 8) + Arbyte[10])

Arbyte[9] равно -91 и поэтому заполняется еденицами, а нужно чтоб нолями.
Как это сделать?

GASCHE 25.02.2016 22:41

А так (Arbyte[9] * 256 ) + Arbyte[10] не пробовали?

T_r_D 25.02.2016 23:42

Пробовал- тоже самое.
Помогла маска 0хff.
Там дело в том, что он про арбайт 10 думает что оно-90, а оно на самом деле 160.
Тоесть 160 это 16 бит и старшим забиты нулями. Если обрезать до 8 бит, то получится как раз -90

GASCHE 26.02.2016 10:43

Цитата:

Сообщение от T_r_D (Сообщение 352854)
Тоесть 160 это 16 бит и старшим забиты нулями. Если обрезать до 8 бит, то получится как раз -90

Вы бы вначале сами разобрались. Как это Байт стал 16 бит и при этом еще умудрился сдвинуться на 4 бита?

lti1 26.02.2016 11:43

Цитата:

Сообщение от GASCHE (Сообщение 352869)
Вы бы вначале сами разобрались. Как это Байт стал 16 бит и при этом еще умудрился сдвинуться на 4 бита?

Ни какого сдвига на 4 бита нет. А вот каким чудесным образом в андройд меняется тип значения на 16 битный, не понятно.
T_r_D описался, не -90, а -96.

GASCHE 26.02.2016 13:17

Цитата:

Сообщение от lti1 (Сообщение 352873)
T_r_D описался, не -90, а -96.

Даже не знаю что сказать
00001001(09)*00000001 00000000(256)=00001001 00000000(09 00)
00001001 00000000(09 00) + 10100000(А0) = 00001001 10100000(09 A0)

01011010(90) это еще можно объяснить, но это 01100000(96) откуда вы взяли, даже понять не могу.

lti1 26.02.2016 13:30

Вложений: 1
Цитата:

Сообщение от GASCHE (Сообщение 352882)
Даже не знаю что сказать
00001001(09)*00000001 00000000(256)=00001001 00000000(09 00)
00001001 00000000(09 00) + 10100000(А0) = 00001001 10100000(09 A0)

01011010(90) это еще можно объяснить, но это 01100000(96) откуда вы взяли, даже понять не могу.

Не 01100000(96), а 10100000(-96).
8 бит и 16 бит дают разный результат.

xmetal 26.02.2016 15:43

Я так понимаю вся беда в том, что ява не поддерживает беззнаковый тип данных, отсюда и косяки. Либо надо работать с более вместительными типами, либо как сделал T_r_D, обрезать маской.


Часовой пояс GMT +4, время: 18:04.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot