当前位置: 首页 > news >正文

迅速提高网站排名餐饮装修公司

迅速提高网站排名,餐饮装修公司,wordpress分页显示,厦门市住房和城乡建设局网站这里写目录标题 什么是环保HJ212协议?常用的标准码说明php接收包解包#xff08;没有crc验证#xff09;到redis 序列化python 发包测试 什么是环保HJ212协议? HJ212是由国家环保行业制定的数据传输标准协议#xff0c;通常是通过TCP/P通讯方式进行数据传输的#xff0c… 这里写目录标题 什么是环保HJ212协议?常用的标准码说明php接收包解包没有crc验证到redis 序列化python 发包测试 什么是环保HJ212协议? HJ212是由国家环保行业制定的数据传输标准协议通常是通过TCP/P通讯方式进行数据传输的数据传输报文主要由包头、数据段长度、数据段、CRC校验、包尾组成。重点解析的就是”数据段“的内容内容包括请求编码(QN)、系统编码(ST)、设备唯一标识(MN)、密码(PW)、命令编码(CN)、指令参数(CP)。请求编码为请求的时间戳系统编码ST统一规定为22命令编码CN为该数据包的时间类型访问密码、设备唯一标识在对接时由平台提供指令参数为数据内容。 基本报文示例: ##0192QN20230703220100923;ST22:CN2011:PW123456;MNBF0F022021090077:Flag5:CPDataTime20230703220100:a34001-Rtd48.5,a34001-FlagN:a34004-Rtd31.2,a34004-FlagN:a34002-Rtd48.5,a34002-FIaQNA881 协议包组成: 名称 类型 长度 描述 包头 字符 2 同定为## 数据段长度 十进制整数 A 数据段的ASCII字符数例如:长192则写为“0192 数据段 字符 0n1024 变长的数据 CRC校验 十六进制 4 数据段的校验结果 包尾 字符 2 回车换行() 标准化json: { “ST “: “22“, “MN“:“BFOF022021090077“, “PW“ : “123456“, “CN“: “2011“, “QN“:“20230703220100923“, “Flag“ : “5“, “CP“:{ “DataTime: “20230703220100“, “a34001-Flag :“ N“, “a34001-Rtd : “48.5“, “a34002-Flag :“N“, “a34002-Rtd : “48.5“, “a34004-Flag :“N“, “a34004-Rtd : “31.2“, } } 常用的标准码说明 1.后面都会加Rtd或Flag一般是a01001-Rtd或a01001-Flag其中Rtd是实际的值Flag为状态一般为N 2.2.单位只是大部分的一个标准可作为参考 编码(Rtd-数值Flag-状态) 实际值 单位(参考) a01001 温度 咖 a01002 湿度 Kpa a01006 气压 m/s a01007 风速 0 a01008 风向 ug/m a34001 TSP扬尘 ug/ms a34002 PM10 ug/m a34004 PM2.5 mg/m a21004 NOz mg/m* a21005 NO 葱mg/m* a21026 S0z mg/m* a21026 S0z dB LA 噪声 单位(参考) php接收包解包没有crc验证到redis 序列化 ?php // 设置 Redis 连接 $redisHost 127.0.0.1; $redisPort 6379; $redis new Redis(); $redis-connect($redisHost, $redisPort);// 创建一个 TCP 服务器 $host 0.0.0.0; // 监听所有网卡 $port 21212; // 自定义端口与212协议无直接关系仅供示例$socket stream_socket_server(tcp://$host:$port, $errno, $errstr);if (!$socket) {die(无法创建服务器: $errstr ($errno)\n); }echo 服务器已启动正在监听 $host:$port...\n;while ($conn stream_socket_accept($socket)) {$data fread($conn, 2048); // 每次读取2048字节if ($data) {echo 接收到数据: $data\n;// 数据解析根据212协议对数据结构的定义$parsedData parse212Data($data);// 获取设备唯一标识(MN)$MN $parsedData[MN] ?? unknown_device; $parsedData serialize($parsedData);// 将解析后的数据存入 Redis设置过期时间为300秒$redis-setex(tsp_data_ . $MN, 300,$parsedData);// 发送确认或回复fwrite($conn, 数据接收成功,^_^,谢谢测试帅哥\n);}fclose($conn); }fclose($socket);function parse212Data($data) {// 分离 CP 部分// $data substr($data, 6, strpos($data, ) - 6); // 提取数据段$data substr($data, 6);$parts explode(CP, $data, 2);$metadata trim($parts[0]); // CP 之前的数据部分$cpContent isset($parts[1]) ? trim($parts[1]) : ;// 解析 CP 之前的数据部分$fieldsBeforeCP explode(;, $metadata);$result [];foreach ($fieldsBeforeCP as $field) {if (strpos($field, ) ! false) {list($key, $value) explode(, $field, 2);$result[$key] $value;}}// 解析 CP 内部的数据if (!empty($cpContent)) {$cpEndPos strpos($cpContent, );if ($cpEndPos ! false) {$cpData substr($cpContent, 0, $cpEndPos);// 用正则表达式精准分割 CP 内容$fieldsInCP preg_split(/[;,]/, $cpData);foreach ($fieldsInCP as $field) {if (strpos($field, ) ! false) {list($key, $value) explode(, $field, 2);$result[$key] $value;}}}}return $result; }? python 发包测试 import sockethost IP地址或者域名 port 21212# 数据包 data ##0530QN20241119164503506;ST39;CN2051;PW123456;MNZR118220915203;Flag5;CPDataTime20241119163500;a01001-Min12.54,a01001-Avg12.87,a01001-Max13.25,a01001-FlagN;a01002-Min51.30,a01002-Avg52.49,a01002-Max53.52,a01002-FlagN;a01006-Min102.301,a01006-Avg102.301,a01006-Max102.303,a01006-FlagN;a01007-Min0.0,a01007-Avg0.0,a01007-Max0.0,a01007-FlagN;a01008-Min165,a01008-Avg165,a01008-Max166,a01008-FlagN;a34001-Min100.9,a34001-Avg100.9,a34001-Max100.9,a34001-FlagN;LA-Min38.4,LA-Avg39.8,LA-Max44.1,LA-FlagN6240##0530QN20241119170103194;ST39;CN2061;PW123456;MNZR118220915203;Flag5;CPDataTime20241119160000;a01001-Min11.14,a01001-Avg13.20,a01001-Max15.22,a01001-FlagN;a01002-Min45.44,a01002-Avg51.41,a01002-Max57.99,a01002-FlagN;a01006-Min102.299,a01006-Avg102.315,a01006-Max102.349,a01006-FlagN;a01007-Min0.0,a01007-Avg0.0,a01007-Max0.0,a01007-FlagN;a01008-Min130,a01008-Avg165,a01008-Max197,a01008-FlagN;LA-Min37.3,LA-Avg40.7,LA-Max53.5,LA-FlagN;a34001-Min103.1,a34001-Avg103.1,a34001-Max103.1,a34001-FlagNEA41 # 创建 socket with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:s.connect((host, port))s.sendall(data.encode())# 接收服务器的响应response s.recv(1024)print(服务器响应:, response.decode())
http://www.dnsts.com.cn/news/111098.html

