好的。 procedure Tfmrz.btnyesClick(Sender: TObject); var c:integer; begin sbuf[1]:=SYNC; sbuf[2]:=STX; sbuf[3]:=01; sbuf[4]:=01; sbuf[5]:=03; sbuf[6]:=00; sbuf[7]:=04; if fmrz.combdw.ItemIndex=0 then sbuf[8]:=00 else sbuf[8]:=01; sbuf[9]:=strtoint(txtsz.Text); sbuf[10]:=ETX; sbuf[11]:=121; sbuf[12]:=228; for c:=0 to 12 do begin if not fm.Comm1.WriteCommData(@sbuf[c],12) then begin commdlg:=false; exit; end; sleep(2); end; close; fmml.Enabled:=true; end;
if not fm.Comm1.WriteCommData(@sbuf[c],12) then=> if not fm.Comm1.WriteCommData(@sbuf[c],1) then或 for c:=0 to 12 do begin if not fm.Comm1.WriteCommData(@sbuf[c],12) then begin commdlg:=false; exit; end; sleep(2); end;==> if not fm.Comm1.WriteCommData(@sbuf[c],12) then begin commdlg:=false; exit; end;试一试看
上面打错了 if not fm.Comm1.WriteCommData(@sbuf[c],12) then=> if not fm.Comm1.WriteCommData(@sbuf[c],1) then或者 for c:=0 to 12 do begin if not fm.Comm1.WriteCommData(@sbuf[c],12) then begin commdlg:=false; exit; end; sleep(2); end;==> if not fm.Comm1.WriteCommData(@sbuf[1],12) then begin commdlg:=false; exit; end;试一试看WriteCommData的第一个参数是发送的数据指针,第二个参数是要发送的字节数,如果字节数过多,超出分配的数据区,肯定不行
开始接收的是(16 02 01 01 03 00 04 01 30 03 79 e4)01,30是表示接收的参数
发送(16 02 01 01 03 00 04 00 60 03 79 e4)到户外,其中00,60表示要改变的参数
在发送(16 02 01 01 01 00 05 03 dc 5a),05表示发送的命令
而接收的是(16 02 01 00 03 01 30 00 3C 03 68 9C )01,30表示接收的参数,
按理说接收的是(16 02 01 01 03 00 04 3C 03 68 9C )
procedure Tfmrz.btnyesClick(Sender: TObject);
var
c:integer;
begin
sbuf[1]:=SYNC;
sbuf[2]:=STX;
sbuf[3]:=01;
sbuf[4]:=01;
sbuf[5]:=03;
sbuf[6]:=00;
sbuf[7]:=04;
if fmrz.combdw.ItemIndex=0 then
sbuf[8]:=00
else
sbuf[8]:=01;
sbuf[9]:=strtoint(txtsz.Text);
sbuf[10]:=ETX;
sbuf[11]:=121;
sbuf[12]:=228;
for c:=0 to 12 do
begin
if not fm.Comm1.WriteCommData(@sbuf[c],12) then
begin
commdlg:=false;
exit;
end;
sleep(2);
end;
close;
fmml.Enabled:=true;
end;
begin
if not fm.Comm1.WriteCommData(@sbuf[c],12) then
begin
commdlg:=false;
exit;
end;
sleep(2);
end;==> if not fm.Comm1.WriteCommData(@sbuf[c],12) then
begin
commdlg:=false;
exit;
end;试一试看
begin
if not fm.Comm1.WriteCommData(@sbuf[c],12) then
begin
commdlg:=false;
exit;
end;
sleep(2);
end;==> if not fm.Comm1.WriteCommData(@sbuf[1],12) then
begin
commdlg:=false;
exit;
end;试一试看WriteCommData的第一个参数是发送的数据指针,第二个参数是要发送的字节数,如果字节数过多,超出分配的数据区,肯定不行
sbuf[1]:=SYNC;
sbuf[2]:=STX;
sbuf[3]:=01;
sbuf[4]:=01;
sbuf[5]:=03;
sbuf[6]:=00;
sbuf[7]:=04;
if fmrz.combdw.ItemIndex=0 then
sbuf[8]:=00
else
sbuf[8]:=01;
sbuf[9]:=strtoint(txtsz.Text);
sbuf[10]:=ETX;
sbuf[11]:=215;
sbuf[12]:=192;
后面的指令改变了一下就可以发了,但是
sbuf[11]:=215;
sbuf[12]:=192;
的值是变化的,我就不知道该怎么样赋值了
sbuf: Array [1..12] of Byte;
sbuf: Array [1..12] of char呢?