Просьба подсказать, что делаю не так. Хэндл=0; Ошибка открытия порта fb_COMopen.xError.
0: fb_COMopen (xExecute:=FALSE);
fb_COMclose (xExecute:=FALSE);
PrevState:=State;State:=1;
1: Close();
2: (*Открываем порт*)
Settings();
Open();
------------------------------------------------
Код ComClose:
IF com_handle>0 AND com_handle<16#FFFFFFFF THEN
fb_COMclose.hCom := com_handle;
fb_COMclose.xExecute := TRUE;
fb_COMclose();
ELSE
PrevState:=State;State:=2;
END_IF
IF fb_COMclose.xDone THEN
fb_COMclose(xExecute := FALSE);
AddLog('Closed com');
PrevState:=State;State:=2;
END_IF;
------------------------------------------------
Код ComOpen:
fb_COMopen.usiListLength := UINT_TO_USINT(SIZEOF(aComParams) / SIZEOF(COM.PARAMETER));
fb_COMopen.pParameterList := ADR(aComParams);
fb_COMopen.xExecute := TRUE;
fb_COMopen();
IF fb_COMopen.xDone AND fb_COMopen.xExecute THEN
fb_COMopen(xExecute:=FALSE);
com_handle := fb_COMopen.hCom;
IF com_handle<>0 AND com_handle<>16#FFFFFFFF THEN
AddLog(concat('Opened com h=',UDINT_TO_STRING(com_handle)));
PrevState:=State;State:=2;
ELSE
PrevState:=State;State:=0;
END_IF
END_IF
IF fb_COMopen.xError AND fb_COMopen.xExecute THEN
fb_COMopen(xExecute:=FALSE);
PrevState:=State;State:=0;
AddLog('Error open com');
END_IF
----------------------------------
settings:
aComParams[1].udiParameterId := COM.CAA_Parameter_Constants.udiPort;
aComParams[1].udiValue := 2;
aComParams[2].udiParameterId := COM.CAA_Parameter_Constants.udiBaudrate;
aComParams[2].udiValue := 9600;
aComParams[3].udiParameterId := COM.CAA_Parameter_Constants.udiParity;
aComParams[3].udiValue := ANY_TO_UDINT(COM.PARITY.NONE);
aComParams[4].udiParameterId := COM.CAA_Parameter_Constants.udiByteSize;
aComParams[4].udiValue := 8;
aComParams[5].udiParameterId := COM.CAA_Parameter_Constants.udiStopBits;
aComParams[5].udiValue := ANY_TO_UDINT(COM.STOPBIT.ONESTOPBIT);