⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 threadcomm.cpp

📁 基于MD110程控交换机的计费程序,使用C++Builder开发
💻 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 + -