Skip to content
Permalink
Browse files

Merge pull request #5 from Fav0rit/patch-3

Add check CRC in merc_gd function
  • Loading branch information...
directman66 committed Mar 16, 2019
2 parents ae65220 + 4bacb75 commit 2d31b842a802f2ea7939aa85775d20cfd60840ce
Showing with 35 additions and 4 deletions.
  1. +35 −4 modules/mercury/mercury.class.php
@@ -1759,20 +1759,50 @@ function send ($socket252, $hex = "") {
//file_put_contents($file, $debug);
}
//////////////////////////////////////////////
//////////////////////////////////////////////
// Проверка CRC
function checkCRC($input) {
// Проверяем ответ
$answ='';
for ($i=0; $i < strlen($input); $i++) $answ.=$this->dd($input[$i]);
$answ=strtoupper($answ); // Переводим в верхний регистр
$crcA=substr($answ, -4); // Смотрим полученный CRC
$data=substr($answ, 0, -4); // Информация для рассчета CRC
$crc=$this->calcCRC('',$data); // Рассчитываем свой CRC
$crc=substr($crc, -4);
$result=false;
if ($crcA==$crc) $result=true;
//debmes("$cmd - $answ | CRC: $crcA - $crc",'mercury');
return $result;
}
//////////////////////////////////////////////
//////////////////////////////////////////////
function merc_gd($socket252, $cmd, $factor = 1, $total = 0)
{
$this->send($socket252, $cmd);
$result =$this->read($socket252);
// Запрашиваем до трех попыток пока не сойдется CRC, если неудачно - прерываем.
$i=0;
do {
$this->send($socket252, $cmd);
$result =$this->read($socket252);
$i++;
} while ((($this->checkCRC($result))==false)&&($i<3));
// Если три попытки неудачны и CRC неверен - прерываем функцию.
if ($i==3) {
if (($this->checkCRC($result))==false) return;
}
$ret = array();
$start_byte = 1;
if ( $total != 1 )
{
{
for ( $i = 0; $i < 4; $i++ )
{
//if ( dechex(ord($result[$start_byte + $i * 3])) >= 40 )
@@ -1791,6 +1821,7 @@ function merc_gd($socket252, $cmd, $factor = 1, $total = 0)
$ret[$i] = bindec($bin)*$factor;
}
}
}
else
$ret[0] = hexdec($this->dd($result[$start_byte+1]).$this->dd($result[$start_byte]).$this->dd($result[$start_byte+3]).$this->dd($result[$start_byte+2]))*$factor;

0 comments on commit 2d31b84

Please sign in to comment.
You can’t perform that action at this time.