Licencia de Creative Commons
This tutorial is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.

 

SC PASCAL: WORKING WITH ENCODERS AND DISPLAYS

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.

 

This video shows the script running:

 

 

Last edited: 31.01.2018

 

Versión española

English version