找回密码
 立即注册
收起左侧

使用ReadFile读USB,USB没返回数据下程序就停了,如何处理??

2
回复
5382
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2018-8-25 17:37:55 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 yywork 于 2018-8-27 10:43 编辑

使用ReadFile读USB,USB有数据返回时,ReadFile正常返回USB数据,但是USB没有数据返回时就会一直处于等待状态,如何设置ReadFile超时处理???????????

  do    {        COMMTIMEOUTS   m_CommTimeouts;        m_CommTimeouts.ReadIntervalTimeout = 1000;        m_CommTimeouts.ReadTotalTimeoutMultiplier = 1000;        m_CommTimeouts.ReadTotalTimeoutConstant = 1000;        m_CommTimeouts.WriteTotalTimeoutMultiplier = 1000;        m_CommTimeouts.WriteTotalTimeoutConstant = 1000;        nReadFlag = GetCommTimeouts(hReadHandle,&m_CommTimeouts);        mReadFlag = ReadFile(hReadHandle,                                   ReadReportBuffer,                                   UsbSendLen,                                   NULL,                                   &osReader);       // USB没有数据返回时,此处一直处于等待状态,只有USB断开或有数据返回才往下走,如何设置超时????
        nLastError = WaitForSingleObject(osReader.hEvent,2000);       switch(nLastError)        {         ··············        }} while (!nFlag);

回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2018-8-25 18:20:22 显示全部楼层
这要是能看出来问题,我把这个问题打印到 A4 纸上直接吃掉 ~
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2018-8-27 10:44:26 显示全部楼层
Since 发表于 2018-8-25 18:20
这要是能看出来问题,我把这个问题打印到 A4 纸上直接吃掉 ~

使用ReadFile读USB,USB有数据返回时,ReadFile正常返回USB数据,但是USB没有数据返回时就会一直处于等待状态,如何设置ReadFile超时处理???????????

  do    {        COMMTIMEOUTS   m_CommTimeouts;        m_CommTimeouts.ReadIntervalTimeout = 1000;        m_CommTimeouts.ReadTotalTimeoutMultiplier = 1000;        m_CommTimeouts.ReadTotalTimeoutConstant = 1000;        m_CommTimeouts.WriteTotalTimeoutMultiplier = 1000;        m_CommTimeouts.WriteTotalTimeoutConstant = 1000;        nReadFlag = GetCommTimeouts(hReadHandle,&m_CommTimeouts);        mReadFlag = ReadFile(hReadHandle,                                   ReadReportBuffer,                                   UsbSendLen,                                   NULL,                                   &osReader);       // USB没有数据返回时,此处一直处于等待状态,只有USB断开或有数据返回才往下走,如何设置超时????
        nLastError = WaitForSingleObject(osReader.hEvent,2000);       switch(nLastError)        {         ··············        }} while (!nFlag);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了