public function test()
{
//bin2hex
//ASCII 字符的字符串转换为十六进制值
$data = strtolower('04129da167763b');
$command = substr($data, 0, 2);
//异或检验和
//去掉后两位,校验
$wb = substr($data, 0, -2);
//获取后两位
$last_two = mb_substr(strval($data), -2, 2);
$check = $this->sumCheck($wb);
if($check == $last_two){
//通过
//04 命令字段 转2进制
//12 9d a1 设备唯一ID
$imei = substr($data, 2, 6);
//67 状态字段 转2进制
$state = str_pad(base_convert(substr($data, 8, 2), 16, 2), 8, "0", STR_PAD_LEFT);
//电量
$dl = substr($state, 0, 7);
//使用状态
$use = substr($state, 7, 1);
//74 信号强度
$signal = substr($data, 10, 2);
//回复
$ack = '05'.$imei.'01';
$ackData = $ack.$this->sumCheck($ack);
print_r($command);exit;
} else {
//未通过
}
}
function BlueCode_BCCXOR($str){
$split_length = 2;
$len = strlen($str);
$End = 0;
for($i = 0; $i < $len; $i+=$split_length){
$s = substr($str, $i, $split_length);
$End = $End ^ hexdec($s);
}
$End = strtoupper(str_pad(dechex($End), '2', '0', STR_PAD_LEFT));
return $End;
}
调用:
echo BlueCode_BCCXOR("5504A15F00");
输出:AF
在线异或校验/BCC校验工具:https://www.metools.info/code/c48.html
引用 https://www.bluecode.cn/show-621.html
function DataIn($fd, $data = '')
{
$config = new \EasySwoole\Mysqli\Config([
'host' => '',
'port' => '',
'user' => '',
'password' => '',
'database' => '',
'timeout' => 5,
'charset' => 'utf8mb4',
]);
//echo "fd:{$fd} send:{$data}\n";
$command = substr($data, 0, 2);
if($command == '04'){
//异或检验和
//去掉后两位,校验
$wb = substr($data, 0, -2);
//获取后两位
$last_two = mb_substr(strval($data), -2, 2);
$check = $this->sumCheck($wb);
//echo "check:{$check} last_two:{$last_two}\n";
if($check == $last_two){
//通过
//04 命令字段 转2进制
//12 9d a1 设备唯一ID
$imei = substr($data, 2, 6);
//echo "imei:{$imei}\n";
//67 状态字段 转2进制
$state = str_pad(base_convert(substr($data, 8, 2), 16, 2), 8, "0", STR_PAD_LEFT);
//电量
$dl = base_convert(substr($state, 0, 7), 2, 10);
//echo "dl:{$dl}\n";
//使用状态
$use = substr($state, 7, 1);
//echo "use:{$use}\n";
//74 信号强度
$signal = base_convert(substr($data, 10, 2), 16, 10);
//echo "signal:{$signal}\n";
$client = new \EasySwoole\Mysqli\Client($config);
$client->queryBuilder()->where('imei', $imei)->getOne('jq_device');
$result = $client->execBuilder();
if($result){
$client->queryBuilder()->where('imei', $imei)->update('jq_device', ['fd' => $fd,'createtime' => date('Y-m-d H:i:s', time())]);
} else {
$client->queryBuilder()->insert('jq_device', ['fd' => $fd, 'imei' => $imei, 'dl' => $dl, 'use' => $use, 'signal' => $signal, 'content' => $data, 'createtime' => date('Y-m-d H:i:s', time())]);
}
$client->execBuilder();
//file_put_contents('./log.txt', date("Y-m-d H:i:s") . " 设备:" . $imei . "\r\n电量:".$dl."\r\n使用状态:".$use."\r\n信号强度:".$signal."\r\n", FILE_APPEND);
//回复
$ack = '05'.$imei.'01';
$ackData = $ack.$this->sumCheck($ack);
$resString = "";
$dataArr = str_split($ackData, 2);
foreach ($dataArr as $k => $v) {
$resString .= chr(hexdec('0x' . $v));
}
$info = ServerManager::getInstance()->getSwooleServer()->connection_info($fd);
if (is_array($info)) {
ServerManager::getInstance()->getSwooleServer()->send($fd, $resString);
} else {
$this->response()->write("fd {$fd} not exist");
}
} else {
//未通过
}
}
}
I like this weblog very much, Its a really nice berth to read and receive info .
Hi there are using WordPress for your blog platform? I’m new to the blog world but I’m trying to get started and set up my own. Do you need any coding expertise to make your own blog? Any help would be greatly appreciated!
I have been browsing online greater than three hours nowadays, but I never discovered any fascinating article like yours. It’s beautiful value sufficient for me. Personally, if all website owners and bloggers made just right content as you did, the internet will probably be a lot more helpful than ever before. “Now I see the secret of the making of the best persons.” by Walt Whitman.
Fine material. Thanks.
how to write a college application essay about yourself
Really loads of useful knowledge.
how to write a narrative essay about an experience