convert.cpp

来自「16 relay output channels and 16 isolated」· C++ 代码 · 共 100 行

CPP
100
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Convert.h"
#include "Init.h"
#include "DataShow.h"
#include "..\..\..\include\driver.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFrmConvert *FrmConvert;

extern bool gbThreadFlag;
extern int     giEvtFlag;
extern long ErrCde;
extern long DeviceHandle;
extern HGLOBAL hBuf,hUserBuf;
extern char    szErrMsg[80];
long ChkErr(long lErrCde);


//---------------------------------------------------------------------------
__fastcall TFrmConvert::TFrmConvert(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFrmConvert::butTerminateClick(TObject *Sender)
{
    if ((ErrCde = DRV_FAITerminate(DeviceHandle)) != 0)
    {
            DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
            GlobalUnlock(hBuf);
            GlobalUnlock(hUserBuf);
            GlobalFree(hBuf);
            GlobalFree(hUserBuf);
            DRV_DeviceClose((LONG far *)&DeviceHandle);
            Application->MessageBox((char *)szErrMsg, "Driver Message", MB_OK);
            return;
    }
    if(giEvtFlag == 0)
    {
       FrmInit->Terminate();
    }

    //FrmInit->Terminate();

}
//---------------------------------------------------------------------------

void __fastcall TFrmConvert::tmrDataCountsTimer(TObject *Sender)
{
    PT_FAICheck ptFAICheck;
    USHORT usStopped;
    ULONG ulRetrieved;
    USHORT usOverrun;
    USHORT usHalfReady;
    USHORT usActiveBuf;

    ptFAICheck.stopped = &usStopped;
    ptFAICheck.retrieved = &ulRetrieved;
    ptFAICheck.overrun = &usOverrun;
    ptFAICheck.HalfReady = &usHalfReady;
    ptFAICheck.ActiveBuf = &usActiveBuf;

    // Check current status
    ErrCde = DRV_FAICheck(DeviceHandle, &ptFAICheck);
    if (ChkErr(ErrCde))
    {
        tmrDataCounts->Enabled = False;
        return;
    }

    if (ulRetrieved == 0)
        ulRetrieved = 1;

    prgsDataCounts->Position = ulRetrieved - 1;

    if (usStopped == 1)
        tmrDataCounts->Enabled = False;
}
//---------------------------------------------------------------------------

void __fastcall TFrmConvert::FormCreate(TObject *Sender)
{
    tmrDataCounts->Interval = 50;
    tmrDataCounts->Enabled = FALSE; // set false because not work immediately
}

void __fastcall TFrmConvert::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    if (gbThreadFlag)
        FrmInit->Terminate();
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?