如何实现串口通讯的连接超时问题,望高手指点 windows的Communications API中好像没有处理连接超时的。如我想呼叫另一台串口设备时,如果对方在一分钟内不应答(不连接),我将自动断掉这次连接,该如何做啊。我应该捕获那些消息。谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 串口通讯本来就没有超时这个概念什么叫做“呼叫另一台串口设备”?串口的操作只有打开、关闭、发送、接收数据。是不是把它理解成象TCP/IP网络协议一样?那就想歪了。 SetCommTimeouts()是对读写操作的,不是对连接操作的 通过重叠readfile操作,判断超时,然后关闭 BOOL WinComm::ReadComm(LPVOID lpBuffer,DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead,DWORD TIME_OUT){ BOOL bReadStatus; bReadStatus = ReadFile( hComm, lpBuffer, nNumberOfBytesToRead,lpNumberOfBytesRead,&ovRD); if( !bReadStatus ){ if ( ::GetLastError()== ERROR_IO_PENDING) { if(::WaitForSingleObject(ovRD.hEvent,TIME_OUT)==WAIT_FAILED ) return FALSE; if(GetOverlappedResult(hComm, &ovRD,lpNumberOfBytesRead, FALSE)) return TRUE ; } } return FALSE;} 程序里加个Timer就得了.自己慢慢判断 串口的连接超时概念是很久以前计算机刚出现时,许多设备如键盘等都是通过串口连接到计算机的,那时有连接超时这个概念,为的是在设备失灵时能主动发现。现在PC发展到今天,早已不用了,但由于软件的连贯性,这个概念还保留到现在,但早已无意义了。lz想实现设备无响应时断掉连接,就简单的关掉句柄就行了。首先定义一个握手机制,向设备发出一个命令,如果设备正常就回答一个命令,然后定义一个定时器,或规定一个次数,在指定的时间内或连续发指定次数的命令都没有应答,就认为连接失败,关掉串口。 关于平面旋转和向量分解的数学问题(高等数学和立体几何好的大侠请进) 初学COM,请问谁有<<COM编程精彩实例>>光盘的代码提供? 不明白style &= ~(WS_MINIMIZEBOX);是什么意思? 不解?? 怎样用MSComm控件向串口2发送数据? 寻找能够编辑的list 如何在win98/2k下面禁止网络设备(VC中) ●●有没有计算时间差的函数?●● 如何在多文档的主窗体中放一张背景图片 学Visual C++ ,从初学到入门要花多长时间? 我的View类是从CEditView类继承的。。。。。。。。。。。 100分求《COM编程精彩实例》源代码
什么叫做“呼叫另一台串口设备”?
串口的操作只有打开、关闭、发送、接收数据。
是不是把它理解成象TCP/IP网络协议一样?那就想歪了。
{ BOOL bReadStatus; bReadStatus = ReadFile( hComm, lpBuffer, nNumberOfBytesToRead,lpNumberOfBytesRead,&ovRD);
if( !bReadStatus ){ if ( ::GetLastError()== ERROR_IO_PENDING)
{
if(::WaitForSingleObject(ovRD.hEvent,TIME_OUT)==WAIT_FAILED ) return FALSE;
if(GetOverlappedResult(hComm, &ovRD,lpNumberOfBytesRead, FALSE)) return TRUE ;
} }
return FALSE;
}
首先定义一个握手机制,向设备发出一个命令,如果设备正常就回答一个命令,然后定义一个定时器,或规定一个次数,在指定的时间内或连续发指定次数的命令都没有应答,就认为连接失败,关掉串口。