STM32对于1997与2007电表数据规约的解析
以电表的读取数据为例,通过STM32的串口接收中断将电表的数据解析出来,因为要兼容两种协议,分开解析较麻烦,想着合在一起,将真正要读取的数据按照顺序存储在一个数组之中。
首先简述下两种协议关于读取数据的区别:
1、97规约的读取数据控制码为0x01,07规约为0x11;
2、97的数据域为2个字节,07的数据域为4个字节;
3、设备应答的控制码97为0x81,07为0x91;
相同的格式:
不超过四个的0xFE+0x68的数据包头+6个字节的电表地址+0x68+控制码+数据长度+数据域+数据(N1,N2...Nn)+校验码+0x16
所以将设备应答的数据在中断中这样解析:
void USART1_IRQHandler(void)
{
u8 res;
static u8 count,num,t;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//接收到数据
{
res =USART_ReceiveData(USART1);//;读取接收到的数据USART2->DR
switch(count){
case 0: if(res==0xFE)count=0;else if(res==0x68)count++;break;//判断包头
case 1: RS485_RX_BUF_1[t]=res;t++;if(t==6)count++;break;//将电表6个字节地址存入数组之中
case 2: if(res==0x68)count++;break;//包头
case 3: RS485_RX_BUF_1[t]=res;count++;t++;break;//将响应的控制码放入数组
case 4: num=res;RS485_RX_BUF_1[t]=num;t++;count++;break;//将数据长度放入数组
case 5: RS485_RX_BUF_1[t]=res;t++;if((num+8)==t)count++;break;//数据存入数组
case 6: count++; break;//校验码位
case 7:if(res==0x16){ //结束符 清空数组
count=0;t=0;
} break;
}
}
RS485_RX_BUF_1[t]数组可以定义成全局变量,最后分析此数组里的数据即可得到关于电表的信息。主要要找到数组中的数据长度,通过数据长度判断读取数据的位置。
如果用的实时操作系统,即将数组RS485_RX_BUF_1数据发送到队列后清零(用中断的API函数发送队列)。另一个任务读取队列数据即可。
STM32对于1997与2007电表数据规约的解析相关推荐
- [转]适应多种智能电表通信规约的无线抄表解决方案
Pastedfrom <http://www.cnki.com.cn/Article/CJFDTotal-DZJY200105023.htm> 摘 要:阐述了一种适应多种智能电表通信规约的 ...
- 【Python数据分析】数据预处理3——数据规约(含主成分分析详解、Python主要预处理函数)
数据规约产生更小且保持完整性的新数据集,在规约后的数据集上进行分析和挖掘将提高效率 一.属性规约 属性规约通过属性合并创建新属性维数,或者通过直接删除不相关的属性来减少数据维数,从而提高数据挖掘的效率 ...
- 什么是数据规约,数据规约的策略都有哪些
数据规约是指在数据处理过程中,通过对原始数据进行规范化.统一化.去重和约减等操作,使数据更加一致.统一和有意义. 数据规约的策略包括: 标准化:对数据进行统一的格式转换,使数据在不同的系统或应用中具有 ...
- 如何使用STM32和BLE收集SHT85传感器数据?
简述 这是一个简单的BLE项目.现在,它常常被设计用于智能家居的中. 下面文章展示了如何使用 javascript 获取连接到 STM32 Nucleo-144 的SHT85湿度温度传感器数据. 我们 ...
- 数学类笔试题(四分位数、数据规约和协方差)
1.考虑值集{12, 24, 33, 2, 4, 55, 68, 26},其四分位数极差是:(A) A 31 B 24 C 55 D 3 四分位数(Quartile),即统计学中,把所有数值由小到大排 ...
- STM32基于HAL工程读取DHT11数据
STM32基于HAL工程读取DHT11数据 ✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!
- MJKDZ PS2手柄控制OskarBot小车(三):STM32接收无线串口模块的数据并处理
MJKDZ PS2手柄控制OskarBot小车(三):无线串口模块接收数据并处理 [目录] 1.硬件与软件设计思路 - 1.1 硬件资源 - 1.2 STM32串口接收数据的方法 2.源代码详解 - ...
- 数据预处理之数据清理,数据集成,数据规约,数据变化和离散化
目录 数据清理 数据集成 数据规约 数据的变换 1.Min-Max 规范化 [0,1]规划
- 数据预处理—-(数据探索、数据清理、数据集成、数据规约、数据变换)
数据挖掘概念与技术 定义挖掘目标–>数据取样–>数据探索–>数据预处理–>挖掘建模–>模型评价 第一章.数据 挖掘的数据类型:时间序列,序列,数据流,时间空间数据,多媒体 ...
- STM32+MAX6675 获取4路温度数据原理图及代码
STM32+MAX6675 获取4路温度数据原理图及代码 说明:1.片选任意IO管脚即可,低电平有效! 2.K型热电偶分别接T+,T-: 3.介于STM32只读,就只用3根线,SO,SCL,CS 见图 ...
最新文章
- 什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?
- 《无线网络安全攻防实战》读书笔记
- iPhone销售额下滑12%,但AirPods和手表救了苹果
- 2021-01-10 Halcon初学者知识 【10】形状匹配 【二】模板的形状匹配
- 2021-07-03
- mysql 打包表在phpmyadmin提示正在使用中..
- MFC SendMessage()函数传递字符串
- 属性类:Properties
- java post webservice_[java.webservice] 如何通过HttpPost从服务器上获得一个sessionid
- android自动化框架简要剖析(一):运行原理+基本框架
- vue如何获取年月日_好程序员web前端教程分享Vue相关面试题
- Oracle学习(一)SQL基础
- mv强制覆盖 shell_生产力工具:shell 与 Bash 脚本
- SQL Server中的动态SQL
- 第一节:创建SpringBoot项目并运行HelloWorld
- OpenGL基础14:摄像机
- 微信小程序之实现下拉刷新效果
- SAP MM 增值税改革导致采购业务的变化
- 英文文献翻译的几款实用工具
- [CF1131F] Asya And Kittens