C
csgcsw
Unregistered / Unconfirmed
GUEST, unregistred user!
谢谢各位,问题解决。
我重新向用户咨询了一下,用户终于找到了相关的说明:
机地址即为下位机控制的仪器的号码(这个程序实际上是电脑控制下位机,下位机控制仪器,仪器号码可在下位机中设置,我这里设为02)。
求和低位,求和高位,正如labelsoft所说,是前面各值的累加,唯一不同的是,不包括起始码。
我按照labelsoft的代码试了一下,运行,通过,下位机终于有正确的反应了。
我的发送代码:
var
Cmd: array[0..11] of Byte;
sCmd: string;
i: Integer;
wSum: Word;
begin
sCmd := '55BBD002000000000000';//发送复位命令
wSum := 0;
for i := 0 to Length(sCmd) div 2 - 1 do
begin
Cmd := StrToInt('$'+Copy(sCmd,i*2+1,2));
if i>=1 then //求和时,不包括起始码
wSum := wSum + Cmd;
end;
Cmd[10] := wSum and $FF;
Cmd[11] := wSum shr 8;
comm1.WriteCommData(@cmd, 12);
end;
非常感谢luckyduo,fanronghua,labelsoft的解答。
我重新向用户咨询了一下,用户终于找到了相关的说明:
机地址即为下位机控制的仪器的号码(这个程序实际上是电脑控制下位机,下位机控制仪器,仪器号码可在下位机中设置,我这里设为02)。
求和低位,求和高位,正如labelsoft所说,是前面各值的累加,唯一不同的是,不包括起始码。
我按照labelsoft的代码试了一下,运行,通过,下位机终于有正确的反应了。
我的发送代码:
var
Cmd: array[0..11] of Byte;
sCmd: string;
i: Integer;
wSum: Word;
begin
sCmd := '55BBD002000000000000';//发送复位命令
wSum := 0;
for i := 0 to Length(sCmd) div 2 - 1 do
begin
Cmd := StrToInt('$'+Copy(sCmd,i*2+1,2));
if i>=1 then //求和时,不包括起始码
wSum := wSum + Cmd;
end;
Cmd[10] := wSum and $FF;
Cmd[11] := wSum shr 8;
comm1.WriteCommData(@cmd, 12);
end;
非常感谢luckyduo,fanronghua,labelsoft的解答。