?? find.pas
字號:
unit find;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, StdCtrls, Menus, Mask;
type
TForm1 = class(TForm)
btexit: TButton;
Label1: TLabel;
Label2: TLabel;
disp: TMemo;
Label3: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Button3: TButton;
Label19: TLabel;
ComBox: TComboBox;
one1: TMaskEdit;
one3: TMaskEdit;
two1: TMaskEdit;
two2: TMaskEdit;
two3: TMaskEdit;
three1: TMaskEdit;
three2: TMaskEdit;
one2: TMaskEdit;
Label8: TLabel;
procedure btexitClick(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure one1Enter(Sender: TObject);
procedure one2Enter(Sender: TObject);
procedure one3Enter(Sender: TObject);
procedure two1Enter(Sender: TObject);
procedure two2Enter(Sender: TObject);
procedure two3Enter(Sender: TObject);
procedure three1Enter(Sender: TObject);
procedure three2Enter(Sender: TObject);
procedure fourEnter(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComBoxDblClick(Sender: TObject);
end ;
var
Form1: TForm1;
whof,smod,tx : integer;
fosc,bdr,bdr2 : double;
sr :string;
sst: integer;
tup,tdown: double;
fosc2: double;
implementation
{$R *.dfm}
procedure TForm1.btexitClick(Sender: TObject);
begin
close;
end;
procedure TForm1.Button3Click(Sender: TObject);
var i,j : integer ;
begin
if(button3.Caption = '開始查找(search now)' )
then
begin
disp.Text := ' ';
sr := ' ';
case whof of
1 :
begin
tdown := strtofloat(one2.text);
tup := strtofloat (one3.text);
fosc := strtofloat(one1.Text );
if ComboBox1.Text = 'smod=0 ' then smod := 0
else if ComboBox1.Text ='smod=1' then smod := 1
else
;
///////////////////////////////////////////////////
if ComboBox2.Text = '2'
then // 串口方式2
begin
one2.Enabled :=false;
one3.Enabled :=false;
form1.Refresh ;
bdr := ((1+smod)* fosc)/64;
bdr := bdr * 1000000;
disp.Text :=floattostr(bdr);
end
else if ComboBox2.Text = '0'
then // 串口方式0
begin
one2.Enabled :=false;
one3.Enabled :=false;
form1.Refresh ;
bdr := (fosc)/12;
bdr := bdr * 1000000;
disp.Text :=floattostr(bdr);
end
else if (combobox2.Text ='1') or (combobox2.Text ='3')
then // 串口方式1或3
begin
for i :=0 to 255 do
begin
bdr := ((1+smod)* fosc)/(384*(256-i));
bdr := bdr * 1000000;
if (bdr > tdown) and ( bdr < tup )then
begin
sr :=disp.text+floattostr(bdr)+' :';
sr :=sr+'當i='+inttostr(i)+' 時。';
disp.text :=sr+char(13)+char(10);
end;
end;
end
else
;
//////////////find brod rate by fosc////////////////////
end;
2 :
begin
tdown := strtofloat(two2.text);
tup := strtofloat (two3.text);
bdr := strtofloat(two1.Text );
if ComboBox1.Text = 'smod=0 ' then smod := 0
else if ComboBox1.Text ='smod=1' then smod := 1
else
;
//////////////////find fosc by brd///////////////////
if ComboBox2.Text = '2'
then // 串口方式2
begin
one2.Enabled :=false;
one3.Enabled :=false;
form1.Refresh ;
fosc := 64* bdr /(1+smod);
disp.Text :=floattostr(fosc)+'MHz';
end
else if ComboBox2.Text = '0'
then // 串口方式0
begin
one2.Enabled :=false;
one3.Enabled :=false;
form1.Refresh ;
fosc := bdr * 12;
disp.Text :=floattostr(bdr)+'MHz';
end
else if (combobox2.Text ='1') or (combobox2.Text ='3')
then // 串口方式1或3
begin
for i :=0 to 255 do
begin
fosc := (384*bdr*(256-i))/(1+smod);
fosc := fosc / 1000000;
if (fosc > tdown) and ( fosc < tup )then
begin
sr :=disp.text+floattostr(fosc)+'MHz :';
sr :=sr+'當i='+inttostr(i)+' 時。';
disp.text :=sr+char(13)+char(10);
end;
end;
end
else
;
//////////////////////////////////////////////////
end ;
3 :
begin
fosc := strtofloat(three1.Text );
fosc2 := strtofloat(three2.Text );
if ComboBox1.Text = 'smod=0' then smod := 0
else if ComboBox1.Text ='smod=1' then smod := 1
else
;
///////////////////////////////////////////////////
if ComboBox2.Text = '2'
then // 串口方式2
begin
form1.Refresh ;
bdr := ((1+smod)* fosc)/64;
bdr2:= ((1+smod)* fosc2)/64;
if(bdr <> bdr2) then
disp.Text :='不能找到相同的,除非頻率相同或改更不同的SMOD'
else
begin
bdr:=bdr*1000000;
disp.text := floattostr(bdr)+char(13)+char(10)+'PS:波特率=((1+smod)* fosc)/64';
end;
end
else if ComboBox2.Text = '0'
then // 串口方式0
begin
form1.Refresh ;
bdr := (fosc)/12;
if(fosc <> fosc2) then
disp.Text :='不能找到相同的,除非頻率相同'
else
begin
bdr:=bdr*1000000;
disp.text := floattostr(bdr)+char(13)+char(10)+'PS:波特率=(fosc)/12';
end;
end
else if (combobox2.Text ='1') or (combobox2.Text ='3')
then // 串口方式1或3
begin
if ComboBox1.Text = 'smod=0' then smod := 0
else if ComboBox1.Text ='smod=1' then smod := 1
else
;
form1.Refresh ;
sr:=' ';
disp.Text := ' ';
for i :=0 to 255 do
begin
bdr := ((1+smod)* fosc)/(384*(256-i));
//**//
for j:=0 to 255 do
begin
bdr2:= ((1+smod)* fosc2)/(384*(256-j));
if (((bdr-bdr2)*(bdr-bdr2))<=2)and (bdr>0.0095) then
begin
tup := bdr * 1000000;
if(tup <> tdown)then
begin
sr :=disp.Text+floattostr(tup)+' 時THTL1=';
sr := sr+floattostr(i)+' THTL2='+floattostr(j);
disp.Text := sr+char(13)+char(10);
tdown:=tup;
end
end
else
;
end;
//**//
end;
if(disp.Text = ' ') then disp.Text := '找不到相同波特率';
end
else
;
////////////////////////////////////////////////
end;
end;
button3.Caption := '結束查找';
end
else
if(button3.Caption = '結束查找') then
begin
button3.Caption := '開始查找(search now)';
one1.enabled := false;
one2.enabled := false;
one3.enabled := false;
two1.enabled := false;
two2.enabled := false;
two3.enabled := false;
three1.enabled := false;
three2.enabled := false;
Button3.Enabled :=false;
end;
end;
procedure TForm1.one1Enter(Sender: TObject);
begin
whof :=1;
end;
procedure TForm1.one2Enter(Sender: TObject);
begin
whof :=1;
end;
procedure TForm1.one3Enter(Sender: TObject);
begin
whof :=1;
end;
procedure TForm1.two1Enter(Sender: TObject);
begin
whof :=2;
end;
procedure TForm1.two2Enter(Sender: TObject);
begin
whof :=2;
end;
procedure TForm1.two3Enter(Sender: TObject);
begin
whof :=2;
end;
procedure TForm1.three1Enter(Sender: TObject);
begin
whof :=3;
end;
procedure TForm1.three2Enter(Sender: TObject);
begin
whof :=3;
end;
procedure TForm1.fourEnter(Sender: TObject);
begin
whof :=4;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
one1.enabled := false;
one2.enabled := false;
one3.enabled := false;
two1.enabled := false;
two2.enabled := false;
two3.enabled := false;
three1.enabled := false;
three2.enabled := false;
Button3.Enabled :=false;
end;
procedure TForm1.ComBoxDblClick(Sender: TObject);
begin
one1.enabled := false;
one2.enabled := false;
one3.enabled := false;
two1.enabled := false;
two2.enabled := false;
two3.enabled := false;
three1.enabled := false;
three2.enabled := false;
Button3.Enabled :=true;
button3.Caption :='開始查找(search now)';
if ComboBox1.Text = 'smod=0' then smod := 0
else if ComboBox1.Text ='smod=1' then smod := 1
else
;
if combox.SelText = '1、由頻率求波特率' then
whof :=1
else if combox.selText='2、由波特率求頻率' then
whof :=2
else if combox.SelText='3、由2個頻率求波特率相同的THTHL' then
whof :=3;
case whof of
1 :
begin
one1.enabled := true;
one2.enabled := true;
one3.enabled := true;
end;
2:
begin
two1.enabled := true;
two2.enabled := true;
two3.enabled := true;
end;
3:
begin
three1.enabled := true;
three2.enabled := true;
end;
end;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -