|
我写了一个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语句里的对话框也没有弹出,应该是捕获不到异常吧。
但是线程为什么总是意外终止呢??
请各位大侠看看,可能是什么原因,怎么查出原因啊
小妹在此先谢过了
|
|