相关文章:

  • 家装设计效果图网站商城网站开发制作
  • phthon网站开发网站建设的思想
  • erp二次开发好还是网站开发好上传wordpress网站
  • 箱包 东莞网站建设宠物网站开发
  • 网站过期了怎么办wordpress在本地运行很慢
  • 铭做网站建设html网页制作案例
  • 企业网站建设知乎企业服务网站建设方案
  • 查询公司的网站备案官网的建站过程
  • 哪个网站有天天做股市直播的网站模板简易修改
  • 杭州做网站多少钱网络公司企业网站源码
  • 8图片这样的网站怎么做网站等保测评怎么做
  • 欣宝儿在什么网站做直播wordpress模板制作教程下载
  • 网站改版效果图怎么做建设个人网站赚钱的经历
  • 厦门seo网站建设费用app网站建设软件
  • 网络网站制作湛江建设局网站
  • 小说网站的会员充值是怎么做的玉树营销网站建设多少钱
  • 建设银行网站诚聘英才酷虎云建站工具
  • 厦门制作网站企业长沙网站开发哪家好
  • 百度自建站人力资源外包
  • 龙岩门户网站企业网站建设安阳
  • 怎么做一个网站页面长沙市城市建设档案馆官方网站
  • 360建设网站免费wordpress home.php index.php
  • 中小型网站建设方案自己怎么创建免费网站
  • 网站开发的著作权和版权网站专题页是什么
  • 柳州网站建设服务wordpress固定链接文章别名
  • 学校网站 源码咸阳网站开发哪家好
  • 江苏常州网站建设公司虾米音乐怎么连接到wordpress
  • 网站建设如何更改背景图片大数据精准获客软件
  • 咸阳专业学校网站建设网店系统源码
  • 网站备案要邮寄资料吗网站语言有几种