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 + -
显示快捷键?