请教打开串口问题
用codesys3.5,想实现打开串口收发数据,基本上是照搬的CAA_SerialCom.library里面的例程,但是配置好执行como1(),como1.xError为FALSE,como1.eError为NO_ERROR,应该没有错误,但是como1.xDone为FALSE,没有执行完成,并且como1.hCom句柄为0。收不到数据。求高人指点。
变量:
PROGRAM MyReadWrite
VAR
xDone : BOOL;
aCom1Params : ARRAY OF COM.PARAMETER;
como1 : COM.Open;
comc1 : COM.Close;
comw1 : COM.Write;
comError1: COM.ERROR;
sWrite : STRING := 'Test String der L?nge 25!';
sRead : STRING(25);
szRead : CAA.SIZE;
xCom1OpenError : BOOL;
xCom1CloseError : BOOL;
xCom1WriteError : BOOL;
END_VAR
程序:
CASE GVL_MyVar.uiComState OF
0:
aCom1Params.udiParameterId := COM.CAA_Parameter_Constants.udiPort;
aCom1Params.udiValue := 2;
aCom1Params.udiParameterId := COM.CAA_Parameter_Constants.udiBaudrate;
aCom1Params.udiValue := 9600;
aCom1Params.udiParameterId := COM.CAA_Parameter_Constants.udiParity;
aCom1Params.udiValue := COM.PARITY.NONE;
aCom1Params.udiParameterId := COM.CAA_Parameter_Constants.udiStopBits;
aCom1Params.udiValue := COM.STOPBIT.ONESTOPBIT;
aCom1Params.udiParameterId := COM.CAA_Parameter_Constants.udiTimeout;
aCom1Params.udiValue := 0;
aCom1Params.udiParameterId := COM.CAA_Parameter_Constants.udiByteSize;
aCom1Params.udiValue := 8;
aCom1Params.udiParameterId := COM.CAA_Parameter_Constants.udiBinary;
aCom1Params.udiValue := 0;
como1.usiListLength := SIZEOF(aCom1Params)/SIZEOF(COM.PARAMETER);
como1.pParameterList := ADR(aCom1Params);
como1.xExecute := TRUE;
como1();
IF como1.xError THEN
xCom1OpenError := TRUE;
GVL_MyVar.uiComState := 1000;
END_IF
comError1 := como1.eError;
IF como1.xDone THEN
GVL_MyVar.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
GVL_MyVar.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
GVL_MyVar.uiComState := 1000;
END_IF
1000:
xDone := TRUE;
ELSE
GVL_MyVar.uiComState := 0;
END_CASE
页:
[1]