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

📄 dirunfrom.cpp

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "DirunFrom.h"
#include "..\..\..\include\driver.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmDiorun *frmDiorun;

extern LONG lDriverHandle;
extern PT_DioWritePortByte      ptDioWritePortByte;
extern PT_DioGetCurrentDOByte   ptDioGetCurrentDOByte;
extern char szErrMsg[80];
extern LRESULT ErrCde;
USHORT uDoValue = 0x00;
//---------------------------------------------------------------------------

__fastcall TfrmDiorun::TfrmDiorun(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmDiorun::CmdBit7Click(TObject *Sender)
{
    UpdateLED(((TButton* )(Sender))->Tag, 1);
    ((TButton*)(Sender))->Visible = False;

    switch(((TButton* )(Sender))->Tag){
        case 0: PictureBit0->Visible = True; break;
        case 1: PictureBit1->Visible = True; break;
        case 2: PictureBit2->Visible = True; break;
        case 3: PictureBit3->Visible = True; break;
        case 4: PictureBit4->Visible = True; break;
        case 5: PictureBit5->Visible = True; break;
        case 6: PictureBit6->Visible = True; break;
        case 7: PictureBit7->Visible = True; break;
        //default:
        //can never reach here
    }   

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



void __fastcall TfrmDiorun::PictureBit0Click(TObject *Sender)
{
    UpdateLED(((TImage* )(Sender))->Tag, 0);
    ((TImage* )(Sender))->Visible = False;

    switch(((TButton* )(Sender))->Tag){
        case 0: CmdBit0->Visible = True; break;
        case 1: CmdBit1->Visible = True; break;
        case 2: CmdBit2->Visible = True; break;
        case 3: CmdBit3->Visible = True; break;
        case 4: CmdBit4->Visible = True; break;
        case 5: CmdBit5->Visible = True; break;
        case 6: CmdBit6->Visible = True; break;
        case 7: CmdBit7->Visible = True; break;
        //default:
        //can never reach here
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmDiorun::CmdExitClick(TObject *Sender)
{
   Close();        
}
//---------------------------------------------------------------------------


void TfrmDiorun::UpdateLED(int bit, BOOL mode)
{
    if(mode){
        uDoValue |= 0x01 << bit;
    }else{
        uDoValue &= ~(0x01 << bit);
    }
    ptDioWritePortByte.state = uDoValue;
    if((ErrCde = DRV_DioWritePortByte(lDriverHandle,(LPT_DioWritePortByte)&ptDioWritePortByte)) != SUCCESS)
    {
        DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
        Application->MessageBoxA((char *)szErrMsg,"Driver Message");
        return ;
    }

}


void __fastcall TfrmDiorun::FormShow(TObject *Sender)
{
    ptDioGetCurrentDOByte.value = &uDoValue;

    DRV_DioGetCurrentDOByte(lDriverHandle, (LPT_DioGetCurrentDOByte)&ptDioGetCurrentDOByte); //modified by mining

    if(uDoValue & 0x80){
        CmdBit7->Visible = False;
        PictureBit7->Visible = True;
    }else{
        CmdBit7->Visible = True;
        PictureBit7->Visible = False;
    }
    if(uDoValue & 0x40){
        CmdBit6->Visible = False;
        PictureBit6->Visible = True;
    }else{
        CmdBit6->Visible = True;
        PictureBit6->Visible = False;
    }
    if(uDoValue & 0x20){
        CmdBit5->Visible = False;
        PictureBit5->Visible = True;
    }else{
         CmdBit5->Visible = True;
        PictureBit5->Visible = False;
    }
    if(uDoValue & 0x10){
        CmdBit4->Visible = False;
         PictureBit4->Visible = True;
    }else{
        CmdBit4->Visible = True;
         PictureBit4->Visible = False;
         }
    if(uDoValue & 0x08){
         CmdBit3->Visible = False;
         PictureBit3->Visible = True;
    }else{
        CmdBit3->Visible = True;
        PictureBit3->Visible = False;
        }
    if(uDoValue & 0x04){
        CmdBit2->Visible = False;
        PictureBit2->Visible = True;
    }else{
        CmdBit2->Visible = True;
        PictureBit2->Visible = False;
        }
    if(uDoValue & 0x02){
        CmdBit1->Visible = False;
        PictureBit1->Visible = True;
    }else{
        CmdBit1->Visible = True;
        PictureBit1->Visible = False;
        }
    if(uDoValue & 0x01){
        CmdBit0->Visible = False;
        PictureBit0->Visible = True;
    }else{
        CmdBit0->Visible = True;
        PictureBit0->Visible = False;
    }

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

⌨️ 快捷键说明

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