3891|7

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助:wince读外部设备进程意外终止 [复制链接]

我写了一个SPI驱动,运行在s3c2410上。

在microsoft embedded visual c++中做了一个MFC程序,在打开驱动函数中写了
void CTestSPIDlg::OnOpen()
{
        DWORD IDThread;
        HANDLE hReadSPIThread;

        hFile=CreateFile(TEXT("SPI1:"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);//打开spi 设备
        if(hFile==INVALID_HANDLE_VALUE)
        {
                MessageBox(_T("打开SPI驱动失败!"));
                return;
        }
        else
                MessageBox(_T("打开SPI驱动成功!"));
       
        hReadSPIThread=CreateThread(0,0,ReadSPIThread,(LPVOID)this,0,&IDThread);
        if(hReadSPIThread==NULL)
        {
                CloseHandle(hFile);
                hFile=INVALID_HANDLE_VALUE;
                MessageBox(_T("CREATE THREAD FAILED!"));
                return;       
        }
        CloseHandle(hReadSPIThread);


}
创建的ReadSPIThread线程函数是:
DWORD CTestSPIDlg::ReadSPIThread(LPVOID lparam)
{
         CTestSPIDlg *pthis=(CTestSPIDlg *)lparam;
        BYTE recbuf[50];
        while(1)
        {
                if(hFile==INVALID_HANDLE_VALUE)
                {
                        pthis->MessageBox(_T("FILE HANDLE LOST"));
                        break;
                }
         
        try
        {
                RetRead=ReadFile(hFile,recbuf,len,&actlen,NULL);
        }
        catch(CFileException *e)
        {
                pthis->MessageBox(_T("READFILE FAILED!"));
                e->Delete();
        }
         。。。。。。。。。。。。。。。
}
在执行过程中,线程总是意外终止,就不能从SPI 线上读到数据了。用try和catch 语句后,catch语句里的对话框也没有弹出,应该是捕获不到异常吧。

但是线程为什么总是意外终止呢??

请各位大侠看看,可能是什么原因,怎么查出原因啊
小妹在此先谢过了
此帖出自WindowsCE论坛

最新回复

谢谢91program,我试试。。。。 感觉这个问题挺奇怪,不知是不是和硬件有关系,信号上噪声大而导致的??  详情 回复 发表于 2009-9-17 16:48
点赞 关注
 

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
又是小妹??

嘿嘿,小妹的要回。
你的班子的串口打印出异常信息了吗?一般在这种情况下都会推出的。
此帖出自WindowsCE论坛
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
呵呵呵呵,谢谢回复啊

串口没有打印任何信息
不过我在应用程序里也没有用uart输出任何信息啊,,,驱动也没写什么retailmessage函数
要打印的话在哪加信息啊,应用程序还是驱动程序中???
此帖出自WindowsCE论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

4
 
>> 意外终止
是线程不存在了还是不执行呀?
一般情况下,意外终止的话系统都会打印出来一些信息才对
此帖出自WindowsCE论坛
 
 
 

回复

97

帖子

7

TA的资源

一粒金砂(初级)

5
 

感谢guopeixin兄:

今天又测了下,线程存在但不执行了

很奇怪的一个现象就是,线程运行一分钟,有时候运行1个多小时都没问题。
此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
难道是内存泄露
此帖出自WindowsCE论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
在线程内多增加一些输入语句,看看执行到哪里停止运行的
此帖出自WindowsCE论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢91program,我试试。。。。

感觉这个问题挺奇怪,不知是不是和硬件有关系,信号上噪声大而导致的??
此帖出自WindowsCE论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表