haorenlei457 2015-12-06 06:14 采纳率: 0%
浏览 1462

c++ PC通过串口发送Versions命令给处于FTM模式的手机,希望得到手机版本信息

c++window api 实现pc与处于FTM模式的手机串口通信,处于FTM模式的手机通过usb线连接 PC,这根usb线是5ping的线,连上手机自动进入FTM模式,当我们向串口中写入Versions字符串时,从串口读出的是Versions字符串,而不是我们希望得到的手机版本信息,后来发现向串口写什么,从串口读取的就是什么,

    OVERLAPPED m_osRead;
    memset(&m_osRead,0,sizeof(OVERLAPPED));
    m_osRead.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);

    COMSTAT ComStat;
    DWORD dwErrorFlags;

    char str[1024];
    memset(str,'\0',1024);

    DWORD dwBytesRead=1024;//弄竊计
    BOOL bReadStat;

    ClearCommError(hcom,&dwErrorFlags,&ComStat);

    dwBytesRead=min(dwBytesRead, (DWORD)ComStat.cbInQue);

    bReadStat=ReadFile(hcom,str,dwBytesRead,&dwBytesRead,&m_osRead);

    PostMessage((unsigned int)str,0,0);

    if(!bReadStat)
    {AfxMessageBox("tom test");
        if(GetLastError()==ERROR_IO_PENDING)    //GetLastError()函数返回ERROR_IO_PENDING,表明串口正在进行读操作
        {   
            WaitForSingleObject(m_osRead.hEvent,5000);
            //使用WaitForSingleObject函数等待,直到读操作完成或延时已达到2秒钟
            //当串口读操作进行完毕后,m_osRead的hEvent事件会变为有信号
        }
    }

    PurgeComm(hcom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
    AfxMessageBox(str);
    UpdateData(FALSE);
  • 写回答

1条回答 默认 最新

  • 普通网友 2015-12-07 01:37
    关注

    调试看看哪里出错了.....

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料