您的位置:首页 > 编程语言

串口编程需要注意的地方

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

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



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



        我想问题应该就在此了,于是根据如上截图的信息,在程序中加了一段设置串口参数的代码
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,加入此段代码后再看串口数据传送情况如下图:



        程序也能正常控制设备了,所以串口通信时,如果出现莫名其妙的问题,应该查看一下是否为串口参数设置不正确。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: