Тема: MAZDA3 pccar
Показать сообщение отдельно
Старый 21.01.2019, 02:21   #385
sheyker
Старший Пользователь
 
Аватар для sheyker
 
Регистрация: 08.02.2006
Возраст: 39
Город: Москва
Регион: 77, 97, 99, 177
Машина: mazda3
Сообщений: 309
sheyker is a splendid one to beholdsheyker is a splendid one to beholdsheyker is a splendid one to beholdsheyker is a splendid one to beholdsheyker is a splendid one to beholdsheyker is a splendid one to beholdsheyker is a splendid one to behold
По умолчанию

/ --------- КОМПОРТ Com6 115200 CAN -------------

procedure TMainForm.ComPort4RxChar(Sender: TObject; Count: Integer);
// компорт 6, кан шина
var
S: String;
sl1: TStringList;
L1 : boolean;
begin
S := '';
ComPort4.ReadStr(S, Count); // S := S + #13;
sl1 := TStringList.Create;

// --------- ОТКРЫТИЕ ДВЕРЕЙ, БАГАЖНИКА -------------
if (Pos('door', S) <> 0) then // условие срабатывает на door > 0 // 0 0 0 0 // 0 1 0 0
begin
Delete(S, 1, 4);
sl1.Delimiter := ' ';
sl1.DelimitedText := S;


if (sl1[0] = '0') and not (Image39.Visible) then // передняя левая
begin
Image39.Visible := False;
PlaySound('C:\вав\звук вызова.wav', 0, SND_ASYNC);
end
else
begin
Image39.Visible := true;
PlaySound('C:\вав\климат\открыта левая дверь.wav', 0, SND_ASYNC);
end;

if (sl1[1] = '0') and not (Image22.Visible) then // передняя правая
begin
Image22.Visible := False;
PlaySound('C:\вав\звук вызова.wav', 0, SND_ASYNC);
end
else
begin
Image22.Visible := true;
PlaySound('C:\вав\климат\открыта правая дверь.wav', 0, SND_ASYNC);
end;
if (sl1[2] = '0') and not(Image73.Visible)then // Left Front
begin
Image73.Visible := False;
PlaySound('C:\вав\звук вызова.wav', 0, SND_ASYNC);
end
else
begin
Image73.Visible := true;
PlaySound('C:\вав\климат\открыта левая дверь.wav', 0, SND_ASYNC);
end;

if (sl1[3] = '0') and not (Image24.Visible) then // Left Front
begin
Image24.Visible := False;
PlaySound('C:\вав\звук вызова.wav', 0, SND_ASYNC);
end
else
begin
Image24.Visible := true;
PlaySound('C:\вав\климат\открыта правая дверь.wav', 0, SND_ASYNC);
end;

sl1.Free;
end
// --------- Бортовой компьютер -------------
else if (Pos('curr', S) <> 0) then...

вот например получаем данные с большой скоростью но если ардуино в этот же ком порт кричит еще много данных то неизбежно прога встает out of bounds... и вращения стрелок подтормаживают, в режиме отладки видно что в лэйбл где жестко прописано условие, попали другие данные, когда разделил задачи между ардуинами, все стало гуд и без сбоев, но вылезла проблема с хаотичным присвоением компортов при запуске win
sheyker вне форума   Ответить с цитированием