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: 不知不觉到了第三天的学习,我们前两天学习的东西很杂乱,各个方面都有学习.我觉得这不是不系统,也不是学的不扎实,这种学习对于初学者而言我认为是很 ...
随机推荐
- BZOJ 2400: Spoj 839 Optimal Marks (按位最小割)
题面 一个无向图,一些点有固定权值,另外的点权值由你来定. 边的值为两点的异或值,一个无向图的值定义为所有边的值之和. 求无向图的最小值 分析 每一位都互不干扰,按位处理. 用最小割算最小值 保留原图 ...
- JQuery 实践---创建元素包装集
1. 利用选择器,选择将被JQuery包装的元素 标识和选择DOM元素.JQuery采用我们已经知道的CSS语法并且扩展了一些.为了利用JQuery来选择元素,请把选择器包装在$()中. 基本CSS选 ...
- bootstrap-vue 中 model 基础用法
Model 官方文档: https://bootstrap-vue.js.org/docs/components/modal <b-modal v-model="labelModal ...
- Vue Parent Send Ajax Data to Child Component
Vue 父组件ajax异步更新数据,子组件props获取不到 2018年06月26日 09:25:06 哎哟嘿 阅读数 3585 当父组件 axjos 获取数据,子组件使用 props 接 ...
- Java BIO、NIO、AIO 原理
先来个例子理解一下概念,以银行取款为例: 同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写). 异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Ja ...
- WSDL的学习
1.WSDL是什么? 2.wsdl说明书结构 拿到说明书,从下往上看, 图2-1 port:为端点 binding:绑定 图2-2 type属性----->找到portType标签 operat ...
- BZOJ 4241: 历史研究 ( 回 滚 )
题目: 链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4241 题意:给你一个长度为n序列,m次查询,每次询问 一段区间 最大的 a[ i ...
- call()与构造函数的运用
一.简介 call()和apply()方法是所有函数体的固有属性,可以在指定作用域下调用函数.这里面有两层意思:1.可以在另外的作用域下调用函数:2.当函数体是是构造函数时,call()方法能达到类之 ...
- SpringMVC--DispatcherServlet
DispatcherServlet 是前端控制器设计模式的实现,提供 Spring Web MVC 的集中访问点,而且负责职责的分派,而且与 Spring IoC 容器无缝集成,从而可以获得 Spri ...
- .net core 修改 Identity/AspNetUsers 数据库
众所周知,.net core有一套完整的用户管理功能.使用它就能实现用户的管理及登录登出功能.现在问题来了,我们有时候需要添加一些字段,该怎么办呢?当然是修改他呀.修改方法参考链接:https://m ...