?? umail.pas
字號:
unit Umail;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, iComponent, iVCLComponent,
iCustomComponent, iLed, iLedRound,Math,uPublic;
type
TfrmMain = class(TForm)
TimerPLCRdStat: TTimer;
Panel1: TPanel;
Panel2: TPanel;
shpIn1: TShape;
shpIn2: TShape;
shpIn3: TShape;
shpIn4: TShape;
shpIn5: TShape;
shpIn6: TShape;
shpIn7: TShape;
shpIn8: TShape;
shpIn9: TShape;
shpIn10: TShape;
shpIn11: TShape;
shpIn12: TShape;
shpIn13: TShape;
shpIn14: TShape;
shpIn15: TShape;
shpIn16: TShape;
Label1: TLabel;
btnOut1: TSpeedButton;
btnOut2: TSpeedButton;
btnOut3: TSpeedButton;
btnOut4: TSpeedButton;
btnOut5: TSpeedButton;
btnOut6: TSpeedButton;
btnOut7: TSpeedButton;
btnOut8: TSpeedButton;
ledOut1: TiLedRound;
ledOut2: TiLedRound;
ledOut3: TiLedRound;
ledOut4: TiLedRound;
ledOut5: TiLedRound;
ledOut6: TiLedRound;
ledOut7: TiLedRound;
ledOut8: TiLedRound;
Label2: TLabel;
Label3: TLabel;
edtAdr: TEdit;
Label4: TLabel;
SpeedButton1: TSpeedButton;
edtValue: TEdit;
Label5: TLabel;
btnRun: TSpeedButton;
btnStop: TSpeedButton;
SpeedButton2: TSpeedButton;
Memo1: TMemo;
SpeedButton3: TSpeedButton;
btnReadM: TSpeedButton;
edtDAddr: TEdit;
SpeedButton4: TSpeedButton;
edtDValue: TEdit;
D: TLabel;
Button1: TButton;
procedure FormShow(Sender: TObject);
procedure btnOut1Click(Sender: TObject);
procedure TimerPLCRdStatTimer(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure btnRunClick(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure btnReadMClick(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure InputStat();
procedure OutputStat();
end;
var
frmMain: TfrmMain;
G_rPort:TPortInfo;
implementation
uses UDeltaPLC;
{$R *.dfm}
procedure TfrmMain.FormShow(Sender: TObject);
begin
G_rPort.iPort:=1;
G_rPort.iBaud:=9600;
G_rPort.iDataBit:=7;
G_rPort.iStopBit:=1;
G_rPort.sParity:='偶校驗';
OpenPort(G_rPort);
kmtPLC:=TKMTPLC.Create(G_rPort.iPort);
// kmtPLC.InitPLC();
// TimerPLCRdStat.Enabled:=true;
end;
procedure TfrmMain.btnOut1Click(Sender: TObject);
var
sCmd:String;
begin
kmtPlc.SetOutputStat((sender as TSpeedButton).Tag,not kmtPlc.bOutputStat[(sender as TSpeedButton).Tag]);
end;
Function mypower(n,m:Integer):Integer;
var
i,iRes:Integer;
Begin
iRes:=1;
for i:=1 to m do
iRes:=iRes*n;
Result:=iRes;
End;
procedure TfrmMain.OutputStat();
var
ledOut:array [1..8] of TiLedRound;
i:Integer;
Begin
ledOut[1]:=ledOut1;
ledOut[2]:=ledOut2;
ledOut[3]:=ledOut3;
ledOut[4]:=ledOut4;
ledOut[5]:=ledOut5;
ledOut[6]:=ledOut6;
ledOut[7]:=ledOut7;
ledOut[8]:=ledOut8;
for i:=1 to 8 do
Begin
ledOut[i].Active:=kmtPlc.bOutputStat[i];
end;
End;
procedure TfrmMain.InputStat();
var
ShpIn:array [1..16] of TShape;
i:Integer;
Begin
ShpIn[1]:=ShpIn1;
ShpIn[2]:=ShpIn2;
ShpIn[3]:=ShpIn3;
ShpIn[4]:=ShpIn4;
ShpIn[5]:=ShpIn5;
ShpIn[6]:=ShpIn6;
ShpIn[7]:=ShpIn7;
ShpIn[8]:=ShpIn8;
ShpIn[9]:=ShpIn9;
ShpIn[10]:=ShpIn10;
ShpIn[11]:=ShpIn11;
ShpIn[12]:=ShpIn12;
ShpIn[13]:=ShpIn13;
ShpIn[14]:=ShpIn14;
ShpIn[15]:=ShpIn15;
ShpIn[16]:=ShpIn16;
for i:=1 to 16 do
Begin
if kmtPlc.bInputStat[i] then
Begin
ShpIn[i].Brush.Color:=clRed
End
else
Begin
ShpIn[i].Brush.Color:=clWhite;
End;
end;
End;
procedure TfrmMain.TimerPLCRdStatTimer(Sender: TObject);
begin
InputStat();
OutputStat();
end;
procedure TfrmMain.SpeedButton1Click(Sender: TObject);
var
sStr:String;
begin
kmtPLC.SendData(edtAdr.Text); //取輸出狀態
sStr:=kmtPLC.ReadResFromPort();
if sStr<>'' then
Begin
edtValue.Text:=sStr;
End;
end;
procedure TfrmMain.btnRunClick(Sender: TObject);
var
sStr:String;
begin
kmtPLC.SendData('01050C30FF00'); //取輸出狀態
sStr:=kmtPLC.ReadResFromPort();
end;
procedure TfrmMain.btnStopClick(Sender: TObject);
var
sStr:String;
begin
kmtPLC.SendData('01050C300000'); //取輸出狀態
sStr:=kmtPLC.ReadResFromPort();
end;
procedure TfrmMain.SpeedButton2Click(Sender: TObject);
begin
kmtPLC.tmReadStat.Enabled:=not kmtPLC.tmReadStat.Enabled;
end;
procedure TfrmMain.SpeedButton3Click(Sender: TObject);
var
sStr:String;
i:Integer;
begin
for i:= 0 to 1311 do
Begin
kmtPLC.SendData('0103'+IntToHex(i+$1000,4)+'0001'); //取輸出狀態
sStr:=kmtPLC.ReadResFromPort();
if sStr<>'' then
Begin
memo1.Lines.Add('D'+IntToHex(i,4)+'-'+FormatFloat('0000',i)+'-'+Copy(sStr,1,Length(sStr)-2));
End;
End;
end;
procedure TfrmMain.btnReadMClick(Sender: TObject);
var
sStr:String;
i:Integer;
begin
for i:= 0 to 1279 do
Begin
kmtPLC.SendData('0102'+IntToHex(i+$800,4)+'0001'); //取輸出狀態
sStr:=kmtPLC.ReadResFromPort();
if sStr<>'' then
Begin
memo1.Lines.Add('M'+IntToHex(i,4)+'-'+FormatFloat('0000',i)+'-'+Copy(sStr,1,Length(sStr)-2));
End;
End;
end;
procedure TfrmMain.SpeedButton4Click(Sender: TObject);
var
sStr:String;
begin
kmtPLC.SendData('0103'+IntToHex(StrToInt(edtDAddr.Text)+$1000,4)+'0001');
sStr:=kmtPLC.ReadResFromPort();
if sStr<>'' then
Begin
edtDValue.Text:=sStr;
End;
end;
procedure TfrmMain.Button1Click(Sender: TObject);
var
i:Integer
begin
for
if kmtPlc.bInputStat(1) then
begin
ShowMessage('ss');
end
else
begin
ShowMessage('s');
end;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -