怎么样才能知道我的线程函数到底有没有起作用?
要实现pc机之间的通信
void CPC2PCView::OnOpencom()
{
//打开串口操作
hCom=CreateFile(myCom,
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
NULL);
if(hCom!=INVALID_HANDLE_VALUE)
{
//成功打开串口,执行以下操作
SetupComm(hCom,1500,1500);//设置发送缓冲时间1.5s,接收缓冲时间1.5s
DCB myDCB;
GetCommState(hCom,&myDCB);//获取当前串口参数
myDCB.BaudRate=myBaudRate;
myDCB.fBinary=TRUE;
myDCB.fParity=myfParity;
myDCB.ByteSize=8;
myDCB.Parity=myParity;
myDCB.StopBits=ONESTOPBIT;
SetCommState(hCom,&myDCB);//设置串口通信参数
blnOpened=true;
//创建并立即执行线程函数
DWORD dwParam;
//设置允许的事件类型
/*if((!SetCommMask(hCom,EV_RXCHAR))|EV_TXEMPTY)*/
if(!SetCommMask(hCom,EV_RXCHAR|EV_TXEMPTY))
{
AfxMessageBox("建立事件掩码失败!");
}
hThreadEvent=CreateThread(NULL,//创建事件线程
0,
//指定线程函数名称
(LPTHREAD_START_ROUTINE)(ThreadProcEvent),
&dwParam,
0,//创建线程函数后,立即执行
&dwThreadID);
if(hThreadEvent==INVALID_HANDLE_VALUE)
{
AfxMessageBox("事件线程创建失败!");
}
fEventRun=true;//允许事件函数执行循环体
bytActStatus=10;//操作状态设为接收状态
bytSendStatus=0;//发送状态设为0态
bytRcvStatus=0;//接收状态设为0态
bytResendCount=0;//重发次数清零
uintStxCurNo=0;//当前发送数据序号清零
}
else
{
AfxMessageBox("创建串口失败!");
}
}
/*******************************************************************************/
DWORD CPC2PCView::ThreadProcEvent(LPVOID pParam)
{
DWORD dwEvtMask,dwRes;
bool fStopMsg=false;
Eol.hEvent = CreateEvent(NULL,TRUE, //设置Eol.hEvent成员为无信号状态
FALSE,NULL);
while(fEventRun)
{
WaitCommEvent(hCom,&dwEvtMask, //监视串口事件
&Eol);
dwRes = WaitForSingleObject(Eol.hEvent, //等待信号
1000);
switch(dwRes)
{
case WAIT_OBJECT_0: //成功得到事件监视结果
{
switch(dwEvtMask)
{
case EV_RXCHAR: //接收到数据
{
if(!fStopMsg)
{
fStopMsg = true;
::PostMessage(hWnd,WM_MYMSG, //向主线程发送消息,接收到数据
0,(LPARAM)EV_RXCHAR);
}
break;
}
case EV_TXEMPTY:
{
AfxMessageBox(_T("send buffer is empty"));
break;
}
}
}
case WAIT_TIMEOUT:
{
::PostMessage(hWnd,WM_MYMSG,0,(LPARAM)100);
}
break;
}
return true;
}
}
实验调试可以肯定打开串口函数OnOpencom()已经成功运行,但是不晓得线程函数ThreadProcEvent有没有运行,请高手指教!!!