BOOL bSuccess = ReadFile(m_hComm, lpBuf, dwCount, &dwBytesRead, &overlapped);
dwSignaledHandle=::WaitForMultipleObjects(3,WaitHandles,false,INFINITE); 或
this->m_pPort->GetSerialPort()->GetOverlappedResult(overlapped,this->m_InBufferCount,false)这个两个函数(WaitForMultipleObject or GetOverlappedResult),它会以COMMTIMEOUTS中设置的timeout来返回吗?
也就是说Overlapped中的Event是在什么时候激活的。
比方说我要读1000bytes,是否等我读完1000个才叫IO操作结束,
还是有timeout (IO操作的timeout)到了就有event激活
dwSignaledHandle=::WaitForMultipleObjects(3,WaitHandles,false,INFINITE); 或
this->m_pPort->GetSerialPort()->GetOverlappedResult(overlapped,this->m_InBufferCount,false)这个两个函数(WaitForMultipleObject or GetOverlappedResult),它会以COMMTIMEOUTS中设置的timeout来返回吗?
也就是说Overlapped中的Event是在什么时候激活的。
比方说我要读1000bytes,是否等我读完1000个才叫IO操作结束,
还是有timeout (IO操作的timeout)到了就有event激活
解决方案 »
- 在MFC中窗口问题,高手帮忙下。。
- 做了一个尺子工具,分享给大家
- 初学者问:如何将表中的数据读到EDIT BOX中去?
- 碰到一个古怪的问题,在对话框主界面,按回车竟然自动结束程序,不是wm_close或者ONCLOSE,而是直接的WM_destroy
- SDK问题~~~
- 游戏控制器属性页问题
- 高分求救!m_ofn结构问题,附源码-〉
- 在CScrollView中的按钮不随滚动条一起走怎么办?
- 那里有用VC编写DLL的书籍下(100)!
- 如何检测是否安装了打印机?(without doc/view)
- 一个简单的vc问题。。
- 我下了VS.net2003,只有一个ISO,我用daemon装,中途让我换碟,怎么办?
当读文件(端口)的操作完成后,overlapped中的event才会被置为有信号。
你可以等待这个event来判断是否完成操作。
定义的就是从读取一个字符开始,到接收到第二个字符的最大时间间隔,如果这个时间
间隔超过次最大间隔,就意味着ReadFile操作完成,然后设置event为有信号。
WaitForSingleObject或WaitForMutipleObject函数的超时是定义的是从代码
运行到这里时开始,到等待的信号量有信号的最大时间间隔,如实际间隔大于这个间隔,
就返回WAIT_TIMEOUT。
我问的就是Event为有信号的条件(针对serial port)
是否是:
一。读完/写完 指定字节数,就会设置event为有信号。
二。出现读/写 timeout(COMMTIMEOUTS定义的超时).
读写操作超时也会设置event为有信号。