📄 main.pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,math,StrUtils, StdCtrls, OleCtrls, MSCommLib_TLB, XPMan, ComCtrls,
Menus, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
MSComm1: TMSComm;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Memo2: TMemo;
Button8: TButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Button10: TButton;
GroupBox2: TGroupBox;
Label9: TLabel;
Label10: TLabel;
Label5: TLabel;
Label23: TLabel;
Button9: TButton;
Edit1: TEdit;
Edit2: TEdit;
ListBox4: TListBox;
Button26: TButton;
Memo1: TMemo;
Memo3: TMemo;
TabSheet2: TTabSheet;
GroupBox7: TGroupBox;
Label19: TLabel;
Label20: TLabel;
Label6: TLabel;
Label24: TLabel;
Button20: TButton;
Edit3: TEdit;
Edit4: TEdit;
ListBox5: TListBox;
Button11: TButton;
Button13: TButton;
Memo4: TMemo;
Memo9: TMemo;
TabSheet3: TTabSheet;
GroupBox5: TGroupBox;
Label15: TLabel;
Label16: TLabel;
Label8: TLabel;
Label25: TLabel;
Button16: TButton;
Edit5: TEdit;
Edit6: TEdit;
ListBox6: TListBox;
Button17: TButton;
Button15: TButton;
Memo5: TMemo;
Memo10: TMemo;
TabSheet4: TTabSheet;
GroupBox3: TGroupBox;
Label7: TLabel;
Label11: TLabel;
Label12: TLabel;
Label26: TLabel;
Button12: TButton;
Edit7: TEdit;
Edit8: TEdit;
ListBox7: TListBox;
Button19: TButton;
Button21: TButton;
Memo6: TMemo;
Memo11: TMemo;
TabSheet5: TTabSheet;
GroupBox4: TGroupBox;
Label13: TLabel;
Label14: TLabel;
Label21: TLabel;
Label28: TLabel;
Button14: TButton;
Edit9: TEdit;
Edit10: TEdit;
ListBox8: TListBox;
Button22: TButton;
Button23: TButton;
Memo7: TMemo;
Memo12: TMemo;
TabSheet6: TTabSheet;
GroupBox6: TGroupBox;
Label17: TLabel;
Label18: TLabel;
Label22: TLabel;
Label29: TLabel;
Button18: TButton;
Edit11: TEdit;
Edit12: TEdit;
ListBox9: TListBox;
Button24: TButton;
Button25: TButton;
Memo8: TMemo;
Memo13: TMemo;
MainMenu1: TMainMenu;
N1: TMenuItem;
N7: TMenuItem;
N2: TMenuItem;
N8: TMenuItem;
StatusBar1: TStatusBar;
N3: TMenuItem;
Label30: TLabel;
GroupBox1: TGroupBox;
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure MSComm1Comm(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button22Click(Sender: TObject);
procedure Button24Click(Sender: TObject);
procedure Button26Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button21Click(Sender: TObject);
procedure Button23Click(Sender: TObject);
procedure Button25Click(Sender: TObject);
procedure ListBox4Click(Sender: TObject);
procedure ListBox5Click(Sender: TObject);
procedure ListBox6Click(Sender: TObject);
procedure ListBox7Click(Sender: TObject);
procedure ListBox8Click(Sender: TObject);
procedure ListBox9Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button20Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
dataout_1:array[0..94] of double;//转移用
dataout1:array of integer;
dataout2:array of integer;
dataout3:array of integer;
dataout4:array of integer;
dataout5:array of integer;
dataout6:array of integer;
b:integer; //显示序号
m1:integer;//谐波的个数
m2:integer;
m3:integer;
m4:integer;
m5:integer;
m6:integer;
k1:array of integer;//谐波次数
k2:array of integer;
k3:array of integer;
k4:array of integer;
k5:array of integer;
k6:array of integer;
l1:array of integer;//谐波幅度
l2:array of integer;
l3:array of integer;
l4:array of integer;
l5:array of integer;
l6:array of integer;
p1:array of integer;//相角
p2:array of integer;
p3:array of integer;
p4:array of integer;
p5:array of integer;
p6:array of integer;
w:integer;//采样点数
v:integer;//时间点
flag_1:boolean;
flag_2:boolean;
flag_3:boolean;
flag_4:boolean;
flag_5:boolean;
implementation
{$R *.dfm}
uses functions;
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
m1:=0; //谐波数为零
m2:=0;
m3:=0;
m4:=0;
m5:=0;
m6:=0;
w:=95; //采64个点
flag_1:=false; //保证通讯顺序用的
flag_2:=false;
flag_3:=false;
flag_4:=false;
flag_5:=false;
Button9.Enabled:=false;
Button20.Enabled:=false;
Button16.Enabled:=false;
Button12.Enabled:=false;
Button18.Enabled:=false;
Button14.Enabled:=false;
setlength(dataout1,95); //保存95个数据
setlength(dataout2,95);
setlength(dataout3,95);
setlength(dataout4,95);
setlength(dataout5,95);
setlength(dataout6,95);
//初始化listbox1
for i:=1 to 32 do
if i<10 then
begin
listbox1.Items.add('0'+inttostr(i)+'次谐波');
end
else
begin
listbox1.Items.add(inttostr(i)+'次谐波');
end;
//避免刚开始添加时点击LISTBOX出错
listbox4.Enabled:=false;
listbox5.Enabled:=false;
listbox6.Enabled:=false;
listbox7.Enabled:=false;
listbox8.Enabled:=false;
listbox9.Enabled:=false;
l1:=0;
k1:=0;
m1:=0;
l2:=0;
k2:=0;
m2:=0;
l2:=0;
k2:=0;
m2:=0;
l3:=0;
k3:=0;
m3:=0;
l4:=0;
k4:=0;
m4:=0;
l5:=0;
k5:=0;
m5:=0;
//测试数据
// for i:=0 to 94 do
// begin
// dataout[i]:=round(sin(PI*i/47)*127+128);
// memo1.lines.add(inttostr(dataout[i]));
// end;
//测试数据
end;
procedure TForm1.MSComm1Comm(Sender: TObject);
var
buffer: Olevariant;//MSComm1.InputMode = comInputModeBinary
i: integer;
strr:string;
cc:string;
tempvalue:real;
endt:int64;
r:real;
begin
if(MSComm1.CommEvent=comEvReceive) then //串行接收事件处理
begin
buffer := MSComm1.Input;//读出后会自动清除接收缓冲区,buffer[0]~buffer[31]
strr:='';
// for i := 0 to MSComm1.RThreshold - 1 do //32字节Hex转换
strr:= strr + inttohex(buffer[0], 2);
memo2.Lines.Add(inttostr(strtoint('$'+strr))); //显示接收数据
cc:=' ';
b:=b+1;
strr:=inttohex(b,2)+cc+strr;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i:integer;
str:string;
begin
listbox4.Enabled:=true;
listbox5.Enabled:=true;
listbox6.Enabled:=true;
listbox7.Enabled:=true;
listbox8.Enabled:=true;
listbox9.Enabled:=true;
//波形设置可以进行修改
Button9.Enabled:=true;
Button20.Enabled:=true;
Button16.Enabled:=true;
Button12.Enabled:=true;
Button18.Enabled:=true;
Button14.Enabled:=true;
//################################
//一通道
setlength(k1,m1); //设置波次
setlength(l1,m1); //设置幅度
setlength(p1,m1); //设置相角
//二通道
setlength(k2,m2);
setlength(l2,m2);
setlength(p2,m2);
//三通道
setlength(k3,m3);
setlength(l3,m3);
setlength(p3,m3);
//四通道
setlength(k4,m4);
setlength(l4,m4);
setlength(p4,m4);
//五通道
setlength(k5,m5);
setlength(l5,m5);
setlength(p5,m5);
//六通道
setlength(k6,m6);
setlength(l6,m6);
setlength(p6,m6);
//################################
//一通道
for i := 0 to listbox4.Count -1 do //初始化设置框显示
begin
l1[i]:=1;
p1[i]:=0;
str:=trim(listbox4.Items[i]);
str:=ansireplacestr(str,'次谐波','');
k1[i]:=strtoint(str);
end;
//二通道
for i := 0 to listbox5.Count -1 do //初始化设置框显示
begin
l2[i]:=1;
p2[i]:=0;
str:=trim(listbox5.Items[i]);
str:=ansireplacestr(str,'次谐波','');
k2[i]:=strtoint(str);
end;
//三通道
for i := 0 to listbox6.Count -1 do //初始化设置框显示
begin
l3[i]:=1;
p3[i]:=0;
str:=trim(listbox6.Items[i]);
str:=ansireplacestr(str,'次谐波','');
k3[i]:=strtoint(str);
end;
//四通道
for i := 0 to listbox7.Count -1 do //初始化设置框显示
begin
l4[i]:=1;
p4[i]:=0;
str:=trim(listbox7.Items[i]);
str:=ansireplacestr(str,'次谐波','');
k4[i]:=strtoint(str);
end;
//五通道
for i := 0 to listbox8.Count -1 do //初始化设置框显示
begin
l5[i]:=1;
p5[i]:=0;
str:=trim(listbox8.Items[i]);
str:=ansireplacestr(str,'次谐波','');
k5[i]:=strtoint(str);
end;
//六通道
for i := 0 to listbox9.Count -1 do //初始化设置框显示
begin
l6[i]:=1;
p6[i]:=0;
str:=trim(listbox9.Items[i]);
str:=ansireplacestr(str,'次谐波','');
k6[i]:=strtoint(str);
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
//更改不允许
Button9.Enabled:=false;
Button20.Enabled:=false;
Button16.Enabled:=false;
Button12.Enabled:=false;
Button18.Enabled:=false;
Button14.Enabled:=false;
//################################
//清空memo
memo1.Lines.Clear;
memo2.Lines.Clear;
memo3.Lines.Clear;
memo4.Lines.Clear;
memo5.Lines.Clear;
memo6.Lines.Clear;
memo7.Lines.Clear;
memo8.Lines.Clear;
memo9.Lines.Clear;
memo10.Lines.Clear;
memo11.Lines.Clear;
memo12.Lines.Clear;
memo13.Lines.Clear;
//################################
//清空listbox
listbox4.Items.Clear;
listbox5.Items.Clear;
listbox6.Items.Clear;
listbox7.Items.Clear;
listbox8.Items.Clear;
listbox9.Items.Clear;
//################################
//清空当前波次显示
Label23.Caption:='';
Label24.Caption:='';
Label25.Caption:='';
Label26.Caption:='';
Label28.Caption:='';
Label29.Caption:='';
//################################
l1:=0;
k1:=0;
m1:=0;
l2:=0;
k2:=0;
m2:=0;
l2:=0;
k2:=0;
m2:=0;
l3:=0;
k3:=0;
m3:=0;
l4:=0;
k4:=0;
m4:=0;
l5:=0;
k5:=0;
m5:=0;
end;
procedure TForm1.Button6Click(Sender: TObject);
var
str:string;
osenddata:variant;
osendstr:olevariant;
i:integer;
g:double;
begin
//显示各个值是否正确
//通道一
memo1.Lines.Clear;
for i:=0 to m1-1 do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -