2012年11月20日星期二
如何检测电脑中串口是否可用
在MFC程序初始化的时候,自动检测系统的串口是否存在或者被占用,可以使用如下的方法:
在基于对话框的设计中,我们常采用MSComm控件作为串口接口使用,但该控件没有提供检测所使用串口是否可用的函数(例如,我们的笔记本中经常缺少COM1),从而使程序出现异常,造成系统初始化不正常,为了解决这个问题,同时使我们的程序有更好的交互性,我们可以采用如下的方法来实现这个判断。
并列举出我们电脑中到底有几个可用的串口,代码一般放在OnInitDialog()中:
HANDLE hCom; //定义一个句柄,用来接受CreateFile()的返回值
CString str; //存储设备名字的临时变量
int j=0; //记录已有的设备数
for(int i=1;i<20 i="i" nbsp="nbsp" span="span" style="color: lime;">//20>
假设计算机上有20个串口设备,一个一个的试
{
str.Format(_T("COM%d"),i);
hCom=CreateFile(str,GENERIC_READGENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
if(hCom != INVALID_HANDLE_VALUE) //如果设备纯在
{
m_cbPort.InsertString(j,str); //将设备的名字放到ComboBox中
j++;
}
CloseHandle(hCom);
}
if(j == 0) //如果没有一个设备,则显示无设备
{
m_cbPort.InsertString(j,_T("无设备"));
}
这里的CreateFile函数起了很大的作用,可以用来创建系统设备文件,如果该设备不存在或者被占用,则会返回一个错误,即下面的INVALID_HANDLE_VALUE,据此可以判断可使用性。详细参见MSDN中的介绍。
订阅:
博文评论 (Atom)
没有评论:
发表评论