异步串口通讯无法实现,该如何处理

异步串口通讯无法实现
小弟初次接触异步串口通讯程序,在以下在代码中新创立的进程函数中全局变量bConnected没传递过来,不知为何?请大家帮忙,谢谢
代码如下:
// test2.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "windows.h"
#include <string>
#include "Shlwapi.h"
using namespace std;
#define MAXBLOCK 2048
#define XON 0x11
#define XOFF 0x13

volatile BOOL m_bConnected;//
volatile HANDLE m_hSPCom;//
OVERLAPPED m_osRead,m_osWrite;
int m_nBaud,m_nDataBits,m_nFlowCtrl;
char * m_sPort;
char * m_sParity;
char * m_sStopBits;
char * m_sSendMsg;
string temp;
DWORD Len;
HANDLE m_pThread;
HANDLE m_hThread; // this thread's HANDLE
DWORD WINAPI SPCommProc(
  LPVOID lpParameter // thread data
);
BOOL OnInit()
{
m_bConnected=FALSE;
m_pThread=NULL;
temp="COM1";
temp.append(1,'\0');
m_sPort=(char*)temp.begin();
m_nBaud=1200;
m_nDataBits=8;
temp="None";
temp.append(1,'\0');
m_sParity=(char*)temp.begin();
temp="1";
temp.append(1,'\0');
m_sStopBits=(char*)temp.begin();
m_nFlowCtrl=0;
temp="";
temp.append(1,'\0');
m_sSendMsg=(char*)temp.begin();
Len=temp.size();

memset(&m_osRead,0,sizeof(OVERLAPPED));
memset(&m_osWrite,0,sizeof(OVERLAPPED));
if(!(m_osRead.hEvent=CreateEvent(NULL,TRUE,TRUE,NULL))) return FALSE;
if(!(m_osWrite.hEvent=CreateEvent(NULL,TRUE,TRUE,NULL))) return FALSE;
return TRUE;
}
BOOL ConfigConnection()
{
DCB dcb;
if(!GetCommState(m_hSPCom,&dcb)) return FALSE;//获取通讯设备状态
dcb.fBinary=TRUE;
dcb.BaudRate=m_nBaud;
dcb.ByteSize=m_nDataBits;
dcb.fParity=TRUE;
if(strcmp(m_sParity,"None")==0) dcb.Parity=NOPARITY;
else if(strcmp(m_sParity,"Even")==0) dcb.Parity=EVENPARITY;
else if(strcmp(m_sParity,"Odd")==0) dcb.Parity=ODDPARITY;
if(strcmp(m_sStopBits,"1")==0) dcb.StopBits=ONESTOPBIT;
else if(strcmp(m_sStopBits,"1.5")==0) dcb.StopBits=ONE5STOPBITS;
else if(strcmp(m_sStopBits,"2")==0) dcb.StopBits=TWOSTOPBITS;
dcb.fOutxCtsFlow=dcb.fRtsControl=(m_nFlowCtrl==1);
dcb.fInX=dcb.fOutX=(m_nFlowCtrl==2);
dcb.XonChar=XON;
dcb.XoffChar=XOFF;
dcb.XonLim=dcb.XoffLim=50;
return SetCommState(m_hSPCom,&dcb);//设置通讯设备状态
}
void OnSpConnect() 
{
COMMTIMEOUTS TimeOuts;

if(m_bConnected) return;
m_hSPCom=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);//创建异步端口对象
if(m_hSPCom==INVALID_HANDLE_VALUE)
{
FatalAppExit(0,"Can't open connection!");
return;
}

SetupComm(m_hSPCom,MAXBLOCK,MAXBLOCK);//初始化串口参数
SetCommMask(m_hSPCom,EV_RXCHAR);//指定监控通讯设备事件类型
TimeOuts.ReadIntervalTimeout=MAXDWORD;
TimeOuts.ReadTotalTimeoutConstant=0;
TimeOuts.ReadTotalTimeoutMultiplier=0;
TimeOuts.WriteTotalTimeoutConstant=2000;
TimeOuts.WriteTotalTimeoutMultiplier=50;
SetCommTimeouts(m_hSPCom,&TimeOuts);//设置通讯设备超时参数
//m_bConnected
if(ConfigConnection())//设置COM口基本参数
{//开启异步数据读取线程
m_pThread=CreateThread(NULL,0,SPCommProc,NULL,CREATE_SUSPENDED,NULL);
// m_pThread=AfxBeginThread(SPCommProc,this,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL);
//SPCommProc()实现端口首次操作
if(m_pThread==NULL)//
{
CloseHandle(m_hSPCom);
FatalAppExit(0,"Can't open connection!");
return;
}
else
{
m_bConnected=TRUE;
ResumeThread(m_pThread); //恢复COM

}
CloseHandle(m_pThread);
}
else{
CloseHandle(m_hSPCom);
FatalAppExit(0,"Can't open connection!");
return;
}

}
void OnSpDisconnect()