GBT 20999-2017 SDK 程序文件路径目录及程序代码类说明
索引
简介
GBT20999-2017开发框架SDK程序目录说明,解释说明SDK程序的目录结构,方便开发者更清晰的了解项目源码。
目录说明
整个SDK程序的包路径是 org.chinagbt.gbt209992017
,下面是对目录简单的介绍说明,开发者可参考。
名称 | 描述 |
---|---|
java | 当前项目的资源文件目录,里面可以存放一些图片、图标及其它资源文件。 |
api | 存放SDK对外的JAVA工具类文件。 |
GBT209992017API.java | 对外部程序暴露的工具方法类,是SDK统一对外的静态方法类,包含常用的查询、设置、获取、启动服务等等动作方法,开发者可在依赖的程序中直接调用即可。 |
config | 存放SDK的配置工具类和加载配置的工具类文件。 |
ConfigParam.java | 配置参数类,该类中有SDK常用的配置参数,配置参数均有默认值,开发者可自行修改。 |
LoadConfig.java | 配置加载工具类,该类用于加载配置文件,并加载到ConfigParam类中,默认加载 resources\gbt20999_2017_sdkconfig.properties 资源目录中的属性配置文件。 |
constant | 常量定义文件目录,里面有应用、业务、通用、正则等定义好的常量属性。 |
CommonConstant.java | 通用常量定义。 |
GBTConstant.java | GBT常量定义,将GBT-20999-2017标准中定义的常量,封装到GBTConstant类中,方便开发者使用。 |
core | 存放SDK核心类文件,里面有具体详细解析各数据类、对象、属性、元素等。 |
custom | 存放自定义类文件,如:自定义设备运行状态。 |
ClientRunStatus_Custom.java | 此类被实例的ClientInfo里的内部类定时调用,第三方开发者可根据自己需要重写此类,以保证将自己定义查询的心跳内容输送给应用程序。 |
index | 存放默认主要入口文件。 |
DoAllDataFrameIndex.java | 处理全部帧数据总入口,此类可以被Netty的TCP处理器和UDP处理器调用。 |
packagesetvalue | 存放数据帧解析类文件。 |
SetParamValueUtil.java | 设置参数工具类,包含需要事务的设置和非事务的设置。 |
parseresponse | 存放各数据类的数据帧解析类文件,解析数据时是被结果池对象调用的,结果池的数据是由Netty处理器调用的,这样便可以达到层层调用解析数据,返回至结果池中。本目录的类在通常情况下是被 ParseConvertDataType_Detail.java 类所调用的,主要用于解析基本信息的各个属性数据值。 |
DataTypeID1_DeviceInfo.java | 数据类1:解析基本信息。 |
DataTypeID2_BasicInfo.java | 数据类2:解析基本信息。 |
DataTypeID3_LightGroupInfo.java | 数据类3:解析灯组信息。 |
DataTypeID4_PhaseInfo.java | 数据类4:解析相位信息。 |
DataTypeID5_DetectorInfo.java | 数据类5:解析检测器信息。 |
DataTypeID6_PhaseStageInfo.java | 数据类6:解析相位阶段信息。 |
DataTypeID7_SecurityInfo.java | 数据类7:解析安全信息。 |
DataTypeID8_UrgentFirst.java | 数据类8:解析安全信息。 |
DataTypeID9_PlanInfo.java | 数据类9:解析方案信息。 |
DataTypeID10_TransitRestrain.java | 数据类10:解析过渡信息。 |
DataTypeID11_TimeTable.java | 数据类11:解析日计划信息。 |
DataTypeID12_ScheduleTable.java | 数据类12:解析调度信息。 |
DataTypeID13_RuntimeStatus.java | 数据类13:解析运行状态。 |
DataTypeID14_TrafficData.java | 数据类14:解析交通数据。 |
DataTypeID15_AlarmData.java | 数据类15:解析报警数据。 |
DataTypeID16_FaultData.java | 数据类16:解析故障数据。 |
DataTypeID17_CenterCtrl.java | 数据类17:解析中心控制。 |
DataTypeID18_CommandPipeline.java | 数据类18:解析命令管道。 |
querydatatypes | 存放查询整个数据类的文件。 |
Query_ALL_ActualNum.java | 查询所有数据类对应配置表的实际能力数量值。 |
Query_DataType1_DeviceInfo.java | 查询设备信息数据类中所有属性。 |
Query_DataType2_BasicInfo.java | 查询基础信息数据类中所有属性。 |
Query_DataType3_LightGroupInfo.java | 查询全部灯组信息数据类中所有属性。 |
Query_DataType4_PhaseInfo.java | 查询所有相位信息数据类中所有属性。 |
Query_DataType5_DetectorInfo.java | 查看所有检测器信息数据类中所有属性。 |
Query_DataType6_PhaseStageInfo.java | 查看所有相位阶段信息数据类中所有属性。 |
Query_DataType7_SecurityInfo.java | 查询全部相位安全信息配置数据类中所有属性。 |
Query_DataType8_UrgentFirst.java | 查询紧急优先数据类中所有属性。 |
Query_DataType9_PlanInfo.java | 查询所有方案信息据类中所有属性。 |
Query_DataType10_TransitRestrain.java | 查询全部过滤约束数据类中所有属性。 |
Query_DataType11_TimeTable.java | 查询所有日计划数据类中所有属性。 |
Query_DataType12_ScheduleTable.java | 查询所有调度表配置信息类中所有属性。 |
Query_DataType13_RuntimeStatus.java | 查询所有运行状态类中所有属性。 |
sigdevicectrl | 信号机控制模块,该目录下包含了对下位信号机控制的容器设计。 |
container | 下位机控制容器,每次针对同一台下位机的控制,都有一个当前控制的对象,这些全部对象存放在容器中。 |
SigCtrlModelContainer.java | 信号机控制容器工具类,里面有着对控制对象的管理,以及控制对象的创建等等。 |
model | 控制模型对象,上位机每操作一次会产生一个控制模型对象,该对象会保存该次操作的参数,以及其它控制信息。 |
SigCtrlModelChannel.java | 信号机控制模型对象即控制管道,不论上位机是否多少个控制线程来源,最终都只会创建针对这一个信号机一个控制模型对象,该对象会保存该次操作的参数,以及其它控制信息。 |
transaction | 控制事务对象,该对象会保存该次操作的参数,以及其它控制信息。 |
TradeFollow.java | 事务交易跟踪的模型动作类,该中存放了所有交易跟踪的模型动作方法,如:初始事务、进行事务、审核事务、完成事务等。 |
TransactionContainer.java | 事务容器,里面会存放多个事务对象,每个事务对象都有各自的执行线程去对需要设置的数据进行事务流程的跟踪。 |
TransactionIDUtil.java | 事务ID的工具类,用于生成事务ID。 |
TransactionUtil.java | 事务工具类,里面定义了标准文档中需要参与事务的数据OID信息映射,可供在设备数据时,对指令数据进行事务与非事务的数据分批计算。 |
util | 核心模块包中的工具类目录,里面有查询、设置相关的工具类。 |
QueryUtil.java | 查询指令工具类,在此类中,主要是要调用SendOrderUtil.java 类中的方法。 |
SetUtil.java | 设置工具类,在此类中,主要是要调用SendOrderUtil.java 类中的方法。 |
SendOrderUtil.java | 发送指令工具类,本工具类用于发送指令数据帧,要求传入的数据帧长度不超过缓冲区大小。工具类会自动从客户端连接管理容器中获取对应下位机的连接对象,并调用其字节发送方法执行指令传输。 |
SetUtilWithTradeFollow.java | 设置工具类携带事务,针对需要参与事务的数据进行设置,在本类的发送设置方法中,会创建事务对象。 |
kit | 项目中常用的一些工具类,其与下面的util包其实都是存放工具类的,不过一些是以Kit 为结尾文件名,一些是以Util 为结尾文件名,有些类在开发初期时包路径声明的有些随意了,各位江湖道友还多包涵。 |
other | 里面包含项目中常用的工具类,如:报警类型值工具类、字节处理工具类、封装JSON数据体工具类等。 |
AlarmDataTypeValueKit.java | 解析报警数据类型与数据值,解析机制参考于GBTConstant.java类AlarmType子类中注释所写而解析,该类下的方法appendTypeAndValue 被ParseDataByte4GBT20999_2017.java 类doTrapDataDetail 方法else if(dataTypeID == GBTConstant.DataTypeID.DATATYPEID_ALARM_DATA) 块所调用,对报警类型值和报警数据值进行解析并附带相应中文描述内容。 |
ByteKit.java | 字节操作相关工具类,本SDK程序中,使用了Netty框架对字节进行解析,并协同Hutool 库的字节工具类一起完成字节数据解析动作。 |
PackageJSONHeadBodyKit.java | 封装JSON头体工具类,在向引用SDK的JAVA程序传送数据时,需要对每个数据进行包装一层,为其声明好数据类型,然后将数据放入消息推送器 中,在接收处理数据的静态方法中可以根据数据类型标识进行其它业务处理。 |
string | 处理String数组相关工具类。 |
StringArrayKit | 自定义String数组相关工具类。 |
model | SDK项目中外围声明的模型对象,如:数据帧类、数据帧里的数据值、设置查询指令、前世数据帧类。 |
DataFrameInfo.java | 数据帧信息类,将7E开头7D结尾的数据帧,重新定义封装成DataFrameInfo的JAVA类,并提供了一些数据帧与对象相互转换的常用方法。 |
DataFrameValue.java | 数据帧里的数据值,该类型对象在DataFrameInfo中是多值集合形式存在。 |
Instruct.java | 动作指令,即查询、设置动作时的数据索引对象。里面包含了数据类ID、对象ID、属性ID、元素ID、数据值等信息。 |
PrelifeDataFrames.java | 数据帧的前世模型类,数据帧最终成型时,应该是由多个数据值形成的多个数据帧对象,即多个DataFrameInfo类对象。查询和设置动作时,将所有的数据类、对象、属性、元素转换成数据帧的前世类,再由前世类进行“转世”动作,转成一个或多个数据帧。 |
msg | 消息推送模块,由于当前SDK程序是被其它JAVA应用依赖引入的,所以SDK产生的数据需要直接推送回应用项目的代码中,这里存放了消息推送模块,利用的是JAVA反射将数据推送到应用项目代码中。 |
ImitateReceive.java | 模拟接收数据消息的接收类,开发者可以根据这个类仿写自己程序中的类,这样通过配置便可以将数据从SDK程序推送至我们自己的应用中了。 |
PushMsgUtil.java | 消息推送器,根据ConfigParam.MsgParam.PUSH_CLASS_FULLPATH 与ConfigParam.MsgParam.PUSH_METHOD_NAME 的配置,利用JAVA反射将数据推送至应用项目指定的静态方法中去,建议:开发者最好在自己的数据接收类中使用生产消费模式,因为推送的数据量可能会较大,避免程序的线程阻塞。 |
result | SDK数据通讯结果池机制模块,即查询、设置动作是需要下位机返回对应结果数据的。在结果池的设计中,可以通过设置超时时间,来判断下位机是否已经返回了结果数据,如果超时,则认为下位机没有返回结果数据,则需要重新发送指令。 |
container | 结果池容器目录,里面存放结果池容器类。 |
ResultPoolContainer.java | 结果池容器类,该类对象中存放了结果池对象。上位机向信号机做查询与设置等指令时,收集信号机响应结果应答的容器。 |
model | 结果池模型目录,里面存放结果池模型类。 |
WaitResultData.java | 等待结果数据类,该类对象中存放了等待结果数据。是结果池容器中的对象类。 |
util | 结果池工具类目录,里面存放结果池工具类。 |
WaitResultDataUtil.java | 等待结果数据工具类。 |
server | 服务器模块,里面存放了TCP或UDP相关的Netty服务器类。 |
channelinitializer | Netty的初始化管道类,里面有TCP管道和UDP的管道。 |
GBTTCPServerChannelInitializer.java | TCP服务器管道类,定义了设置心跳监控、解码器、编码器、业务数据处理器类等。 |
GBTUDPServerChannelInitializer.java | UDP服务器管道类,定义了解码器、编码器、业务数据处理器类等。 |
connectioncontainer | Netty客户端的连接容器类,里面存放了连接对象。 |
ClientContainer.java | 客户端容器,用于存放下位机设备连接对象的容器,里面有自动清理的线程以及在线设备的集体心跳线程设计。 |
ClientInfo.java | 客户端信息类,该类下定义了非常多的连接属性,并持有网络通讯管道对象,是最终数据发送的端点。SetUtil.java 与QueryUtil.java 工具类,最终都是调用到了容器类里面的本类对象数据发送方法。 |
customcodes | Netty自定义处理码类,里面存放了自定义处理码类。 |
CustomByteToMessageDecoder.java | 自定义TCP的解码器,在这里针对数据字节进行了转义字符处理、TCP的数字粘包与半包的处理、验证数据校验帧等等。 |
CustomByteToMessageEncoder.java | 自定义TCP的编码器,对数据进行转义处理,若数据体内有7E、7D之类的数据字节时,需要对其进行转义。 |
CustomGBT4UDPDecoder.java | 自定义UDP的解码器。 |
CustomGBT4UDPEncoder.java | 自定义UDP的编码器。 |
handler | Netty的处理类,里面存放了处理类。 |
GBT209992017Handler4TCP.java | GBT服务端处理器Handler,使用此处理器说明,当前上位机SDK程序是TCP的服务端,而下位机设备是客户端。 |
GBT209992017Handler4UDP.java | UDP服务端处理器Handler。 |
util | 项目中常用的一些工具类,其与上面的kit包其实都是存放工具类的,不过一些是以Kit 为结尾文件名,一些是以Util 为结尾文件名。 |
ByteArrayStr16ToString.java | 16进制串转10进制自定义编写的工具类。 |
CRC16Util.java | CRC-16 算法生成多项式为: x^16 + x^12 + x^2 + 1 。 |
FrameFlowUtil.java | 帧流水号生成工具类。 |
GBT20999ByteUtil.java | 20999协议字节工具类,包括:CRC校验、获取报文长度等。 |
GBT20999DictUtil.java | 字典工具类,用于对resources目录下的GBT20999Dict.json 文件进行解析获取的工具类。 |
IntegerToHexUtil.java | 自定义封装的16进制工具类。 |
ParseConvertDataType_Detail.java | 详细解析、转换各数据类型的元素值,里面的解析方法由ParseDataByte4GBT20999_2017.java 类引用。 |
ParseDataByte4GBT20999_2017.java | 解析国标协议工具类,这里方法由ResultPoolContainer.java 结果池类引用,因为结果池对象在接收到应答数据时,需要对应答数据进行解析。 |
resources | 当前项目的资源文件目录,里面可以存放一些图片、图标及其它资源文件。 |
gbt20999_2017_sdkconfig.propertie | SDK属性配置文件。 |
GBT20999Dict.json | GBT20999-2017的字典文件,将国标文件所使用的常量定义到JSON配置中,再由GBT20999DictUtil.java 可以解析配置文件,生成字典对象。 |
remark.txt | 对项目进行简单的描述。 |