Тема: AHK: Вычисление CRC16 Modbus
День добрый всем. Проблема в написании скрипта для вычисления CRC16_Modbus/ Перерыл все что можно, ничего не нашел.
Единственное, есть скрипт на PHP для такой функции. Может кто поможет его переделать в AHK?
function modbus_crc($modbus_msg){
$crctab16 = array(0X0000 .... тут таблица);
$hexdata = pack('H*',$modbus_msg);
$nLength = strlen($hexdata);
$fcs = 0xFFFF;
$pos = 0;
while($nLength > 0)
{
$fcs = ($fcs >> 8) ^ $crctab16[($fcs ^ ord($hexdata[$pos])) & 0xFF];
$nLength--;
$pos++;
}
$inverted = sprintf('%04X', $fcs);
$crc_modbus = substr($inverted,2,2)." ".substr($inverted,0,2);
return $crc_modbus;
}
Входная строка типа "A4 F1 14 D3"
Непонятны пару строк:
$hexdata = pack('H*',$modbus_msg); перевод в бинарную строку
ord($hexdata[$pos] ACSII символ строки