本文整理自网络,侵删。
unit Unit1;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, SPComm,StrUtils;
type TForm1 = class(TForm) Comm1: TComm; Button1: TButton; Memo1: TMemo; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Comm1ReceiveData(Sender: TObject; Buffer: PAnsiChar; BufferLength: Word); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; s:tstringlist; j:integer; function HexToDec(const AHexString: String): Integer;implementation
{$R *.dfm}function HexToDec(const AHexString: String): Integer;beginResult := StrToInt('$' + AHexString);end;
procedure TForm1.Button1Click(Sender: TObject);begincomm1.StartComm;if comm1.Handle>0 thenshowmessage('打开成功')elseshowmessage('打开失败');
end;
procedure TForm1.Button2Click(Sender: TObject);varsbuf: array [1..8] of byte;i:integer;begin sbuf[1]:=byte($CC); sbuf[2]:=byte($80); sbuf[3]:=byte($03); sbuf[4]:=byte($03); sbuf[5]:=byte($01); sbuf[6]:=byte($01); sbuf[7]:=byte($00); sbuf[8]:=byte($00); //异或校验
for i := 1 to 8 do if not comm1.WriteCommData(@sbuf[i],1) then showmessage('失败'+inttohex(sbuf[i])); j:=8;end;
procedure TForm1.Button3Click(Sender: TObject);varsbuf: array [1..8] of byte;i:integer;begin sbuf[1]:=byte($CC); sbuf[2]:=byte($80); sbuf[3]:=byte($03); sbuf[4]:=byte($03); sbuf[5]:=byte($01); sbuf[6]:=byte($02); sbuf[7]:=byte($00); sbuf[8]:=byte($03); //异或校验
for i := 1 to 8 do if not comm1.WriteCommData(@sbuf[i],1) then showmessage('失败'+inttohex(sbuf[i])); j:=8;end;
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: PAnsiChar; BufferLength: Word);vartemp:Ansistring;i:integer;begintemp:=buffer;if j>0 then begin j:=j-1; exit; end; for i := 1 to length(temp) do begin s.Add(inttostr(ord(temp[i]))); memo1.Text:=memo1.Text+IntTohex(ord(temp[i]))+' '; end;
if s.Count=17 then begin try edit1.Text:=s[13]; edit2.Text:=s[14]; edit3.Text:=s[15]; finally s.Clear; end; endelse if s[0]<>'170' then s.Clear;end;
procedure TForm1.FormCreate(Sender: TObject);begin memo1.Text:=''; s:=tstringlist.Create;end;
end.



相关阅读 >>
Delphi readprocessmemory writeprocessmemory读写内存
Delphi fmx 从app程序直接跳转到支付宝付款转帐页面
Delphi 任务栏显示进度条 createcomobject(clsid_taskbarlist) as itaskbarlist4
Delphi有无生成空格的函数,like vb的space(1)
更多相关阅读请进入《Delphi》频道 >>