📄 uoption.pas
字号:
Close;
finally
IdleOpt := True;
end;
end;
end;
procedure TfrmOption.btnHypertrmClick(Sender: TObject);
begin
//avoid reiteration event
if IdleOpt then
begin
IdleOpt := False;
try
edtKeyASC.Text := 'd';
edtKeyHEX.Text := '64';
edtSendRST.Text := '7E';
chkSendRST.Checked := True;
cbbProtocol.ItemIndex := 0;
cbbFrameLen.Text := '128';
cbbBootCnt.Text := '10';
cbbSendTime.Text := '500';
edtFillUnused.Text := 'FF CF';
chkFillUnused.Checked := False;
rbASC.Checked := True;
if pgctOption.ActivePageIndex <> 1 then
pgctOption.ActivePageIndex := 1
else
pgctOption.ActivePageIndex := 0;
finally
IdleOpt := True;
end;
end;
end;
procedure TfrmOption.btnImportClick(Sender: TObject);
begin
//avoid reiteration event
if IdleOpt then
begin
IdleOpt := False;
try
dlgOpen.Title := btnImport.Caption + ' ';
if dlgOpen.Execute then
begin
ImportCfg(dlgOpen.FileName);
end;
finally
HWD := frmOption.Handle;
IdleOpt := True;
end;
end;
end;
procedure TfrmOption.edtKeyHEXClick(Sender: TObject);
var
buf: CBuf;
begin
if not (Sender is TEdit) then
Exit;
TEdit(Sender).Text := FormatHexStr(TEdit(Sender).Text, buf);
end;
procedure TfrmOption.pnlpgctOptionMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
//释放鼠标事件的对象
ReleaseCapture;
PostMessage(Handle, wm_SysCommand, $F012, 0);
end;
procedure TfrmOption.edtKeyHEXChange(Sender: TObject);
begin
if Sender is TEdit then
begin
if (Length(TEdit(Sender).Text) mod 3) = 0 then
begin
edtKeyHEXClick(Sender);
PostMessage(TEdit(Sender).Handle, WM_KEYDOWN, VK_END, 0);
end;
end;
end;
procedure TfrmOption.edtFillUnusedChange(Sender: TObject);
begin
edtKeyHEXChange(Sender);
if chkFillUnused.Checked then
Modify := True;
end;
procedure TfrmOption.tmrErrTimer(Sender: TObject);
begin
if tmrErr.Tag > 0 then
begin
if (tmrErr.Tag mod 2) = 0 then
cbbErr.Color := clWindow
else
cbbErr.Color := clRed;
tmrErr.Tag := tmrErr.Tag - 1;
end
else
begin
cbbErr.Color := clWindow;
tmrErr.Enabled := False;
end;
end;
//we must reload HEX/BIN file when this value changed
procedure TfrmOption.cbbFrameLenChange(Sender: TObject);
begin
Modify := True;
end;
procedure TfrmOption.setcbbErr(cbb: TComboBox);
begin
cbbErr := cbb;
pgctOption.ActivePage := TTabSheet(cbb.Parent);
tmrErr.Tag := 6;
tmrErr.Enabled := True;
end;
procedure TfrmOption.btnImportHisClick(Sender: TObject);
begin
//avoid reiteration event
if IdleOpt then
begin
IdleOpt := False;
try
GetCursorPos(mp);
frmMain.pmImportHis.Popup(mp.X, mp.Y);
finally
IdleOpt := True;
end;
end;
end;
procedure TfrmOption.ImportCfg(FileName: string);
var
f: TextFile;
lns, wds: string;
i, len: Integer;
klen: Integer;
hf: TMenuItem;
begin
try
btnOk.Enabled := False;
AssignFile(f, FileName);
Reset(f);
klen := -1;
while not Eof(f) do
begin
Readln(f, lns);
wds := TokenStr(lns);
if wds = 'unsigned' then
begin
//KEY[]
if TokenStr(lns) = 'char' then
if TokenStr(lns) = 'KEY[]' then
begin
if klen = -1 then
begin
frmMain.loginfo('X ' + btnImport.Caption + lang.msgError);
frmMain.loginfo('> Macro ''CONNECTCNT'' must be define before ''KEY[]'' !');
Application.MessageBox('Macro ''CONNECTCNT'' must be define before ''KEY[]'' !', PChar(lang.msgWarning), MB_OK + MB_ICONWARNING);
Exit;
end;
rbHEX.Checked := True;
edtKeyHEX.Text := '';
for i := 1 to klen do
begin
wds := TokenStr(lns);
if wds = '' then
begin
frmMain.loginfo('X ' + btnImport.Caption + lang.msgError);
frmMain.loginfo('> ' + lang.msgError + ': ' + gpbConnectKey.Caption + '(CONNECTCNT/KEY[])');
Application.MessageBox(PChar(lang.msgError + ': ' + gpbConnectKey.Caption + '(CONNECTCNT/KEY[])'), PChar(lang.msgError), MB_OK + MB_ICONSTOP);
Exit;
end;
if wds[1] = '''' then //Char: 'd'
begin
edtKeyHEX.Text := edtKeyHEX.Text + Format('%.02X ', [Ord(wds[2])]);
end
else
begin //Number:0x10, 20
try
len := StrToInt(wds) mod 256;
except
len := 0;
end;
edtKeyHEX.Text := edtKeyHEX.Text + Format('%.02X ', [len]);
end;
end;
end;
Continue;
end;
if wds = '#define' then
begin
wds := TokenStr(lns);
if wds = 'BUFFERSIZE' then
begin
wds := TokenStr(lns);
if wds <> '' then
cbbFrameLen.Text := wds;
Continue;
end;
if wds = 'BAUDRATE' then
begin
wds := TokenStr(lns);
if cbbComPortBaudRate.Items.IndexOf(wds) = -1 then
begin
frmMain.loginfo('X ' + btnImport.Caption + lang.msgError);
frmMain.loginfo('> ' + lang.msgError + ': BaudRate(BAUDRATE).');
Application.MessageBox(PChar(lang.msgError + ': BaudRate(BAUDRATE).'), PChar(lang.msgError), MB_OK + MB_ICONSTOP);
setcbbErr(cbbComPortBaudRate);
Exit;
end;
cbbComPortBaudRate.ItemIndex := cbbComPortBaudRate.Items.IndexOf(wds);
Continue;
end;
if wds = 'timeclk' then
begin
wds := TokenStr(lns);
if wds <> '' then
cbbSendTime.Text := wds;
Continue;
end;
if wds = 'TimeOutCnt' then
begin
wds := TokenStr(lns);
cbbBootCnt.Text := wds;
try
cbbBootCnt.Text := IntToStr(StrToInt(wds) + 10);
except
frmMain.loginfo('X ' + btnImport.Caption + lang.msgError);
frmMain.loginfo('> ' + lang.msgError + ': [' + lbMaxConCnt.Caption + '](TimeOutCnt)');
setcbbErr(cbbBootCnt);
Exit;
end;
Continue;
end;
if wds = 'BootStart' then
begin
wds := TokenStr(lns);
try
len := StrToInt(wds);
if (len < 0) or (len > FlashSize[7]) then
begin
frmMain.loginfo('X ' + btnImport.Caption + lang.msgError);
frmMain.loginfo('> ' + lang.msgError + ': [' + lbFlashSize.Caption + '](BootStart)');
setcbbErr(cbbFlash);
Exit;
end;
if len = 0 then
Exit;
i := 0;
while len >= FlashSize[i] do
i := i + 1;
cbbFlash.ItemIndex := i;
except
setcbbErr(cbbFlash);
Exit;
end;
Continue;
end;
if wds = 'CONNECTCNT' then
begin
try
klen := StrToInt(TokenStr(lns));
if klen < 1 then
begin
frmMain.loginfo('X ' + btnImport.Caption + lang.msgError);
frmMain.loginfo('> ' + lang.msgError + ': CONNECTCNT.');
Application.MessageBox(PChar(lang.msgError + ': CONNECTCNT.'), PChar(lang.msgError), MB_OK + MB_ICONERROR);
Exit;
end;
except
frmMain.loginfo('X ' + btnImport.Caption + lang.msgError);
frmMain.loginfo('> ' + lang.msgError + ': CONNECTCNT.');
Application.MessageBox(PChar(lang.msgError + ': CONNECTCNT.'), PChar(lang.msgError), MB_OK + MB_ICONERROR);
Exit;
end;
Continue;
end;
if wds = 'CRCMODE' then
begin
wds := TokenStr(lns);
try
cbbProtocol.ItemIndex := StrToInt(wds);
if StrToInt(wds) >= cbbProtocol.Items.Count then
begin
frmMain.loginfo('X ' + btnImport.Caption + lang.msgError);
frmMain.loginfo('> ' + lang.msgError + ': ' + lbCommProt.Caption);
Application.MessageBox(PChar(lang.msgError + ': ' + lbCommProt.Caption), PChar(lang.msgError), MB_OK + MB_ICONERROR);
setcbbErr(cbbProtocol);
Exit;
end;
except
frmMain.loginfo('X ' + btnImport.Caption + lang.msgError);
frmMain.loginfo('> ' + lang.msgError + ': ' + lbCommProt.Caption);
Application.MessageBox(PChar(lang.msgError + ': ' + lbCommProt.Caption), PChar(lang.msgError), MB_OK + MB_ICONERROR);
setcbbErr(cbbProtocol);
Exit;
end;
Continue;
end;
end; //end of token
end; //end of while
btnOk.Enabled := True;
frmMain.loginfo('V Import file success: [' + FileName + ']');
Application.MessageBox(PChar('Import file success: ' + FileName + '. '), 'V', MB_OK + MB_ICONINFORMATION);
for i := 0 to frmMain.pmImportHis.Items.Count - 1 do
frmMain.pmImportHis.Items[i].Checked := False;
if frmMain.pmImportHis.Items.Find(FileName) = nil then
begin
//History file list
if frmMain.pmImportHis.Items.Count > MaxHisFileCount then
frmMain.pmImportHis.Items.Delete(frmMain.pmImportHis.Items.Count - 1);
hf := TMenuItem.Create(Self);
hf.OnClick := frmMain.ImportHisClick;
hf.Caption := FileName;
hf.RadioItem := True;
hf.Checked := True;
frmMain.pmImportHis.Items.Insert(0, hf);
end
else
begin
frmMain.pmImportHis.Items.Find(FileName).Checked := True;
end;
finally
CloseFile(f);
end;
end;
procedure TfrmOption.dlgOpenShow(Sender: TObject);
begin
HWD := FindWindow(nil, PChar(dlgOpen.Title));
frmMain.clrSmart;
end;
procedure TfrmOption.FormCreate(Sender: TObject);
begin
pgctOption.ActivePageIndex := 0;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -