怎么检测串口通信是否连接成功,我是在VS2010中做的一个单文档程序,有个按钮点击之后就会执行下面函数:
void CTranslate::SetCom(CString hPort)
{
DCB dcb;
COMMTIMEOUTS TimeOuts;
hCom = CreateFile((LPCTSTR)(hPort),
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if(hCom == INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("COM Open failed!"));
return ;
}
SetupComm(hCom,1024,1510);
TimeOuts.ReadIntervalTimeout=MAXDWORD;
TimeOuts.ReadTotalTimeoutMultiplier=0;
TimeOuts.ReadTotalTimeoutConstant=0;
TimeOuts.WriteTotalTimeoutMultiplier=100;
TimeOuts.WriteTotalTimeoutConstant=500;
SetCommTimeouts(hCom,&TimeOuts);
GetCommState(hCom,&dcb);
dcb.BaudRate=115200;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
SetCommState(hCom,&dcb);
}
hPort的值:通过查找注册表找到系统中可用的串口有:COM1,COM3。
我随便选择一个COM1,点击按钮之后,执行上面的函数。为什么不提示失败呢?我还没有把设备连接到串口上,上面执行也是正确的。
现在我就是想怎么能检测串口是否连接成功了,思路也可以,具体一点,我只剩下这点分了,不要嫌弃,谢谢了。在线等。。。
因为你电脑存在COM1所以执行上述代码COM1被成功打开了当然不会提示失败!
{
AfxMessageBox(_T("COM Open failed!"));
return ;
}
这里就已经检测是否成功了.如果不提示失败是不是你的这个端口有接别的东西?我用的就是这句.好用的.具体是不是你电脑的问题.如果注册列表能找到.说明他就是可工作的吧.我这里把设备移除了就找不到可用的COM了.
追问怎么移除串口上的设备,具体怎么做,用什么函数,求解。