Привет! Вобщем есть проблеммы.. вопросы.
1) Не получается передать в магнитоллу/эмулятор название трека/диска.
Сейчас делаю так: каждую секунду передаю данные последовательно:
- Cdt
- cms
- dname
- tname
- p
В итоге, номера диска/трека, минуты и секунды передаются нормально. Время тикает.
название диска передается, без ошибок. название трека не хочет проглатываться. На каждый символ приходит вопросик. пробовал с 5ой версией прошивки где формат: t xxxxxx..x 0 - не прокатывает не диск не трек.
с 4ой версией прошивки (txxxxx) не прокатывает только диск.
но самое интересное что даже при том, что название диска отсылается без вопросиков то после комманды 'p' это название не отображается. Время тикает, а кнопка DISP не выводит режимы отображения. Она и не пикает при нажатии... т.е. HU не схватывает название. Код, которым делаю:
procedure Send19(s:string);
const
str_len = 19;
var
b_str:array[0..str_len-1] of byte;
i:integer;
begin
if length(s)>str_len then s:=copy(s,1,str_len);
for i:=0 to str_len-1 do b_str[i]:=0;
for i:=1 to length(s) do b_str[i-1]:=ord(s[i]);
ComPort1.Write(b_str[0],str_len);
end;
function SendToHU:boolean;
var
s:string;
b:array[0..2] of byte;
begin
if not ComPort1.Connected then Log('com port closed');
ComPort1.ClearBuffer(true,true);
b[0]:=ord('C');
b[1]:=HexToDec(CurrentMCD.Disk_Num);
b[2]:=HexToDec(CurrentMCD.Track_Num);
ComPort1.Write(b,3);
sleep(50);
b[0]:=ord('c');
b[1]:=HexToDec(CurrentMCD.Minutes);
b[2]:=HexToDec(CurrentMCD.Seconds);
ComPort1.Write(b,3);
sleep(50);
Send19('d'+CurrentMCD.Disk);
sleep(50);
Send19('t'+CurrentMCD.Track);
sleep(50);
b[0]:=ord('p');
ComPort1.Write(b,1);
result:=true;
end;
2) Обмен тупит. При том что я каждую секунду шлю все обновленные данные, часто магнитолла не получает их, потом если прорвет обмен опять, то сразу HU резко получает все, что не получила и быстро из грузит. Если обменов примерно 10 она не получила подряд то аппарат выключается. Частично проблемму исправил sleep(50); после каждой посылки.
3) САМАЯ БОЛЬШАЯ ПРОБЛЕММА заключается в том, что аппарат неоперативно реагирует на нажатие кнопок. В режиме диска или радио при каждом нажатии на любую кнопку магн пикает. В случае с MCD она пикает через раз или два, в терминал приходят nB через раз, иногда просто n иногда просто B, а иногда нет вообще реакции на нажатие кнопок. Повысил скорость порта до 57 для эксперименту. Что еще можно сделать, чтобы каждое нажатие фиксировалось в терминалке?
Сейчас пользуюсь 4ой версией твоей прошивки. Длина провода от эмулятора до HU примерно см 40.