首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 用API 写串口通讯 出现ReadComm()不执行,事件消息我写好了,不明白为什么会出问题
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 21:28:42 楼主
    如题,我读的延时是0    写少许延时,请问 一般这种情况会是什么问题??
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 21:37:581楼 得分:0
    应该不会是延时这的问题,估计还是你的事件消息问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 22:06:372楼 得分:0
    应该事件有问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 22:29:263楼 得分:0
    下面是我线程的代码

    UINT CommProc(LPVOID pParam)
    {
    OVERLAPPED os;
    DWORD dwMask,dwTrans;
    COMSTAT ComStat;
    DWORD dwErrorFlags;

    CTTYDoc *pDoc=(CTTYDoc*)pParam;
    memset(&os,0,sizeof(OVERLAPPED));
    os.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);


    if(os.hEvent=NULL)
    {
    AfxMessageBox("can't creat event object");
    return (UINT)-1;
    }

    while(pDoc->m_bConnected)
    {
    ClearCommError(pDoc->m_hCom,&dwErrorFlags,&ComStat);
    if(ComStat.cbInQue)
    {
    WaitForSingleObject(pDoc->m_hPostMsgEvent,INFINITE);
    ResetEvent(pDoc->m_hPostMsgEvent);
    PostMessage(pDoc->m_hTermWnd,WM_COMMNOTIFY,EV_RXCHAR,0);
    continue;
    }
    dwMask=0;
    if(!WaitCommEvent(pDoc->m_hCom,&dwMask,&os))
    {
    if(GetLastError()==ERROR_IO_PENDING)
    GetOverlappedResult(pDoc->m_hCom,&os,&dwTrans,TRUE);
    else
    {
    CloseHandle(os.hEvent);
    return (UINT)-1;
    }
    }
    }
    CloseHandle(os.hEvent);
    return 0;
    }
    消息是


    LRESULT CTTYView::OnCommNotify(WPARAM wParam,LPARAM lParam)
    {
        char buf[MAXBLOCK/4];
    CString str;
    int nLength,nTextLength;
    CTTYDoc* pDoc=GetDocument();

    CEdit &edit=GetEditCtrl();

    if(!pDoc->m_bConnected ¦ ¦(wParam&EV_RXCHAR)!=EV_RXCHAR)
    {
    SetEvent(pDoc->m_hPostMsgEvent);
    return 0L;
    }
    nLength=pDoc->ReadComm(buf,100);
    if(nLength)
    {
    nTextLength=edit.GetWindowTextLength();
    edit.SetSel(nTextLength,nTextLength);

    for(int i=0;i <nLength;i++)
    {
    switch(buf[i])
    {
    case '\r':
    if(!pDoc->m_bNewLine)
    break;
    case '\n':
    str+="\r\n";
    break;
    case '\b':
    edit.SetSel(-1,0);
    edit.ReplaceSel(str);
    nTextLength=edit.GetWindowTextLength();
    edit.SetSel(nTextLength-1,nTextLength);
    edit.ReplaceSel("");
    str="";
    break;
    case '\a':
    MessageBeep((UINT)-1);
    break;
    default:
    str==buf[i];
    }
    }
    edit.SetSel(-1,0);
    edit.ReplaceSel(str);
    }
    SetEvent(pDoc->m_hPostMsgEvent);
    return 0L;
    }
    帮我看看会是什么问题  大概如果有兴趣的 请留下E -Mail我发代码给你    谢谢各位了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-22 09:42:484楼 得分:0
    自己顶一下,我有消息映射  有PostMessage
    还有消息函数 ,哪位能帮我看看上面  会不会有哪些遗漏啊
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved