S
shhw
Unregistered / Unconfirmed
GUEST, unregistred user!
现在要从贝克KJ50型PROMOS监控系统中读取采煤机电流和刮板机电流,根据协议编写了读取数据的数据包,见下面:function Tfrm_ReadOuterData.TianjingBKswitchSendData( Awitch: integer): Boolean;var Crc16:word;
begin
Result := false;
try SetLength(FSendDataArray,0);
SetLength(FSendDataArray,6);
FSendDataArray[0]:= Awitch;
//地址码 FSendDataArray[1]:= 03;
//功能码 FSendDataArray[2]:= hiByt(JZZH16To10('1'));
//起始寄存器高位 FSendDataArray[3]:= LoByt(JZZH16To10('1'));
//起始寄存器低位 FSendDataArray[4]:= hiByt(22);
//寄存器数高位 FSendDataArray[5]:= LoByt(22);
//寄存器数低位 Crc16 := CalCRC16(FSendDataArray,0,length(FSendDataArray)-2);
//校验FEDC Crc16 := MyCRC16(FSendDataArray,length(FSendDataArray));
FSendDataArray[6]:= LoByt(Crc16);
//Crc校验低位 FSendDataArray[7]:= hiByt(Crc16);
//Crc校验高位 CommSendData(FSendDataArray);
except exit;
end;
Result := true;
end;
问题是:发送数据包后,接收不到数据。请问:1、我的数据包格式对吗?2、请给出一个准确的16位的数据校验函数3、如果有做过读取贝克数据的,请给出一个完整的例子
begin
Result := false;
try SetLength(FSendDataArray,0);
SetLength(FSendDataArray,6);
FSendDataArray[0]:= Awitch;
//地址码 FSendDataArray[1]:= 03;
//功能码 FSendDataArray[2]:= hiByt(JZZH16To10('1'));
//起始寄存器高位 FSendDataArray[3]:= LoByt(JZZH16To10('1'));
//起始寄存器低位 FSendDataArray[4]:= hiByt(22);
//寄存器数高位 FSendDataArray[5]:= LoByt(22);
//寄存器数低位 Crc16 := CalCRC16(FSendDataArray,0,length(FSendDataArray)-2);
//校验FEDC Crc16 := MyCRC16(FSendDataArray,length(FSendDataArray));
FSendDataArray[6]:= LoByt(Crc16);
//Crc校验低位 FSendDataArray[7]:= hiByt(Crc16);
//Crc校验高位 CommSendData(FSendDataArray);
except exit;
end;
Result := true;
end;
问题是:发送数据包后,接收不到数据。请问:1、我的数据包格式对吗?2、请给出一个准确的16位的数据校验函数3、如果有做过读取贝克数据的,请给出一个完整的例子