在php开发modbus 的时候,部分产品是使用 add16 累加算法 计算校验和的。
查询半天也没找到合适的 add16 php算法,最后终于在 csdn 找到了 loveyoulouyou的作品:
function add16($data){
// https://blog.csdn.net/loveyoulouyou/article/details/120314021
// function getcheckcode($data){
if($data){
$arr = array();
$arr = str_split($data, 2);
$result = 0;
for ($i=0; $i < count($arr); $i++) {
$result =$result + hexdec($arr[$i]);
}
$result = strtoupper('0'.dechex($result)); //转换成大写
return $result;
}
}