串口编程需要注意的地方

        做过一系列的串口设备通信,一直都 CreateFile() 然后 WriteFile() ,完了就 CloseHandle();没出什么问题,这次做唯拓的一款LED顾客显示屏,依然这么做,因为事先使用过他们提供的 demo 程序测试过设备,因此写的 dll 也能正常被调用,交给其他同事使用,接好设备后显示正常的 0.00 ,调用我的程序后设备全暗,什么都不显示。
        用厂方的demo测试,设备又能显示,再调用我的程序,发现可以正常工作,厂方提供的文档也没做其他说明,只说设备通电后波特率被设置为 2400,不需要再设置。经过一番思索,应该还是在串口初始化上面有问题,于是找到一款串口数据检测工具 CommMonitor。

        调用我的程序串口数据传输情况如下图:

串口编程需要注意的地方 - mForestLaw - mForestLaws Blog

        打开厂方工具时所得串口数据传输如下图:

串口编程需要注意的地方 - mForestLaw - mForestLaws Blog

        我想问题应该就在此了,于是根据如上截图的信息,在程序中加了一段设置串口参数的代码

void InitializeComm(HANDLE& handle) {
    SetupComm(handle, 1024, 512);
    DCB dcb = {0};
    dcb.DCBlength = sizeof(DCB);
    dcb.BaudRate = CBR_2400;
    dcb.fBinary = 1;
    dcb.fParity = 1;
    dcb.fDtrControl = DTR_CONTROL_ENABLE;
    dcb.fRtsControl = RTS_CONTROL_DISABLE;
    dcb.XonLim = 256;
    dcb.XoffLim = 256;
    dcb.ByteSize = 8;
    dcb.Parity = NOPARITY;
    dcb.StopBits = ONESTOPBIT;
    dcb.XonChar = 17;
    dcb.XoffChar = 19;
    dcb.EofChar = 26;
    SetCommState(handle, &dcb);
}

OK,加入此段代码后再看串口数据传送情况如下图:

串口编程需要注意的地方 - mForestLaw - mForestLaws Blog

        程序也能正常控制设备了,所以串口通信时,如果出现莫名其妙的问题,应该查看一下是否为串口参数设置不正确。

转载于:https://www.cnblogs.com/mforestlaw/p/3289519.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值