酷德网

Kx-m3酷自造发布!
查看: 225|回复: 0

请教打开串口问题

[复制链接]

该用户从未签到

发表于 2019-4-9 16:22:42 | 显示全部楼层 |阅读模式
用codesys3.5,想实现打开串口收发数据,基本上是照搬的CAA_SerialCom.library里面的例程,但是配置好执行como1()como1.xErrorFALSEcomo1.eErrorNO_ERROR,应该没有错误,但是como1.xDoneFALSE,没有执行完成,并且como1.hCom句柄为0。收不到数据。
求高人指点。
变量:
PROGRAM MyReadWrite
VAR
        xDone : BOOL;
        aCom1Params : ARRAY [1..7] 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[1].udiParameterId := COM.CAA_Parameter_Constants.udiPort;
        aCom1Params[1].udiValue := 2;
        aCom1Params[2].udiParameterId := COM.CAA_Parameter_Constants.udiBaudrate;
        aCom1Params[2].udiValue := 9600;
        aCom1Params[3].udiParameterId := COM.CAA_Parameter_Constants.udiParity;
        aCom1Params[3].udiValue := COM.PARITY.NONE;
        aCom1Params[4].udiParameterId := COM.CAA_Parameter_Constants.udiStopBits;
        aCom1Params[4].udiValue := COM.STOPBIT.ONESTOPBIT;
        aCom1Params[5].udiParameterId := COM.CAA_Parameter_Constants.udiTimeout;
        aCom1Params[5].udiValue := 0;
        aCom1Params[6].udiParameterId := COM.CAA_Parameter_Constants.udiByteSize;
        aCom1Params[6].udiValue := 8;
        aCom1Params[7].udiParameterId := COM.CAA_Parameter_Constants.udiBinary;
        aCom1Params[7].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





cuowu.jpg
打赏鼓励一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则


顶部qrcode底部
关注酷德网订阅号,获取更多资讯!

QQ|小黑屋|手机版|Archiver|酷德论坛 ( 苏ICP备16065247号 )|网站地图

GMT+8, 2019-10-17 08:29 , Processed in 0.290967 second(s), 41 queries , MemCache On.

酷德网

© 2001-2013 Hicodesys. 技术支持 by 酷德网

快速回复 返回顶部 返回列表