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