|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2011-12-9 09:06:42
|
显示全部楼层
回复【5楼】xjjiang
-----------------------------------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SPComm, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Comm1: TComm;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
var
rbuf,sbuf:array[0..16] of byte;
viewstring:string;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
comm1.commname:='COM3';
Comm1.StartComm
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Comm1.StopComm;
end;
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i:integer;
begin
move(buffer^,pchar(@rbuf)^,bufferlength);
viewstring:='';
for i:=0 to bufferlength-1 do
viewstring:=viewstring+inttohex(rbuf,2)+' ';
viewstring:='接收'+viewstring;
memo1.lines.add(viewstring);
end;
procedure SendData; //发送数据
var
i:integer;
commflg:boolean;
begin
viewstring:='' ;
commflg:=true;
for i:=0 to 16 do
begin
if not form1.comm1.writecommdata(@sbuf,1) then
begin
commflg:=false;
break;
end;
//发送时字节间的延时
sleep(2);
viewstring:=viewstring+inttohex(sbuf,2)+' ';
end;
viewstring:='发送'+viewstring+' ';
form1.memo1.lines.add(viewstring);
if not commflg then
messagedlg('发送失败',mterror,[mbyes],0)
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
sum:byte;
begin
sum:= 0;
sbuf[0] := byte($F0);
sbuf[1] := byte($52);
sbuf[2] := byte($51);
sbuf[3] := byte($01);
sbuf[4] := byte($00);
for i:=1 to 4 do
sum:=sum+sbuf;
inttohex(sum,2);
sbuf[5] := sum;
sbuf[6] := byte($0F);
SendData;
end;
end. |
|