📄 cs.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "cs.h"
#include "sd.h"
#include "writeCard.h"
#include "convstr.h"
#include "setCs.h"
#include "setSd.h"
#include "password.h"
#include <registry.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmCs *frmCs;
//---------------------------------------------------------------------------
__fastcall TfrmCs::TfrmCs(TComponent* Owner)
: TForm(Owner)
{
ClearIcFlag=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmCs::BitBtn1Click(TObject *Sender)
{
AnsiString addStrCs,addStrSd,addStrSdxs,addStrTdxs;
AnsiString writeStrA,writeStrB,tmpStr,xyStr;
AnsiString tmpCs,tmpSd,tmpSdxs,tmpTdxs;
sbarIc->SimpleText="正在写卡...";
if(radCs->Checked)
{
if((chkCs->Checked==false) && (chkSd->Checked==false)
&& (chkSdxs->Checked==false) && (chkTdxs->Checked==false))
{
Application->MessageBox("至少应选择一种参数类型!","设置", MB_OK+MB_ICONEXCLAMATION);
sbarIc->SimpleText="待命...";
return;
}
//原参数地址20h,now 10h
addStrCs =AnsiString::StringOfChar('F', 20); //14
addStrSd =AnsiString::StringOfChar('F', 60); //44
addStrTdxs = AnsiString::StringOfChar('F', 196);
addStrSdxs = AnsiString::StringOfChar('F', 22);
tmpCs= AnsiString::StringOfChar('F', 36); //add---68+xy +14 byte+2
tmpSd= AnsiString::StringOfChar('F', 92);
tmpTdxs= AnsiString::StringOfChar('F', 74);
tmpSdxs="";// AnsiString::StringOfChar('F', 84);
writeStrA="000000520000";
//计算校验和
if(chkCs->Checked)
{
tmpStr="68"+writeCs;
xyStr=xy_str(tmpStr);
tmpCs=tmpStr+xyStr;
}
if(chkSd->Checked)
{
tmpStr="68"+writeSd;
xyStr=xy_str(tmpStr);
tmpSd=tmpStr+xyStr;
}
if(chkSdxs->Checked)
{
int iXsNum=frmSd->iSdXsnumSd;//循显示项数
AnsiString sXsNum=IntToHex(iXsNum,2);
if(sXsNum.Length()==1)
sXsNum="0"+sXsNum;
tmpStr="68"+sXsNum+writeSdxs;
xyStr=xy_str(tmpStr);
tmpSdxs=tmpStr+xyStr;
if(tmpSdxs.Length()%4!=0)
tmpSdxs=tmpSdxs+"FF";
}
if(chkTdxs->Checked)
{
tmpStr="68"+writeTdxs;
xyStr=xy_str(tmpStr);
tmpTdxs=tmpStr+xyStr;
}
writeStrB=writeStrA+addStrCs+tmpCs+
addStrSd+tmpSd+
addStrTdxs+tmpTdxs+
addStrSdxs+tmpSdxs;
}
if(radFunction->Checked)
{
switch (cboIcType->ItemIndex)
{
case 0: //复制卡
writeStrB="000000900000";
break;
/*case 1: //全显卡
writeStrB="000000C00000"+AnsiString::StringOfChar('0', 196+208+96);
break;*/
case 1: //清零
if(!ClearIcFlag)
{
Application->MessageBox("对不起,您无权使用此功能!","设置", MB_OK+MB_ICONEXCLAMATION);
return;
sbarIc->SimpleText="待命...";
}
writeStrB="000000B00000"+AnsiString::StringOfChar('0', 340)+"5100";
break;
case 2: //计量值清零卡
if(!ClearIcFlag)
{
Application->MessageBox("对不起,您无权使用此功能!","设置", MB_OK+MB_ICONEXCLAMATION);
return;
sbarIc->SimpleText="待命...";
}
writeStrB="000000B00000"+AnsiString::StringOfChar('0', 340)+"5151";;
break;
case 3: //需量值清零卡
if(!ClearIcFlag)
{
Application->MessageBox("对不起,您无权使用此功能!","设置", MB_OK+MB_ICONEXCLAMATION);
return;
sbarIc->SimpleText="待命...";
}
writeStrB="000000400000"+AnsiString::StringOfChar('0', 116)+"5100";
break;
case 4: //计量误差值修正卡
writeStrB="000000E00000"+AnsiString::StringOfChar('0', 436)+"5100";
break;
/*case 6: //负荷日显示卡
writeStrB="000000500000";
break;*/
case 5: //失压失流清零卡
writeStrB="000000300000"+AnsiString::StringOfChar('0', 84)+"5100";
break;
/*case 8: //失压失流显示卡
writeStrB="000000600000";
break;
case 9: //失压失流累计值显示卡
writeStrB="000000700000";
break;
case 10: //失压失流日趋势图复制卡
writeStrB="000000800000";
break;*/
}
}
if(radCom1->Checked)
portcomm=1;
else
portcomm=2;
//写卡
writeCard(portcomm,2,writeStrB.c_str());
sbarIc->SimpleText="待命...";
//ShowMessage(writeStrB);
}
//---------------------------------------------------------------------------
void __fastcall TfrmCs::BitBtn2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmCs::spbSdxsClick(TObject *Sender)
{
frmSd->Caption="上电显示设置";
frmSd->lstXs->Clear();
frmSd->ShowModal();
writeSdxs=frmSd->writeStr;
if(writeSdxs.Length()==0)
chkSdxs->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmCs::spbTdxsClick(TObject *Sender)
{
frmSd->Caption="停电显示设置";
frmSd->lstXs->Clear();
frmSd->ShowModal();
writeTdxs=frmSd->writeStr;
if(writeTdxs.Length()==0)
chkTdxs->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmCs::spbCsClick(TObject *Sender)
{
frmSetCs->ShowModal();
writeCs=frmSetCs->writeStr;
if(writeCs.Length()==0)
chkCs->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmCs::spbSdClick(TObject *Sender)
{
frmSetsd->ShowModal();
writeSd=frmSetsd->writeStr;
if(writeSd.Length()==0)
chkSd->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmCs::chkSdxsClick(TObject *Sender)
{
if(chkSdxs->Checked)
spbSdxsClick(this);
}
//---------------------------------------------------------------------------
void __fastcall TfrmCs::chkTdxsClick(TObject *Sender)
{
if(chkTdxs->Checked)
spbTdxsClick(this);
}
//---------------------------------------------------------------------------
void __fastcall TfrmCs::chkCsClick(TObject *Sender)
{
if(chkCs->Checked)
spbCsClick(this);
}
//---------------------------------------------------------------------------
void __fastcall TfrmCs::chkSdClick(TObject *Sender)
{
if(chkSd->Checked)
spbSdClick(this);
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmCs::xy_str(AnsiString wStr)
{
unsigned char hexbuff[200],binbuff[200],xybuff[4];
char hexXybuff[10];
int binSum;
strcpy(hexbuff,wStr.c_str());
binSum=hex2bin(hexbuff,binbuff);
xybuff[0]=0;
for(int i=0;i<binSum;i++)
xybuff[0]+=binbuff[i];
bin2hex(xybuff,1,hexXybuff);
return AnsiString(hexXybuff);
}
void __fastcall TfrmCs::FormCreate(TObject *Sender)
{
char dllfile[100] ;
char dat_file[100] ;
unsigned long ret ;
AnsiString currPath;
currPath=GetCurrentDir();
//GetTempPath( 100, tmppath ) ;
}
//---------------------------------------------------------------------------
void __fastcall TfrmCs::SpeedButton1Click(TObject *Sender)
{
AnsiString oldPassword,writeStr;
if(frmPassword->ShowModal()==mrOk)
{
if(frmPassword->FirstPassword)
{
ClearIcFlag=true;
return;
}
ReadReg();
if(frmPassword->ChangePass) //修改密码
{
writeStr=frmPassword->edtChange->Text.Trim();
oldPassword=frmPassword->edtPassword->Text.Trim();
if(writeStr.IsEmpty())
{
Application->MessageBox("对不起,您输入的新密码不能为空,请重新输入!","设置", MB_OK+MB_ICONEXCLAMATION);
return;
}
if(writeStr!=oldPassword)
{
Application->MessageBox("对不起,您输入的密码不对,请重新输入!","设置", MB_OK+MB_ICONEXCLAMATION);
return;
}
WriteReg(writeStr);
}
else //输入密码
{
writeStr=frmPassword->edtPassword->Text.Trim();
if(regPassword!=writeStr)
{
Application->MessageBox("对不起,您输入的密码不对,请重新输入!","设置", MB_OK+MB_ICONEXCLAMATION);
return;
}
}
}
ClearIcFlag=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmCs::WriteReg(AnsiString writeStr)
{
TRegistry *Registry = new TRegistry;
Registry->RootKey = HKEY_CURRENT_USER;
Registry->OpenKey("HNDICREG",true);
Registry->WriteString("PASSWORDIC",writeStr);
delete Registry;
}
void __fastcall TfrmCs::ReadReg()
{
TRegistry *Registry = new TRegistry;
Registry->RootKey = HKEY_CURRENT_USER;
Registry->OpenKey("HNDICREG",true);
regPassword= Registry->ReadString("PASSWORDIC");
delete Registry;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -