【MFC中 串口通信 怎么检测是否连接成功】

怎么检测串口通信是否连接成功,我是在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,点击按钮之后,执行上面的函数。为什么不提示失败呢?我还没有把设备连接到串口上,上面执行也是正确的。
现在我就是想怎么能检测串口是否连接成功了,思路也可以,具体一点,我只剩下这点分了,不要嫌弃,谢谢了。在线等。。。

第1个回答  2013-10-16
你是想怎样判断电脑和设备之间是否建立连接了吗? 这需要下位机支持握手协议,你发送一串数据值设备如何收到设备返回的数据帧就判断为连接成功,否则连接失败。
因为你电脑存在COM1所以执行上述代码COM1被成功打开了当然不会提示失败!
第2个回答  2013-10-16
    if(hCom == INVALID_HANDLE_VALUE)

    {

        AfxMessageBox(_T("COM Open failed!"));

        return ;

    }

这里就已经检测是否成功了.如果不提示失败是不是你的这个端口有接别的东西?我用的就是这句.好用的.具体是不是你电脑的问题.如果注册列表能找到.说明他就是可工作的吧.我这里把设备移除了就找不到可用的COM了.

追问

怎么移除串口上的设备,具体怎么做,用什么函数,求解。

第3个回答  2013-10-24
你的代码只是打开串口,只要该串口可用,就可以成功打开,就算该串口不链接任何设备.

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网