setcs.cpp

来自「这是一个电力多功能电表的参数设置工具软件」· C++ 代码 · 共 209 行

CPP
209
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "setCs.h"

//#include <string.h>
#include <stdio.h>
//#include <fcntl.h>
//#include <io.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmSetCs *frmSetCs;
//---------------------------------------------------------------------------
__fastcall TfrmSetCs::TfrmSetCs(TComponent* Owner)
    : TForm(Owner)
{
    mskEdtCfh->Text="0000.0";
    mskEdtH->Text="230.0";
    mskEdtL->Text="050.0";
    readCs();
}
//---------------------------------------------------------------------------
void __fastcall TfrmSetCs::btnCancelClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmSetCs::btnOkClick(TObject *Sender)
{
    int iCfh,iFh,iCb,iBph,iDld,iBps,iDs,iSj,iH,iL;
    AnsiString sCfh,sH,sL,writeStrA,xyStr,sTmp;
    AnsiString wCfh,wFh,wCb,wBph,wDld,wBps,wDs,wSj,wH,wL,wFl,wZz="FF";
    int dataLen;

    /*CFH-2(HEX),FH-1(BCD),CB-1(BCD),
      BPH-1(HEX),DLD-1(HEX),FL-1(BCD)
      BPS-2,DS-1(HEX),SJ-1(HEX),
      H-2(HEX),L-2(HEX)
    */

    sCfh=mskEdtCfh->Text;
    sCfh=sCfh.SubString(1,4)+sCfh.SubString(6,1);
    sCfh=StrToHex(sCfh,4);
    wCfh=sCfh.SubString(3,2)+sCfh.SubString(1,2);

    wFh=StrToHex(edtFhr->Text,2);

    sTmp=addStr(edtCbr->Text,2);
    wCb=sTmp+addStr(cboCbr->Text,2);

    wBph=StrToHex(edtBph->Text,2);
    wDld=StrToHex(edtDld->Text,2);
    wFl=addStr(cboFl->Text,2);


    if(cboBps->Text=="600")
        wBps="04";
    if(cboBps->Text=="1200")
        wBps="00";
    if(cboBps->Text=="2400")
        wBps="10";
    if(cboBps->Text=="4800")
        wBps="20";
    if(cboBps->Text=="9600")
        wBps="40";

    wDs=StrToHex(cboXlsj->Text,2);
    wSj=StrToHex(edtXxsj->Text,2);

    sH=mskEdtH->Text;
    sH=sH.SubString(1,3)+sH.SubString(5,1);
    sH=StrToHex(sH,4);
    wH=sH.SubString(3,2)+sH.SubString(1,2);

    sL=mskEdtL->Text;
    sL=sL.SubString(1,3)+sL.SubString(5,1);
    sL=StrToHex(sL,4);
    wL=sL.SubString(3,2)+sL.SubString(1,2);

    if(!chkCfh->Checked)    wCfh="FFFF";
    if(!chkFhr->Checked)    wFh="FF";
    if(!chkCbr->Checked)    wCb="FFFF";
    if(!chkBph->Checked)    wBph="FF";
    if(!chkDld->Checked)    wDld="FF";
    if(!chkFl->Checked)     wFl="FF";
    if(!chkBps->Checked)    wBps="FF";
    if(!chkXlsj->Checked)   wDs="FF";
    if(!chkXxsj->Checked)   wSj="FF";
    if(!chkDyh->Checked)    wH="FFFF";
    if(!chkDyl->Checked)    wL="FFFF";

    writeStr=wCfh+wFh+wCb+wBph+wDld+wFl+wBps+wDs+wSj+wH+wL+wZz;

   // ShowMessage(wCfh+" "+wBps+" "+wH+" "+wL);


}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmSetCs::addStr(AnsiString sourStr,int len)
{
    int lenStr;
    AnsiString tmpStr,destStr;

    tmpStr=sourStr.Trim();
    lenStr=tmpStr.Length();

    destStr=AnsiString::StringOfChar('0',len-lenStr)+tmpStr;
    return destStr;
}
AnsiString __fastcall TfrmSetCs::StrToHex(AnsiString sourStr,int len)
{
    int intStr;
    AnsiString destStr;

    intStr=sourStr.ToInt();
    destStr=AnsiString::IntToHex(intStr,len);
    return destStr;
}
void __fastcall TfrmSetCs::SpeedButton1Click(TObject *Sender)
{
   FILE *stream;

   if ((stream = fopen("setcs.dat", "w")) == NULL)
   {
      Application->MessageBox("默认值设置失败!","设置", MB_OK+MB_ICONEXCLAMATION);
      return;
   }
    strcpy(myCs.CFH,mskEdtCfh->Text.c_str());
    strcpy(myCs.FH,edtFhr->Text.c_str());
    strcpy(myCs.CB,edtCbr->Text.c_str());
    strcpy(myCs.BPH,edtBph->Text.c_str());
    strcpy(myCs.DLD,edtDld->Text.c_str());
    strcpy(myCs.FL,cboFl->Text.c_str());
    strcpy(myCs.BPS,cboBps->Text.c_str());
    strcpy(myCs.DS,cboXlsj->Text.c_str());
    strcpy(myCs.SJ,edtXxsj->Text.c_str());
    strcpy(myCs.H,mskEdtH->Text.c_str());
    strcpy(myCs.L,mskEdtL->Text.c_str());

   fwrite(&myCs, sizeof(myCs), 1, stream);
   fclose(stream); /* close file */
   Application->MessageBox("默认值设置成功!","设置", MB_OK+MB_ICONINFORMATION);

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

void __fastcall TfrmSetCs::readCs()
{
   FILE *stream;

   if ((stream = fopen("setcs.dat", "r")) == NULL)
        return;

   fread(&myCs, sizeof(myCs), 1, stream);
   fclose(stream); 
    mskEdtCfh->Text=myCs.CFH;
    edtFhr->Text= AnsiString(myCs.FH);
    cboCbr->Text=AnsiString(myCs.CB);
    edtBph->Text=AnsiString(myCs.BPH);
    edtDld->Text=AnsiString(myCs.DLD);
    cboFl->Text=AnsiString(myCs.FL);
    cboBps->Text=AnsiString(myCs.BPS);
    cboXlsj->Text=AnsiString(myCs.DS);
    edtXxsj->Text=AnsiString(myCs.SJ);
    mskEdtH->Text=AnsiString(myCs.H);
    mskEdtL->Text=AnsiString(myCs.L);


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

void __fastcall TfrmSetCs::SpeedButton2Click(TObject *Sender)
{
    chkCfh->Checked=true;
    chkFhr->Checked=true;
    chkCbr->Checked=true;
    chkBph->Checked=true;
    chkDld->Checked=true;
    chkFl->Checked=true;
    chkBps->Checked=true;
    chkXlsj->Checked=true;
    chkXxsj->Checked=true;
    chkDyh->Checked=true;
    chkDyl->Checked=true;

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

void __fastcall TfrmSetCs::SpeedButton3Click(TObject *Sender)
{
    chkCfh->Checked=false;
    chkFhr->Checked=false;
    chkCbr->Checked=false;
    chkBph->Checked=false;
    chkDld->Checked=false;
    chkFl->Checked=false;
    chkBps->Checked=false;
    chkXlsj->Checked=false;
    chkXxsj->Checked=false;
    chkDyh->Checked=false;
    chkDyl->Checked=false;

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

⌨️ 快捷键说明

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