threadcomm.cpp
来自「基于MD110程控交换机的计费程序,使用C++Builder开发」· C++ 代码 · 共 61 行
CPP
61 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "ThreadComm.h"
#include "UnitMain.h"
#pragma package(smart_init)
__fastcall ThreadComm::ThreadComm(bool CreateSuspended)
: TThread(true)
{
if(CreateSuspended==false)
Resume();
}
//---------------------------------------------------------------------------
void __fastcall ThreadComm::Execute()
{
DWORD dwEvtMask,dwTransfer;
OVERLAPPED os;
memset(&os,0,sizeof(OVERLAPPED));
os.hEvent= CreateEvent(
NULL, /* 无安全属性*/
TRUE, /* 人工复位事件*/
FALSE, /* 初始化为非信号状态 */
NULL /* no name */
);
if(!SetCommMask(FormMain->COMX->hCom, EV_RXCHAR))
{
MessageBox(NULL,"设置通信设备控制块数据结构操作异常!","错误",MB_OK);
return;
}
while(!Terminated)
{
dwEvtMask=0;
if (!WaitCommEvent(FormMain->COMX->hCom, &dwEvtMask, &os))
{
if(ERROR_IO_PENDING==GetLastError())
{
if(GetOverlappedResult(FormMain->COMX->hCom,&os,&dwTransfer,TRUE))//;
os.Offset+=dwTransfer;
}
}
if ((dwEvtMask & EV_RXCHAR)==EV_RXCHAR)
{
Synchronize(CommMessage);
}
}
CloseHandle(os.hEvent);
MessageBox(NULL,"All Done","Info",MB_OK);
}
void __fastcall ThreadComm::CommMessage(void)
{
FormMain->COMX->ReadCommToBuffer();
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?