求助:wince读外部设备进程意外终止

绝缘胶布   2009-9-15 17:03 楼主
我写了一个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语句里的对话框也没有弹出,应该是捕获不到异常吧。

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

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

回复评论 (7)

又是小妹??

嘿嘿,小妹的要回。
你的班子的串口打印出异常信息了吗?一般在这种情况下都会推出的。
点赞  2009-9-15 17:04
呵呵呵呵,谢谢回复啊

串口没有打印任何信息
不过我在应用程序里也没有用uart输出任何信息啊,,,驱动也没写什么retailmessage函数
要打印的话在哪加信息啊,应用程序还是驱动程序中???
点赞  2009-9-15 17:15
>> 意外终止
是线程不存在了还是不执行呀?
一般情况下,意外终止的话系统都会打印出来一些信息才对
点赞  2009-9-15 18:03

感谢guopeixin兄:

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

很奇怪的一个现象就是,线程运行一分钟,有时候运行1个多小时都没问题。
点赞  2009-9-16 16:56
难道是内存泄露
点赞  2009-9-16 17:03
在线程内多增加一些输入语句,看看执行到哪里停止运行的
点赞  2009-9-16 20:24
谢谢91program,我试试。。。。

感觉这个问题挺奇怪,不知是不是和硬件有关系,信号上噪声大而导致的??
点赞  2009-9-17 16:48
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复