We are going to use encoders to change the values of CRS and HDG, and then we will write those values on displays. IOCP variables are:
CRS: 43
HDG: 105
as shown in the following pictures:
The script is the following one:
PROGRAM Encoders;
const
OFFSET_HDG=105;
OFFSET_CRSP=43;
var
ID_ENC_HDG:integer;
ID_ENC_CRSP:integer;
procedure OnEncoderChange(id_encoder,value:integer); //each time an encoder moves
begin
case id_encoder of //we check which one has moved
ID_ENC_HDG: BEGIN
WriteIOCP(1,OFFSET_HDG,value); //we write the IOCP variable new value
WriteDisplaysSwap('SIMIO000085-EXT15',4,inttostr(value),'0',3,0); //and write that value on the display
END;
ID_ENC_CRSP: BEGIN
WriteIOCP(1,OFFSET_CRSP,value);
WriteDisplaysSwap('SIMIO000085-EXT15',1,inttostr(value),'0',3,0);
END;
end;
end;
//IOCP EVENTs
procedure OnIOCPConnect(socket:byte);
begin
RegIOCPOffset(1,OFFSET_HDG);
RegIOCPOffset(1,OFFSET_CRSP);
end;
procedure OnIOCPConnectClosed(socket:byte);
begin
end;
procedure OnIOCPConnectFail(socket:byte);
begin
end;
procedure OnIOCPChangeSyncro(socket,offset:byte;value:integer);
begin
end;
procedure OnIOCPChange(socket,offset:byte;value:integer);
begin
end;
//MAIN
Begin
ID_ENC_HDG:=RegEncoder('SIMIO000085',8,7,0,359,1,0,false,50); //HDG encoder is defined
ID_ENC_CRSP:=RegEncoder('SIMIO000085',2,5,0,359,1,0,false,50); //CRS encoder is defined
SetDisplayIntensity('SIMIO000085-exp15',1,2); //Displays are defined
End.