8003|12

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

打开串口成功,但是ReadFile确不成功,为什么 [复制链接]

我在WinCE下作GSM打电话程序,有CreateFile可以打开串口,但是在串口接收线程里用ReadFile读数据却不成功
但是CreateFiel打开串口确实成功了啊,用GetLastError得到的错误码是:〖6〗-句柄无效。为什么

下面是我的程序

BOOL fReadState = ReadFile(pCeSerial->m_hComm, recvBuf, 256, &dwLength, NULL);
                                   
if(!fReadState)
{
                                                               
AfxMessageBox(_T("无法从串口读取数据!"));
                               
}

最新回复

句柄检测是否正确,句柄无效条件:if(hCom == (HANDLE)-1)   详情 回复 发表于 2009-8-25 11:11
点赞 关注

回复
举报

81

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
看看pCeSerial->m_hComm的值是否被非法改动过?
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
波特率是否正确
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
先用 WinCE 上的串口调试助手看看能否正常使用串口?
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
m_hComm 的值是什么呢, 0xffffffff吗
注意设置下波特率
还有用GetLastError查看下CreateFile的返回值
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
m_hComm是1122386670,不是空的啊,就是ReadFile不行
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 
检查驱动的读写接口,还有CreateFile的返回是否成功检测值是INVALID_HANDLE_VALUE而不是NULL哦,如果你认为CreateFile!=NULL就是成功,那你就错了,呵呵
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

8
 
友情帮顶
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
********************************************************************************************/
DWORD CProjectDlg::CommRecvTread(LPVOID lparam)
{
        DWORD dwLength;
        BYTE *recvBuf = new BYTE[16];
        CProjectDlg *pDlg = (CProjectDlg*)lparam;

        while(TRUE)
        {                                                                                                                                /* 等待线程退出事件 */
                if (WaitForSingleObject(pDlg->m_ExitThreadEvent, 0) == WAIT_OBJECT_0)
                        break;       

                if (pDlg->m_hComm != INVALID_HANDLE_VALUE)
                {                                                                                                                        /* 从串口读取数据 */
                        BOOL fReadState = ReadFile(pDlg->m_hComm, recvBuf, 16, &dwLength, NULL);
                        if(!fReadState)
                        {
                                //MessageBox(_T("无法从串口读取数据!"));
                        }
                        else
                        {
                                if(dwLength != 0)
                                {
                                        OnCommRecv(pDlg, recvBuf,pDlg->RecvCOMData, 16);                        /* 接收成功调用回调函数 */
                                        PurgeComm(pDlg->m_hComm,   PURGE_RXCLEAR   |   PURGE_TXCLEAR   );
                                        SetCommMask   (pDlg->m_hComm,   EV_RXCHAR   |   EV_CTS   |   EV_DSR   );
                                }
                        }
                }
        }               
    //  SetEvent(pDlg->m_ExitThreadEvent);/////对事件对象标识
        delete[] recvBuf;
        return 0;
}
我写的接收函数
参考一下
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(中级)

10
 
我写的跟楼上的差不多一样啊,另外我也是用INVALID_HANDLE_VALUE判断CreateFile返回句柄是否为空,的确不是空的,但是就是ReadFile不成功,苦恼啊
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 3 楼 vbprofan 的回复:
先用 WinCE 上的串口调试助手看看能否正常使用串口?


我被无视了。。。
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

12
 
WinCE 下的串调在这里下载:

http://www.cnblogs.com/we-hjb/archive/2008/12/14/1354871.html
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

13
 
句柄检测是否正确,句柄无效条件:if(hCom == (HANDLE)-1)
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表