串口设置的可能的顺序:
1.打开端口,CreateFile();
[获取当前串口状态到DCB结构中,GetCommState(hcom,&config_);][DCB,串行通信设备控制设置的定义]
2.配置DCB,设备控制块,结构数据.
3.设置串口超时结构构成员。
4.设置串口,SetupComm(); [为指定的通信设备,初始化通信参数]
5.设置串口状态, SetCommState(); [据设备控制块,配置通信设备。重新初始化所有硬件与控制设置,但不清空队列]
6.设置串口超时值, SetCommTimeouts();
7.清空串口缓存, PurgeComm(); [废弃所有输入、输出缓冲中的字符,对于特定的通信资源,终止未完成的读写操作。]
8.往串口写数据, WriteFile();
9.关闭串口, CloseHandle();
[12.15,2010]
----------------------------------------------------------------------------------------------------------------------
#include<windows.h>
#include<iostream>
#include<tchar.h>
//填充配置数据到缓冲区中
void coverConfig(BYTE *outData)
{
HANDLE hFile;
hFile=CreateFile(_T("F://workcode//2008cplus//sendRs232c//calibaration.cfg"),
GENERIC_READ|GENERIC_WRITE,
0,

本文分析了在串口通信中遇到的问题,指出可能的原因包括DCB结构成员设置不当、WriteFile函数的使用问题以及串口设置函数的顺序。重点关注的DCB成员有StopBits、fOutxCtsFlow和fOutxDsrFlow。当WriteFile导致进程挂起时,可能是由于等待数据集准备好或清除以发送的信号,导致进程无法结束。解决方法涉及系统级挂起和资源保护。
最低0.47元/天 解锁文章
3803

被折叠的 条评论
为什么被折叠?



