1,593
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientSocket1.Port:=502;
ClientSocket1.Host:='192.168.1.5';
ClientSocket1.Active:=true;
end;
procedure TForm1.btnWriteDataClick(Sender: TObject);
var
sendBuff:array[1..1024] of byte;
i:integer;
l:integer;
data:string;
begin
l:=length(self.memo1.text);
//前13byte为MODBUS TCP头
sendBuff[1]:=0;//事务处理标识。
sendBuff[2]:=0;
sendBuff[3]:=0;//协议标识。
sendBuff[4]:=0;
sendBuff[5]:=0;//后面的字节数。
sendBuff[6]:=13+200;
sendBuff[7]:=255;
sendBuff[8]:=16;//操作,16为写寄存器,4为读寄存器。
sendBuff[9] := 68;//寄存器操作起始地址,对于BL67-PG-EN来说,写操作的起始地址为oX4400~oX47ff,读操作的起始地址为oX4000~oX43ff。
sendBuff[10] := 0;
sendBuff[11] := 0;//寄存器操作数量。
sendBuff[12] := (6+200)div 2;
sendBuff[13] := 6+200;//后边的字节数。
//需要的数据
sendBuff[14] := 3; //操作指令。3为写,祥见“RFID命令.txt”文件。
sendBuff[15] := 1;//通道。
sendBuff[16] := 0; //起始地址。
sendBuff[17] := 0;
sendBuff[18] := 0;//读写数据长度。
sendBuff[19] := 200;
for i:=1 to l do
begin
sendBuff[i+19]:=ord(self.memo1.text[i]);
end;
for i:=l+19+1 to 200+19 do
begin
sendBuff[i]:=0;
end;
for i:=1 to l do
begin
data:=data+chr(sendBuff[i+19]);
end;
ClientSocket1.Socket.SendBuf(sendBuff,1024);
self.memo3.Text:=data;