📄 unit3.pas
字号:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls, Grids, ValEdit,Prodave;
type
TForm3 = class(TForm)
Panel1: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Panel2: TPanel;
RadioGroup1: TRadioGroup;
Edit1: TEdit;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
RichEdit2: TRichEdit;
Panel6: TPanel;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button6: TButton;
RadioGroup2: TRadioGroup;
Edit4: TEdit;
Label4: TLabel;
Label5: TLabel;
Edit5: TEdit;
RichEdit1: TRichEdit;
Edit6: TEdit;
Label6: TLabel;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses main;
var
data1:array[0..255] of byte;//简单读写暂存区
res:integer;
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
var
tt:string;
aa,sss:integer;
begin
sss:=0;
SetLength (tt, 100);
if commustatus<>1 then
begin
MessageBox(Handle, '通讯未打开', '错误', MB_OK + MB_ICONINFORMATION + MB_TOPMOST) ;
exit;
end;
if ((radiogroup1.ItemIndex <0) or (radiogroup1.ItemIndex> 5))then
begin
messagebox(null,'error','未选择内存类型',MB_OK ) ;
exit;
end ;
if ((radiogroup2.ItemIndex <0 )or (radiogroup2.ItemIndex> 3))then
begin
messagebox(null,'error','未选择工作模式',MB_OK ) ;
exit;
end;
//数据读取
case radiogroup1.ItemIndex of
0:// 输入
begin
tt:='输入 byte' ;
res:=e_Field_Read(strtoint(edit2.Text), strtoint(edit3.Text), data1) ;
end ;
1: //输出
begin
tt:='输出 byte ';
res:=a_Field_Read(strtoint(edit2.Text), strtoint(edit3.Text), data1) ;
end;
2: //M区
begin
tt:='M区 byte';
res:=m_Field_Read(strtoint(edit2.Text), strtoint(edit3.Text), data1) ;
end ;
3: // DB块
begin
aa:= strtoint(edit3.Text) ;
tt:='DB块 word' ;
res:=db_Read(strtoint(edit1.Text),strtoint(edit2.Text),aa,data1) ;
end;
4: //定时器
begin
aa:= strtoint(edit5.Text) ;
tt:='定时器 word';
res:=t_Field_Read(strtoint(edit2.Text),strtoint(edit3.Text), data1) ;
end;
5: //计数器
begin
tt:='计数器 word';
res:=z_Field_Read(strtoint(edit2.Text), strtoint(edit3.Text), data1) ;
end;
else
messagebox(null,'error','错误代号一',MB_OK ) ;
end;
if res=0 then
begin
form1.statusbar1.Panels[2].Text:='ok';
tt:=tt+'正常读取';
end;
//报警显示
if res<>0 then
begin
Prodave.Error_Message(res, ErrMess);
form1. statusbar1.Panels[2].Text:=errmess;
exit;
end ;
//读取内容显示 ;
case radiogroup2.ItemIndex of
0:// 十进制
begin
RichEdit2.Text:=RichEdit2.Text+'十进制显示'+tt+#13#10;
// RichEdit2.SelAttributes.Color:= clRed;
RichEdit2.Font.Color := clRed;
if checkbox1.Checked=false then
while( (sss< strtoint(edit3.Text))and (sss < 200) ) do
begin
RichEdit2.Text:=RichEdit2.Text+inttostr(strtoint(edit3.Text)+sss)+'..'+ format('%.2d',[data1[sss]])+#13#10;
sss:=sss+1;
end
else
while( (sss< strtoint(edit3.Text)*2)and (sss < 100) ) do
begin
RichEdit2.Text:=RichEdit2.Text+inttostr(strtoint(edit3.Text)+sss div 2)+'..'+ format('%.2d',[data1[sss]]);
sss:=sss+1;
RichEdit2.Text:= RichEdit2.Text+format('%.2d',[data1[sss]])+#13#10;
sss:=sss+1;
end ;
if checkbox2.Checked=true then
SendMessage(RichEdit2.Handle,EM_SCROLL,SB_BOTTOM,0);
end;
1: // 十六进制
begin
RichEdit2.Text:=RichEdit2.Text+'十六进制显示 '+tt+#13#10;
if checkbox1.Checked=false then
while( (sss< (strtoint(edit3.Text))) and (sss < 200) ) do
begin
RichEdit2.Text:=RichEdit2.Text+inttostr(strtoint(edit2.Text)+sss)+'..'+ format('%.2x',[data1[sss]])+#13#10;
sss:=sss+1;
end
else
while( (sss< strtoint(edit3.Text)*2)and (sss < 100) ) do
begin
// RichEdit2.Text:=RichEdit2.Text+inttostr(strtoint(edit6.Text)+sss)+'..'+ format('%4x',[(pinteger(@data1[sss*2]))^])+#13#10;
RichEdit2.Text:=RichEdit2.Text+inttostr(strtoint(edit2.Text)+sss div 2)+'..'+ format('%.2x',[data1[sss]]);
sss:=sss+1;
RichEdit2.Text:= RichEdit2.Text+format('%.2x',[data1[sss]])+#13#10;
sss:=sss+1;
end;
if checkbox2.Checked=true then
SendMessage(RichEdit2.Handle,EM_SCROLL,SB_BOTTOM,0);
end;
2:// 二进制
begin
RichEdit2.Text:=RichEdit2.Text+'二进制显示 '+tt+#13#10;
if checkbox1.Checked=false then
while( (sss< (strtoint(edit3.Text))) and (sss < 200) ) do
begin
RichEdit2.Text:=RichEdit2.Text+inttostr(strtoint(edit2.Text)+sss)+'..'+ format('%.2x',[data1[sss]])+#13#10;
sss:=sss+1;
end
else
while( (sss< strtoint(edit3.Text)*2)and (sss < 100) ) do
begin
RichEdit2.Text:=RichEdit2.Text+inttostr(strtoint(edit2.Text)+sss div 2)+'..'+ format('%.2x',[data1[sss]]);
sss:=sss+1;
RichEdit2.Text:= RichEdit2.Text+format('%.2x',[data1[sss]])+#13#10;
sss:=sss+1;
end;
if checkbox2.Checked=true then
SendMessage(RichEdit2.Handle,EM_SCROLL,SB_BOTTOM,0);
end;
else
messagebox(null,'error','错误代号二',MB_OK ) ;
end;
end;
procedure TForm3.Button6Click(Sender: TObject);
var
tt:string;
begin
SetLength (tt, 100);
if commustatus<>1 then
begin
MessageBox(Handle, '通讯未打开', '错误', MB_OK + MB_ICONINFORMATION + MB_TOPMOST) ;
exit;
end;
if ((radiogroup1.ItemIndex <0) or (radiogroup1.ItemIndex> 5))then
begin
messagebox(null,'error','未选择内存类型',MB_OK ) ;
exit;
end ;
if ((radiogroup2.ItemIndex <0 )or (radiogroup2.ItemIndex> 3))then
begin
messagebox(null,'error','未选择工作模式',MB_OK ) ;
exit;
end;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
RichEdit2.Clear;
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
if(savedialog1.Execute)then
begin
RichEdit2.Lines.SaveToFile(savedialog1.FileName);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -