Example CAA_SerialCom.library

 

VAR

uiComState : UINT;

xDone : BOOL;

aCom1Params : ARRAY [1..7] OF COM.PARAMETER;

aCom2Params : ARRAY [1..7] OF COM.PARAMETER;

como1 : COM.Open;

comc1 : COM.Close;

comw1 : COM.Write;

como2 : COM.Open;

comc2 : COM.Close;

comr2 : COM.Read;

sWrite : STRING := 'Test String der Länge 25!';

sRead : STRING(25);

szRead : CAA.SIZE;

xCom1OpenError : BOOL;

xCom1CloseError : BOOL;

xCom1WriteError : BOOL;

xCom2OpenError : BOOL;

xCom2CloseError : BOOL;

xCom2ReadError : BOOL;

END_VAR

CASE uiComState OF

0:

aCom1Params[1].udiParameterId := COM.CAA.Parameter_Con­stants.udiPort;

aCom1Params[1].udiValue := 1;

aCom1Params[2].udiParameterId := COM.CAA.Parameter_Con­stants.udiBaudrate;

aCom1Params[2].udiValue := 9600;

aCom1Params[3].udiParameterId := COM.CAA.Parameter_Con­stants.udiParity;

aCom1Params[3].udiValue := COM.PARITY.NONE;

aCom1Params[4].udiParameterId := COM.CAA.Parameter_Con­stants.udiStopBits;

aCom1Params[4].udiValue := COM.ONESTOPBIT;

aCom1Params[5].udiParameterId := COM.CAA.Parameter_Con­stants.udiTimeout;

aCom1Params[5].udiValue := 0;

aCom1Params[6].udiParameterId := COM.CAA.Parameter_Con­stants.udiByteSize;

aCom1Params[6].udiValue := 8;

aCom1Params[7].udiParameterId := COM.CAA.Parameter_Con­stants.udiBinary;

aCom1Params[7].udiValue := 0;

como1.udiListLength := SIZEOF(aCom1Params)/SIZEOF(COM.PARAMETER);

como1.pParameterList := ADR(aCom1Params);

como1.xExecute := TRUE;

como1();

IF como1.xError THEN

xCom1OpenError := TRUE;

uiComState := 1000;

END_IF

IF como1.xDone THEN

uiComState := 5;

END_IF

5:

aCom2Params[1].udiParameterId := COM.CAA.Parameter_Con­stants.udiPort;

aCom2Params[1].udiValue := 2;

aCom2Params[2].udiParameterId := COM.CAA.Parameter_Con­stants.udiBaudrate;

aCom2Params[2].udiValue := 9600;

aCom2Params[3].udiParameterId := COM.CAA.Parameter_Con­stants.udiParity;

aCom2Params[3].udiValue := COM.PARITY.NONE;

aCom2Params[4].udiParameterId := COM.CAA.Parameter_Con­stants.udiStopBits;

aCom2Params[4].udiValue := COM.ONESTOPBIT;

aCom2Params[5].udiParameterId := COM.CAA.Parameter_Con­stants.udiTimeout;

aCom2Params[5].udiValue := 0;

aCom2Params[6].udiParameterId := COM.CAA.Parameter_Con­stants.udiByteSize;

aCom2Params[6].udiValue := 8;

aCom2Params[7].udiParameterId := COM.CAA.Parameter_Con­stants.udiBinary;

aCom2Params[7].udiValue := 0; // false

como2.udiListLength := SIZEOF(aCom2Params)/SIZEOF(COM.PARAMETER);

como2.pParameterList := ADR(aCom2Params);

como2.xExecute := TRUE;

como2();

IF como2.xError THEN

xCom2OpenError := TRUE;

uiComState := 25;

END_IF

IF como2.xDone THEN

uiComState := 10;

END_IF

10:

comw1.hCom := como1.hCom;

comw1.pBuffer := ADR(sWrite);

comw1.szSize := 5;

comw1.xExecute := TRUE;

comw1();

IF comw1.xError THEN

xCom1WriteError := TRUE;

END_IF

IF comw1.xDone THEN

uiComState := 15;

END_IF

15:

comr2.pBuffer := ADR(sRead);

comr2.szBuffer := 25;

comr2.hCom := como2.hCom;

comr2.xExecute := TRUE;

comr2();

IF comr2.xError THEN

xCom2ReadError := TRUE;

END_IF

IF comr2.xDone OR comr2.xError THEN

IF comr2.xDone THEN

szRead := comr2.szSize;

END_IF

uiComState := 20;

END_IF

20:

comc2.hCom := como2.hCom;

