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