佚名通过本文主要向大家介绍了windows串口编程,windows串口编程示例,windows下串口编程,windows 串口,windows串口irp等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于windows串口编程--求帮助啊!
描述:
①
hcom=CreateFile("COM1",
GENERIC_READ|GENERIC_WRITE,
0,NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
GetCommState(hcom,&dcb_xx);
====================================
②GetDefaultCommConfig("COM1",&cf,222);
====================================
其中,dcb_xx是一个DCB结构,cf是一个COMMCONFIG结构,且COM1是可以打开的。
请问 :
一、①的dcb_xx 与 ②的cf.dcb 里面的数据有什么区别?(换句话说 GetCommState 与 GetDefaultCommConfig有什么不同?)
二、以上两个的dcb结构里面的数据,哪个与 设备管理器(我的电脑->设备管理器..) 打开看到的数据一致?
解决方案1:
描述:
本帖最后由 qq_24114693 于 2016-07-28 21:57:40 编辑
windows串口编程_获取串口状态
学习串口编程时,遇到如下疑问,很久都没弄明白....请大家帮帮我!①
hcom=CreateFile("COM1",
GENERIC_READ|GENERIC_WRITE,
0,NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
GetCommState(hcom,&dcb_xx);
====================================
②GetDefaultCommConfig("COM1",&cf,222);
====================================
其中,dcb_xx是一个DCB结构,cf是一个COMMCONFIG结构,且COM1是可以打开的。
请问 :
一、①的dcb_xx 与 ②的cf.dcb 里面的数据有什么区别?(换句话说 GetCommState 与 GetDefaultCommConfig有什么不同?)
二、以上两个的dcb结构里面的数据,哪个与 设备管理器(我的电脑->设备管理器..) 打开看到的数据一致?
解决方案1:
看函数名也可猜到:GetCommState 得到通讯口状态。GetDefaultCommConfig 是设置通讯口默认参数的API,一般用不到它。
在建立连接时先使用GetCommState函数读出默认参数并修改,再用SetCommState函数写回即可。例:
// 设置端口
SetupComm(hCom,OUT_BUFF_SIZE,IN_BUFF_SIZE);
DCB myDCB;
GetCommState(hCom, &myDCB);
myDCB.BaudRate=m_sPortParam.baud; // 波特率
myDCB.fBinary=TRUE; // 通信方式=二进制
myDCB.fParity=FALSE; // 奇偶校验 TRUE=使用,FALSE=不使用
myDCB.Parity=m_sPortParam.parity; // 校验方式:0-无 1-奇 2-偶 3-标志 4-空格
myDCB.ByteSize=m_sPortParam.bytesize; // 数据位数
myDCB.StopBits=m_sPortParam.stopbits; // 停止位数:0-1位 1-1.5位 2-2位
if(!SetCommState(hCom, &myDCB))
{
// 设置参数失败
ErrorProc(ERROR_SET);
return;
}