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

📄 uoption.pas

📁 单片机
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      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 + -