📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button7: TButton;
Label5: TLabel;
Edit5: TEdit;
GroupBox3: TGroupBox;
Button8: TButton;
Button9: TButton;
Label7: TLabel;
Edit7: TEdit;
Label8: TLabel;
Edit8: TEdit;
GroupBox4: TGroupBox;
Button10: TButton;
Label9: TLabel;
Edit9: TEdit;
Label10: TLabel;
Edit10: TEdit;
GroupBox5: TGroupBox;
Label11: TLabel;
Label12: TLabel;
Button11: TButton;
Edit11: TEdit;
Edit12: TEdit;
Label13: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Edit11Change(Sender: TObject);
procedure Edit12Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
DLL_API='Modbus_RTU.dll';
var
Form1: TForm1;
rxdataBytes: array[0..1024] of byte;
rxdataWords: array[0..1024] of word;
Function OpenCom(ComNo: integer): integer;stdcall;external DLL_API;
Function CloseCom(): bool;stdcall;external DLL_API;
Function SetBaudRate(BaudRate: integer): integer;stdcall;external DLL_API;
Function writeM(PLCaddr: integer; Maddr: integer; value: integer): integer;stdcall;external DLL_API;
Function bit(Aword: WORD; bitNo: integer):bool;stdcall;external DLL_API;
Function readMW(PLCaddr: integer; MWaddr: integer; length: integer; var buff): integer;stdcall;external DLL_API;
Function writeMW(PLCaddr: integer; MWaddr: integer; value: integer): integer;stdcall;external DLL_API;
procedure setReadDelay(ADelayTime: integer);stdcall;external DLL_API;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if(OpenCom(4) > 0) then Memo1.Text := '打开串口'
else memo1.Text := 'error';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if(CloseCom()) then Memo1.Text := '关闭'
else memo1.Text := 'error';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1Click(self);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Button2Click(self);
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
if(writeM(1,strtoint(edit5.Text),1) > 0) then memo1.Text := 'ok'
else memo1.Text := 'error';
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
if(writeM(1,strtoint(edit5.Text),0) > 0) then memo1.Text := 'ok'
else memo1.Text := 'error';
end;
procedure TForm1.Button9Click(Sender: TObject);
var
i: integer;
tmp: string;
begin
//for i := 0 to 1000 do rxdataWord[i] := 0;
if(readMW(1,strtoint(edit7.Text),strtoint(edit8.Text),rxdataWords) > 0) then
begin
for i := 0 to strtoint(edit8.Text) - 1 do
tmp := tmp + inttostr(rxdataWords[i]) + ',';
memo1.Text := tmp;
end
else memo1.Text := 'error';
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
if(writeMW(1,strtoint(edit9.Text),strtoint(edit10.Text)) > 0) then memo1.Text := 'ok'
else memo1.Text := 'error';
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
if(bit(strtoint(edit11.Text),strtoint(edit12.Text))) then application.MessageBox('1','')
else application.MessageBox('0','');
end;
procedure TForm1.Edit11Change(Sender: TObject);
begin
if(strtoint(edit11.Text)>65535) then edit11.Text := '0';
end;
procedure TForm1.Edit12Change(Sender: TObject);
begin
if(strtoint(edit12.Text)>15) then edit12.Text := '0';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -