1 (изменено: nezl0in, 2016-12-19 17:44:52)

Тема: 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 символ строки

2 (изменено: MandarinKa02, 2017-12-21 19:48:39)

Re: AHK: Вычисление CRC16 Modbus

http://forum.script-coding.com/viewtopic.php?id=12240
Готовый скрипт.