comc2.xExecute := TRUE;

comc2();

IF comc2.xError THEN

xCom2CloseError := TRUE;

END_IF

IF comc2.xDone OR comc2.xError THEN

uiComState := 25;

END_IF

25:

comc1.hCom := como1.hCom;

comc1.xExecute := TRUE;

comc1();

IF comc1.xError THEN

xCom1CloseError := TRUE;

END_IF

IF comc1.xDone OR comc1.xError THEN

uiComState := 1000;

END_IF

1000:

xDone := TRUE;

ELSE

uiComState := 0;

END_CASE

Hardware handshake:

VAR

aComParams : ARRAY [1..11] OF COM.PARAMETER;

END_VAR

aComParams[1].udiParameterId := COM.CAA.Parameter_Con­stants.udiPort;

aComParams[1].udiValue := 1;

aComParams[2].udiParameterId := COM.CAA.Parameter_Con­stants.udiBaudrate;

aComParams[2].udiValue := 9600;

aComParams[3].udiParameterId := COM.CAA.Parameter_Con­stants.udiParity;

aComParams[3].udiValue := COM.PARITY.NONE;

aComParams[4].udiParameterId := COM.CAA.Parameter_Con­stants.udiStopBits;

aComParams[4].udiValue := COM.ONESTOPBIT;

aComParams[5].udiParameterId := COM.CAA.Parameter_Con­stants.udiTimeout;

aComParams[5].udiValue := 0;

aComParams[6].udiParameterId := COM.CAA.Parameter_Con­stants.udiByteSize;

aComParams[6].udiValue := 8;

aComParams[7].udiParameterId := COM.CAA.Parameter_Con­stants.udiBinary;

aComParams[7].udiValue := 0; // false

// Handshake Parameter

aComParams[8].udiParameterId := COM.CAA.Parameter_Con­stants.udiDtrControl;

aComParams[8].udiValue := 16#02; // handshake

aComParams[9].udiParameterId := COM.CAA.Parameter_Con­stants.udiOutxDsrFlow;

aComParams[9].udiValue := 1; // true

aComParams[10].udiParameterId := COM.CAA.Parameter_Con­stants.udiRtsControl;

aComParams[10].udiValue := 16#02; // handshake

aComParams[11].udiParameterId := COM.CAA.Parameter_Con­stants.udiOutxCtsFlow;

aComParams[11].udiValue := 1; // true

// …..

Software handshake:

VAR

aComParams : ARRAY [1..14] OF COM.PARAMETER;

END_VAR

aComParams[1].udiParameterId := COM.CAA.Parameter_Con­stants.udiPort;

aComParams[1].udiValue := 1;

aComParams[2].udiParameterId := COM.CAA.Parameter_Con­stants.udiBaudrate;

aComParams[2].udiValue := 9600;

aComParams[3].udiParameterId := COM.CAA.Parameter_Con­stants.udiParity;

aComParams[3].udiValue := COM.PARITY.NONE;

aComParams[4].udiParameterId := COM.CAA.Parameter_Con­stants.udiStopBits;

aComParams[4].udiValue := COM.ONESTOPBIT;

aComParams[5].udiParameterId := COM.CAA.Parameter_Con­stants.udiTimeout;

aComParams[5].udiValue := 0;

aComParams[6].udiParameterId := COM.CAA.Parameter_Con­stants.udiByteSize;

aComParams[6].udiValue := 8;

aComParams[7].udiParameterId := COM.CAA.Parameter_Con­stants.udiBinary;

aComParams[7].udiValue := 0; // false

// Handshake Parameter

aComParams[8].udiParameterId := COM.CAA.Parameter_Con­stants.udiInX;

aComParams[8].udiValue := 1; // true

aComParams[9].udiParameterId := COM.CAA.Parameter_Con­stants.udiXonChar;

aComParams[9].udiValue := 17;

aComParams[10].udiParameterId := COM.CAA.Parameter_Con­stants.udiXonLim;

aComParams[10].udiValue := 2048;

aComParams[11].udiParameterId := COM.CAA.Parameter_Con­stants.udiOutX;

aComParams[11].udiValue := 1; // true

aComParams[12].udiParameterId := COM.CAA.Parameter_Con­stants.udiXoffChar;

aComParams[12].udiValue := 19;

aComParams[13].udiParameterId := COM.CAA.Parameter_Con­stants.udiXoffLim;

aComParams[13].udiValue := 512;

aComParams[14].udiParameterId := COM.CAA.Parameter_Con­stants.udiTXContinueOnXoff;

aComParams[14].udiValue := 0; // false

// …..