gx_dlms 的杂乱记录
DLMS_ERROR_CODE_FALSE
W3Jehpnc543MuwUz6ZWDshy5kwbbE9Cw
CGXDLMSClient::GetData(CGXByteBuffer& reply, CGXReplyData& data)
CGXDLMS::GetData(m_Settings, reply, data, NULL)
// hdlc路线,这里的reply 是原始接受的数据,data 要返回的CGXReplyData
GetHdlcData(settings.IsServer(), settings, reply, data, frame, notify))
帧类型 U/I/S
address
crc
//tcp路线
GetTcpData
if (!target->IsComplete())
return DLMS_ERROR_CODE_FALSE;
GetDataFromFrame(reply, *target, settings.GetInterfaceType() == DLMS_INTERFACE_TYPE_HDLC);
//提取具体的apdu数据
GetPdu(settings, *target)
//解析出具体的apdu的头
case HandleGetResponse
// 把数据提取出来
aare
....
GetValueFromData
// ua解析
ParseUAResponse
CGXDLMS::ParseSnrmUaResponse(data, &m_Settings.GetLimits());
m_Settings.SetConnected(DLMS_CONNECTION_STATE_HDLC);
// aare
ParseAAREResponse
CGXAPDU::ParsePDU(m_Settings, m_Settings.GetCipher(),reply, result, sd, NULL)) != 0)
流的处理,数据接受完整的处理与判断
m_Parser->SNRMRequest
根据类型和数据 构造 hdlc的数据帧
CGXDLMS::GetHdlcFrame
ReadDataBlock
ReadDLMSPacket
write(m_hComPort, data.GetData(), len);
Read(0x7E, bb)
m_Parser->GetData(bb, reply, notify)
GetHdlcData // 从hdlc 得到数据
GetDataFromFrame
GetLNPdu 组合 获得 E6 E6 00 开始的数据
GXHelpers::GetData
int CGXDLMSTranslator::DataToXml(CGXByteBuffer& data, std::string& xml)
GetDataTypes
数据读取
m_Parser->Read 组数据
ReadDataBlock
ReadDLMSPacket 发数据
UpdateValue解析数据
if 0==GetData
if(m_Complete==flase)
else(m_Complete==true)
有个positon 指示了当前解析的位置
一些有用的定义
DLMS_COMMAND_SNRM 表示了具体的帧类型
faq
GetHdlcData 里面有些回退操作
待优化
GetHDLCAddress
可以在size=5时候退出
GetHdlcData 应先检查crc 再去做帧类型检查
关于构造和析构
gx_dlms 的杂乱记录的更多相关文章
- Kubernetes---网络通讯模式笔记
⒈kubernetes网络通讯模式 Kubernetes的网络模型假定了所有Pod都在一个可以直接连通的扁平的网络空间中,这在GCE(Google Compute Engine)里面是现成的网 ...
- 阅读记录:Learning multiple layers of representation(杂乱笔记)
典型的浅层学习结构: 传统隐马尔可夫模型(HMM).条件随机场 (CRFs).最大熵模型(Maxent).支持向量机(SVM).核回归及仅含单隐层的多层感知器(MLP)等. 局部表示,分布式表示和稀疏 ...
- git bash学习3 -简单杂乱知识点记录
branch 新建分支 git init git add git commit 先新建一个仓库以及master 然后新建分支 git branch BranchName 然后切换分支 git chec ...
- NodeJs学习记录(一)初步学习,杂乱备忘
2016/12/26 星期一 1.在win7下安装了NodeJs 1)进入官网 https://nodejs.org/en/download/,下载对应的安装包,我目前下载的是node-v6.2.0- ...
- CozyRSS开发记录-中断
接下来会对CozyRSS做一堆的修改,包括界面和功能.因为比较杂乱,而且大多是体力活,所以就不记录了.等下次再发的时候,见到的就是一个有可用性的CozyRSS了!
- Git命令行(转用于学习和记录)
Git命令行介绍和使用说明(持续更新) 参见:<Git 中文简体教程> 一. 命令“git”或者“git help”查询常用命令 [add]: “git add”——不但是用来添加不在版本 ...
- 制作Aspose CHM文档的过程记录
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- 12天学好C语言——记录我的C语言学习之路(Day 6)
12天学好C语言--记录我的C语言学习之路 Day 6: 今天,我们要开始学习数组了. //①数组部分,数组的大小不能够动态定义.如下: //int n; scanf("%d,& ...
- 12天学好C语言——记录我的C语言学习之路(Day 3)
12天学好C语言--记录我的C语言学习之路 Day 3: 不知不觉到了第三天的学习,我们前两天学习的东西很杂乱,各个方面都有学习.我觉得这不是不系统,也不是学的不扎实,这种学习对于初学者而言我认为是很 ...
随机推荐
- Codeforces Round #584 B. Koala and Lights
链接: https://codeforces.com/contest/1209/problem/B 题意: It is a holiday season, and Koala is decoratin ...
- 【题解】[NOIP模拟题]我要的幸福-C++
题目Description我要的幸福(happiness)幸福/我要的幸福/渐渐清楚/梦想/理想/幻想/狂想/妄想/我只想坚持每一步/该走的方向/就算一路上/偶尔会沮丧/生活是自己/选择的衣裳/幸福/ ...
- ue/um-editor实现word图片复制
图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码 目前限chrome浏览器使用,但是项目要求需要支持所有的浏览器,包括Windows和macOS系统.没有办 ...
- hive的两种使用方式
hive的两种使用方式 1,hive shell的方式 启动命令: bin/hive 2.beeline客户端方式 首先在一个机器上启动hive thrift服务 bin/hiveserver2 在其 ...
- CentOS 7.5 ——如何开放80、8080、3306等端口
CentOS 7.5 ——如何开放80.8080.3306等端口 ——说明:CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙——1.关闭firewall: s ...
- SpringMVC--DispatcherServlet
DispatcherServlet 是前端控制器设计模式的实现,提供 Spring Web MVC 的集中访问点,而且负责职责的分派,而且与 Spring IoC 容器无缝集成,从而可以获得 Spri ...
- Js 中那些 隐式转换
曾经看到过这样一个代码: (!(~+[])+{})[--[~+""][+[]]*[~+[]]+~~!+[]]+({}+[])[[~!+[]*~+[]]] = sb , 你敢相信, ...
- Flask 编写一个授权登录验证的模块(一)
看一个关于授权登陆的简易模块,觉得挺不错,学习学习. 1.登录的逻辑:如果用户名和密码正确,就返回 token .2.生成 token 的逻辑,根据用户名,随机数,当前时间 + 2 小时3.然后放在 ...
- Java并发指南7:JUC的核心类AQS详解
一行一行源码分析清楚AbstractQueuedSynchronizer 转自https://www.javadoop.com/post/AbstractQueuedSynchronizer#toc4 ...
- CentOS8安装Python3
安装CentOS8 如果使用vmware player安装CentOS8,会出现如下选项 其中Software Selection默认为带有GUI版本,即安装完成之后,带有图形界面,我本人不太喜欢使用 ...