不知道有那位兄弟碰到过串口打开 CreateFile 的时候假死的情况 你CreateFile的参数又是怎么设置的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 FAT系统中可能引起死锁,网络文件也可能。http://support.microsoft.com/kb/326493/en-us //设置串口名 TCHAR szPort[15]; wsprintf(szPort, L"COM%d:", gPortNo); //打开串口 HANDLE hComm = CreateFile( szPort, GENERIC_READ | GENERIC_WRITE, //允许读和写 0, //独占方式(共享模式) NULL, OPEN_EXISTING, //打开而不是创建(创建方式) NULL, NULL ); CloseHandle(hComm); BOOL gIsOpenSuccess = FALSE;// 检测串口是否能打开DWORD CSeries::OpenThreadFunc(LPVOID lparam){ //设置串口名 TCHAR szPort[15]; wsprintf(szPort, L"COM%d:", (UINT)lparam); //打开串口 HANDLE hComm = CreateFile( szPort, GENERIC_READ | GENERIC_WRITE, //允许读和写 0, //独占方式(共享模式) NULL, OPEN_EXISTING, //打开而不是创建(创建方式) NULL, NULL ); CloseHandle(hComm); gIsOpenSuccess = TRUE; return 0;}int CSeries::OpenPort(HWND hOwner,UINT portNo,UINT baud,UINT parity,UINT databits,UINT stopbits){ m_hOwner = hOwner; // 已经打开的话,直接关闭 if (m_hComm != INVALID_HANDLE_VALUE) { //关闭串口 CloseHandle (m_hComm); m_hComm = INVALID_HANDLE_VALUE; m_bOpened = FALSE; } // 开个线程打开串口测试 DWORD dwOpenThreadID; gIsOpenSuccess = FALSE; HANDLE hThreadOpen = CreateThread(NULL,0,OpenThreadFunc,&portNo,0,&dwOpenThreadID); DWORD dwTime = GetTickCount(); while(!gIsOpenSuccess && ((GetTickCount()-dwTime)<2000)) Sleep(100); TerminateThread(hThreadOpen,0); hThreadOpen = NULL; dwOpenThreadID = NULL; if (!gIsOpenSuccess) return FALSE; //设置串口名 TCHAR szPort[15]; wsprintf(szPort, L"COM%d:", portNo); //打开串口 m_hComm = CreateFile( szPort, GENERIC_READ | GENERIC_WRITE, //允许读和写 0, //独占方式(共享模式) NULL, OPEN_EXISTING, //打开而不是创建(创建方式) NULL, NULL ); 当卡死在那个线程里面时,我想结束进程都不行。用exit(0)都不行。求解,谢谢 遇到一个奇怪的问题,求高手花点时间看一下。。。万谢!! 如何检查 某个域组 是否加入到本地某个组 无法解析的外部符号 咋回事儿呢?该咋办? 怎么屏蔽ListControl的横向滚动条 中秋散分 vc中如何获得当前目录并将其保存? 如何用对话框模拟文档/视图结构 请教一个小问题...... ini文件的删除怎么实现? 关于不可重复执行程序的实现,各位大侠帮忙呀! ActiveX重绘按钮CButton 在Firefox、Chrome的ActiveX控件无法使用CInternetSession
http://support.microsoft.com/kb/326493/en-us
TCHAR szPort[15];
wsprintf(szPort, L"COM%d:", gPortNo);
//打开串口
HANDLE hComm = CreateFile(
szPort,
GENERIC_READ | GENERIC_WRITE, //允许读和写
0, //独占方式(共享模式)
NULL,
OPEN_EXISTING, //打开而不是创建(创建方式)
NULL,
NULL
);
CloseHandle(hComm);
// 检测串口是否能打开
DWORD CSeries::OpenThreadFunc(LPVOID lparam)
{
//设置串口名
TCHAR szPort[15];
wsprintf(szPort, L"COM%d:", (UINT)lparam);
//打开串口
HANDLE hComm = CreateFile(
szPort,
GENERIC_READ | GENERIC_WRITE, //允许读和写
0, //独占方式(共享模式)
NULL,
OPEN_EXISTING, //打开而不是创建(创建方式)
NULL,
NULL
);
CloseHandle(hComm);
gIsOpenSuccess = TRUE;
return 0;
}
int CSeries::OpenPort(HWND hOwner,UINT portNo,UINT baud,UINT parity,UINT databits,UINT stopbits)
{
m_hOwner = hOwner; // 已经打开的话,直接关闭
if (m_hComm != INVALID_HANDLE_VALUE)
{
//关闭串口
CloseHandle (m_hComm); m_hComm = INVALID_HANDLE_VALUE;
m_bOpened = FALSE;
} // 开个线程打开串口测试
DWORD dwOpenThreadID;
gIsOpenSuccess = FALSE;
HANDLE hThreadOpen = CreateThread(NULL,0,OpenThreadFunc,&portNo,0,&dwOpenThreadID);
DWORD dwTime = GetTickCount();
while(!gIsOpenSuccess && ((GetTickCount()-dwTime)<2000))
Sleep(100);
TerminateThread(hThreadOpen,0);
hThreadOpen = NULL;
dwOpenThreadID = NULL; if (!gIsOpenSuccess)
return FALSE; //设置串口名
TCHAR szPort[15];
wsprintf(szPort, L"COM%d:", portNo);
//打开串口
m_hComm = CreateFile(
szPort,
GENERIC_READ | GENERIC_WRITE, //允许读和写
0, //独占方式(共享模式)
NULL,
OPEN_EXISTING, //打开而不是创建(创建方式)
NULL,
NULL
);