📄 threadcomm.cpp
字号:
//---------------------------------------------------------------------------
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -