procedure TSG_Form.SpeedButton1Click(Sender: TObject);
begin
CurrentSGWave := (Sender as TSpeedButton).Tag;
SetupWavePara_Btn.Enabled := True; ReDraw_timer.Enabled := False;
if (CurrentSGWave = 0) or (CurrentSGWave = 6) or (CurrentSGWave = 7) then
begin
SetupWavePara_Btn.Enabled := False;
ReDraw_timer.Enabled := True;
end;
if SGSendWave then
begin
DownLoad;
DrawWave(Wave_Pic);
end
else
DrawWave(Wave_Pic);
end; procedure TSG_Form.TrigerType_CBChange(Sender: TObject);
begin
case TrigerType_CB.ItemIndex of
0: SGSetConByte := SGSetConByte and $fb; // 1111 1011 内触发
1: SGSetConByte := SGSetConByte or $06; // 0000 0110 外触发上升沿
2: begin
SGSetConByte := SGSetConByte or $04;
SGSetConByte := SGSetConByte and $fd; // 1111 1101 外触发下降沿
end;
end;
SetCON(SGSetConByte, 0);
end; procedure TSG_Form.Frequency_EditExit(Sender: TObject);
begin
try
SGFrequency := StrToFloat(Frequency_Edit.Text);
if SGSendWave then
begin
DownLoad;
DrawWave(Wave_Pic);
end
else
DrawWave(Wave_Pic);
except
Frequency_Edit.SetFocus;
Frequency_Edit.Text := FloatToStr(SGFrequency);
Application.MessageBox('请输入正确的频率!', '输入错误', MB_OK + MB_ICONERROR);
end;
end; procedure TSG_Form.Frequency_EditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = 13 then (Sender as TEdit).OnExit(Sender);
end; procedure TSG_Form.Amplitude_EditExit(Sender: TObject);
begin
try
SGAmplitude := StrToFloat(Amplitude_Edit.Text);
if SGSendWave then
begin
DownLoad;
DrawWave(Wave_Pic);
end
else
DrawWave(Wave_Pic);
except
Amplitude_Edit.SetFocus;
Amplitude_Edit.Text := FloatToStr(SGAmplitude);
Application.MessageBox('请输入正确的幅度!', '输入错误', MB_OK + MB_ICONERROR);
end;
end; procedure TSG_Form.YOffset_EditExit(Sender: TObject);
begin
try
SGYOffset := StrToFloat(YOffset_Edit.Text);
if SGSendWave then
begin
DownLoad;
DrawWave(Wave_Pic);
end
else
DrawWave(Wave_Pic);
except
YOffset_Edit.SetFocus;
YOffset_Edit.Text := FloatToStr(SGYOffset);
Application.MessageBox('请输入正确的Y轴偏移!', '输入错误', MB_OK + MB_ICONERROR);
end;
end; procedure TSG_Form.SingleWave_RBClick(Sender: TObject);
begin
if (Sender as TCheckBox).Checked then
SGSetConByte := SGSetConByte or $01 //单波
else
SGSetConByte := SGSetConByte and $fe; //多波
SetCON(SGSetConByte, 0);
end; procedure TSG_Form.UpDown1Click(Sender: TObject; Button: TUDBtnType);
var
i: integer;
begin
if Button = btNext then
begin
try
i := StrToInt(YOffset_Edit.Text);
if i < 10000 then
YOffset_Edit.Text := IntToStr(i + 1);
YOffset_Edit.OnExit(YOffset_Edit);
except
YOffset_Edit.SetFocus;
YOffset_Edit.Text := FloatToStr(SGYOffset);
Application.MessageBox('请输入正确的Y轴偏移!', '输入错误', MB_OK + MB_ICONERROR);
end;
end;
if Button = btPrev then
begin
try
i := StrToInt(YOffset_Edit.Text);
if i > -10000 then
YOffset_Edit.Text := IntToStr(i - 1);
YOffset_Edit.OnExit(YOffset_Edit);
except
YOffset_Edit.SetFocus;
YOffset_Edit.Text := FloatToStr(SGYOffset);
Application.MessageBox('请输入正确的Y轴偏移!', '输入错误', MB_OK + MB_ICONERROR);
end;
end;
end; procedure TSG_Form.Knob1Change(Sender: TObject);
var
tpos, ttag: integer;
r: real;
begin
SGSendWave := false;
tpos := (Sender as TKnob).Position;
ttag := (Sender as TKnob).Tag;
if tpos > ttag then
begin
try
r := StrToFloat(Frequency_Edit.Text);
if r < 12000000 then
Frequency_Edit.Text := format('%8.0f', [r+1]);
except
Frequency_Edit.SetFocus;
Frequency_Edit.Text := FloatToStr(SGFrequency);
Application.MessageBox('请输入正确的频率!', '输入错误', MB_OK + MB_ICONERROR);
end;
end;
if tpos < ttag then
begin
try
r := StrToInt(Frequency_Edit.Text);
if r > 1 then
Frequency_Edit.Text := format('%8.0f', [r-1]);
except
Frequency_Edit.SetFocus;
Frequency_Edit.Text := FloatToStr(SGFrequency);
Application.MessageBox('请输入正确的频率!', '输入错误', MB_OK + MB_ICONERROR);
end;
end;
(Sender as TKnob).Tag := (Sender as TKnob).Position;
end; procedure TSG_Form.Knob2Change(Sender: TObject);
var
r: real;
tpos, ttag: integer;
begin
SGSendWave := false;
tpos := (Sender as TKnob).Position;
ttag := (Sender as TKnob).Tag;
if tpos > ttag then
begin
try
r := StrToFloat(Amplitude_Edit.Text);
if r < 10.0 then
Amplitude_Edit.Text := format('%2.3f', [r+0.007]);
except
Amplitude_Edit.SetFocus;
Amplitude_Edit.Text := FloatToStr(SGAmplitude);
Application.MessageBox('请输入正确的幅度!', '输入错误', MB_OK + MB_ICONERROR);
end;
end;
if tpos < ttag then
begin
try
r := StrToFloat(Amplitude_Edit.Text);
if r > 0.007 then
Amplitude_Edit.Text := format('%2.3f', [r-0.007]);
except
Amplitude_Edit.SetFocus;
Amplitude_Edit.Text := FloatToStr(SGAmplitude);
Application.MessageBox('请输入正确的幅度!', '输入错误', MB_OK + MB_ICONERROR);
end;
end;
(Sender as TKnob).Tag := (Sender as TKnob).Position;
end; procedure TSG_Form.Knob2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SGSendWave := true;
Amplitude_Edit.OnChange (Amplitude_Edit);
end; procedure TSG_Form.Knob1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SGSendWave := true;
Frequency_Edit.OnChange (Frequency_Edit);
end; end.
begin
CurrentSGWave := (Sender as TSpeedButton).Tag;
SetupWavePara_Btn.Enabled := True; ReDraw_timer.Enabled := False;
if (CurrentSGWave = 0) or (CurrentSGWave = 6) or (CurrentSGWave = 7) then
begin
SetupWavePara_Btn.Enabled := False;
ReDraw_timer.Enabled := True;
end;
if SGSendWave then
begin
DownLoad;
DrawWave(Wave_Pic);
end
else
DrawWave(Wave_Pic);
end; procedure TSG_Form.TrigerType_CBChange(Sender: TObject);
begin
case TrigerType_CB.ItemIndex of
0: SGSetConByte := SGSetConByte and $fb; // 1111 1011 内触发
1: SGSetConByte := SGSetConByte or $06; // 0000 0110 外触发上升沿
2: begin
SGSetConByte := SGSetConByte or $04;
SGSetConByte := SGSetConByte and $fd; // 1111 1101 外触发下降沿
end;
end;
SetCON(SGSetConByte, 0);
end; procedure TSG_Form.Frequency_EditExit(Sender: TObject);
begin
try
SGFrequency := StrToFloat(Frequency_Edit.Text);
if SGSendWave then
begin
DownLoad;
DrawWave(Wave_Pic);
end
else
DrawWave(Wave_Pic);
except
Frequency_Edit.SetFocus;
Frequency_Edit.Text := FloatToStr(SGFrequency);
Application.MessageBox('请输入正确的频率!', '输入错误', MB_OK + MB_ICONERROR);
end;
end; procedure TSG_Form.Frequency_EditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = 13 then (Sender as TEdit).OnExit(Sender);
end; procedure TSG_Form.Amplitude_EditExit(Sender: TObject);
begin
try
SGAmplitude := StrToFloat(Amplitude_Edit.Text);
if SGSendWave then
begin
DownLoad;
DrawWave(Wave_Pic);
end
else
DrawWave(Wave_Pic);
except
Amplitude_Edit.SetFocus;
Amplitude_Edit.Text := FloatToStr(SGAmplitude);
Application.MessageBox('请输入正确的幅度!', '输入错误', MB_OK + MB_ICONERROR);
end;
end; procedure TSG_Form.YOffset_EditExit(Sender: TObject);
begin
try
SGYOffset := StrToFloat(YOffset_Edit.Text);
if SGSendWave then
begin
DownLoad;
DrawWave(Wave_Pic);
end
else
DrawWave(Wave_Pic);
except
YOffset_Edit.SetFocus;
YOffset_Edit.Text := FloatToStr(SGYOffset);
Application.MessageBox('请输入正确的Y轴偏移!', '输入错误', MB_OK + MB_ICONERROR);
end;
end; procedure TSG_Form.SingleWave_RBClick(Sender: TObject);
begin
if (Sender as TCheckBox).Checked then
SGSetConByte := SGSetConByte or $01 //单波
else
SGSetConByte := SGSetConByte and $fe; //多波
SetCON(SGSetConByte, 0);
end; procedure TSG_Form.UpDown1Click(Sender: TObject; Button: TUDBtnType);
var
i: integer;
begin
if Button = btNext then
begin
try
i := StrToInt(YOffset_Edit.Text);
if i < 10000 then
YOffset_Edit.Text := IntToStr(i + 1);
YOffset_Edit.OnExit(YOffset_Edit);
except
YOffset_Edit.SetFocus;
YOffset_Edit.Text := FloatToStr(SGYOffset);
Application.MessageBox('请输入正确的Y轴偏移!', '输入错误', MB_OK + MB_ICONERROR);
end;
end;
if Button = btPrev then
begin
try
i := StrToInt(YOffset_Edit.Text);
if i > -10000 then
YOffset_Edit.Text := IntToStr(i - 1);
YOffset_Edit.OnExit(YOffset_Edit);
except
YOffset_Edit.SetFocus;
YOffset_Edit.Text := FloatToStr(SGYOffset);
Application.MessageBox('请输入正确的Y轴偏移!', '输入错误', MB_OK + MB_ICONERROR);
end;
end;
end; procedure TSG_Form.Knob1Change(Sender: TObject);
var
tpos, ttag: integer;
r: real;
begin
SGSendWave := false;
tpos := (Sender as TKnob).Position;
ttag := (Sender as TKnob).Tag;
if tpos > ttag then
begin
try
r := StrToFloat(Frequency_Edit.Text);
if r < 12000000 then
Frequency_Edit.Text := format('%8.0f', [r+1]);
except
Frequency_Edit.SetFocus;
Frequency_Edit.Text := FloatToStr(SGFrequency);
Application.MessageBox('请输入正确的频率!', '输入错误', MB_OK + MB_ICONERROR);
end;
end;
if tpos < ttag then
begin
try
r := StrToInt(Frequency_Edit.Text);
if r > 1 then
Frequency_Edit.Text := format('%8.0f', [r-1]);
except
Frequency_Edit.SetFocus;
Frequency_Edit.Text := FloatToStr(SGFrequency);
Application.MessageBox('请输入正确的频率!', '输入错误', MB_OK + MB_ICONERROR);
end;
end;
(Sender as TKnob).Tag := (Sender as TKnob).Position;
end; procedure TSG_Form.Knob2Change(Sender: TObject);
var
r: real;
tpos, ttag: integer;
begin
SGSendWave := false;
tpos := (Sender as TKnob).Position;
ttag := (Sender as TKnob).Tag;
if tpos > ttag then
begin
try
r := StrToFloat(Amplitude_Edit.Text);
if r < 10.0 then
Amplitude_Edit.Text := format('%2.3f', [r+0.007]);
except
Amplitude_Edit.SetFocus;
Amplitude_Edit.Text := FloatToStr(SGAmplitude);
Application.MessageBox('请输入正确的幅度!', '输入错误', MB_OK + MB_ICONERROR);
end;
end;
if tpos < ttag then
begin
try
r := StrToFloat(Amplitude_Edit.Text);
if r > 0.007 then
Amplitude_Edit.Text := format('%2.3f', [r-0.007]);
except
Amplitude_Edit.SetFocus;
Amplitude_Edit.Text := FloatToStr(SGAmplitude);
Application.MessageBox('请输入正确的幅度!', '输入错误', MB_OK + MB_ICONERROR);
end;
end;
(Sender as TKnob).Tag := (Sender as TKnob).Position;
end; procedure TSG_Form.Knob2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SGSendWave := true;
Amplitude_Edit.OnChange (Amplitude_Edit);
end; procedure TSG_Form.Knob1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SGSendWave := true;
Frequency_Edit.OnChange (Frequency_Edit);
end; end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货