一款好用的串口调试工具 JS 脚本 CRC校验回写给报文
软件下载链接链接:
https://download.csdn.net/download/weixin_41617063/85373149
// 入口函数
function Run()
{
CRCWriteBack( 1); // 1 号报文 CRC 校验 填写给报文
}
//获取 _num 行报文的16位CRC校验,校验参数参考函数内部参数
function CRCCheck( _num )
{
//CRC 16 计算初始化:
// 参数依次为: 初始值,多项式,输入反向,输出反向,位宽,输出异或值
//此参数仅支持16位位宽CRC校验 此参数为moudbusRTU 校验参数
CRC.CrcInitDat(0xffff, 0x8005,true,true,16,0x0000);
var myArray
myArray= My.GetSendBoxs(_num );
var aa =myArray.substr(4, myArray.length-4);
var type =myArray.substr(0, 3);
//My.Print(aa);
if(type == "ASC")
return CRC.GetCrcStr(aa);
else if(type == "HEX")
return CRC.GetCrcByte(aa);
return "";
}
//获取 _num 行报文的16位CRC校验,并回填到报文中
function CRCWriteBack( _num )
{
var crc =CRCCheck(1).toString("16");
crc ="0000"+crc ;
crc =crc.substr(crc.length-4, crc.length);
My.WriteToSendBoxCK(_num, crc);
}
function byteArrayToString(arr)
{ //16进制数组转换成数组字符串,用于串口的数据发送入口参数,数据校验入口参数
var _strBytes="";
if(typeof arr === 'string') { return ""; }
if(arr.length == 0) { return ""; }
for(i=0;i<arr.length;i++)
{
if(arr[i]<0 ||arr[i]>255 ) { return ""; }
var _hex ="0";
_hex = _hex +arr[i].toString(16);
_strBytes+= " "+_hex.substr(_hex .length -2, _hex .length );
}
return _strBytes;
}
以上代码 复制到脚本编辑器中 ,点击脚本加载,然后单次运行脚本,CRC校验,会回写到校验一栏中。