|
procedure
ResetCar; //полностью останавливает
машину
var CycleCount:Integer;
begin
if(rrcwindow.Com.Connected=false)
then exit;
if(lsCD in rrcwindow.Com.GetLineStatus=True)
then
begin
CycleCount:=0;
while(lsCD
in rrcwindow.Com.GetLineStatus=True) do
begin
rrcwindow.Com.ToggleRTS(False);
rrcwindow.Com.ToggleRTS(False);
rrcwindow.Com.ToggleRTS(True);
//Такт на счетчик
rrcwindow.Com.ToggleRTS(True);
//Такт на счетчик
CycleCount:=CycleCount+1;
if(CycleCount>MaxCycleCount)
then begin exit;end;
end
end
else
begin
CycleCount:=0;
while(lsCD
in rrcwindow.Com.GetLineStatus=False) do
begin
rrcwindow.Com.ToggleRTS(False);
rrcwindow.Com.ToggleRTS(False);
rrcwindow.Com.ToggleRTS(True);
//Такт на счетчик
rrcwindow.Com.ToggleRTS(True);
//Такт на счетчик
CycleCount:=CycleCount+1;
if(CycleCount>MaxCycleCount)
then begin exit;end;
end;
CycleCount:=0;
while(lsCD
in rrcwindow.Com.GetLineStatus=True) do
begin
rrcwindow.Com.ToggleRTS(False);
rrcwindow.Com.ToggleRTS(False);
rrcwindow.Com.ToggleRTS(True);
//Такт на счетчик
rrcwindow.Com.ToggleRTS(True);
//Такт на счетчик
CycleCount:=CycleCount+1;
if(CycleCount>MaxCycleCount)then begin exit;end;
end;
end;
end;
procedure
SendCommandToCar(chUp:boolean;chDown:boolean;chLeft:boolean;chRight:boolean);
// Задаем нужную команду машине
var Checksuma:Integer;
x:Integer;
begin
Checksuma:=0;
ResetCAR;
if(rrcwindow.Com.Connected=false)then exit;
{добавь сист защиты от непр действий}
if (chUp
= True) then Checksuma:=Checksuma+2;
if (chDown = True) then Checksuma:=Checksuma+1;
if (chLeft = True) then Checksuma:=Checksuma+8;
if (chRight = True) then Checksuma:=Checksuma+4;
for
x:=1 to Checksuma do //накрутим до нужного
значения
begin
rrcwindow.Com.ToggleRTS(False);
rrcwindow.Com.ToggleRTS(False);
rrcwindow.Com.ToggleRTS(True);
//Такт на счетчик
rrcwindow.Com.ToggleRTS(True);
//Такт на счетчик
end;
end;
Скачать
программу
|