一、版本信息
版本 |
日期 |
修改说明 |
V1.0.0 |
2021-10-18 |
创建 |
表1.1.1
二、开发环境
Jdk1.8
三、文件列表
文件名 |
描述 |
是否必须 |
NetDevice_SDK.jar |
开发时引用此库 |
是 |
NetDeviceParam.dat |
设备参数数据文件 |
是 |
表3.1.1
四、使用说明
1、添加引用
将NetDevice_SDK.jar导入项目工程
2、启动服务
1)导入包:
import rk.netdevice.sdk.AffectedParamItems;
import rk.netdevice.sdk.DataTransAck;
import rk.netdevice.sdk.DeviceService;
import rk.netdevice.sdk.IDataListener;
import rk.netdevice.sdk.LoginData;
import rk.netdevice.sdk.NodeData;
import rk.netdevice.sdk.ParamIds;
import rk.netdevice.sdk.ParamItem;
import rk.netdevice.sdk.ParamItems;
import rk.netdevice.sdk.RealTimeData;
import rk.netdevice.sdk.RelayStatus;
import rk.netdevice.sdk.StoreData;
import rk.netdevice.sdk.StoreDataAck;
import rk.netdevice.sdk.StoreDataCount;
import rk.netdevice.sdk.TelecontrolAck;
import rk.netdevice.sdk.TelecontrolParam;
import rk.netdevice.sdk.TimingAck;
2)注册数据监听接口:
DeviceService.
getInstance().addDataListener(
new IDataListener() {
@Override
public void receiveTimingAck(TimingAck ack) {
}
@Override
public void receiveTelecontrolAck(TelecontrolAck data) {
}
@Override
public void receiveStoreDataCount(StoreDataCount data) {
}
@Override
public void receiveStoreDataAck(StoreDataAck data) {
}
@Override
public void receiveStoreData(StoreData data) {
}
@Override
public void receiveRealTimeData(RealTimeData data) {
}
@Override
public void receiveParamItems(ParamItems data) {
}
@Override
public void receiveParamIds(ParamIds data) {
}
@Override
public void receiveLoginData(LoginData data) {
}
@Override
public void receiveDataTransAck(DataTransAck arg0) {
}
@Override
public void receiveAffectedParamItems(AffectedParamItems data) {
}
});
3)设置设备参数文件路径
DeviceService.
getInstance().setParamFile("E:/NetDeviceParam.dat");
4)启动监听服务:
DeviceService.
getInstance().start("127.0.0.1", 2404);
五、接口说明
1、方法说明
1)配置设备参数文件路径
方法名: |
setParamFile |
参数: |
String fileName 设备参数文件(NetDeviceParam.dat)该文件中包含设备参数的描述,用于设备参数的读取和下发,不可修改 |
返回值: |
无 |
方法原型: |
public void setParamFile(String fileName) |
调用示例: |
DeviceService.getInstance().setParamFile("E:/NetDeviceParam.dat"); |
表5.1.1.1
2)注册数据监听接口
方法名: |
addDataListener |
参数: |
IDataListener listener 实现IDataListener的类,设备上传的数据在此类中接收处理 |
返回值: |
无 |
方法原型: |
public void addDataListener(IDataListener listener) |
调用示例: |
DeviceService.getInstance().addDataListener(new IDataListener() {}); |
表5.1.2.1
3)启动监听服务
方法名: |
start |
参数: |
String ip 监听ip。多网卡的情况下可以选择监听其中一个网卡的ip,可为空,为空则监听所有网卡;
int port监听端口 |
返回值: |
无 |
方法原型: |
public void start(String ip, int port) |
调用示例: |
DeviceService.getInstance().start("127.0.0.1", 2404); |
表5.1.3.1
4)停止监听服务
方法名: |
stop |
参数: |
无 |
返回值: |
无 |
方法原型: |
public bool Stop(); |
调用示例: |
DeviceService.getInstance().stop(); |
表5.1.4.1
5)执行继电器操作
方法名: |
telecontrol |
参数: |
int deviceAddr 设备地址
short seqNum 帧序号 用来表示一次交互的消息ID,可以为0
List<TelecontrolParam> paramList 操作参数列表,参考表5.1.3.2 |
返回值: |
true:发送成功;false:发送失败 |
方法原型: |
public boolean telecontrol(int deviceAddr, short seqNum, List<TelecontrolParam> paramList) |
调用示例: |
DeviceService.getInstance().telecontrol(10000000, (short)0, paramList); |
说明 |
设备响时触发receiveTelecontrolAck监听 |
表5.1.5.1
TelecontrolParam构造方法说明
参数名 |
类型 |
描述 |
relayNo |
Short |
继电器编号 |
opt |
Short |
继电器执行类型 1:代表执行继电器闭合操作;0:代表执行继电器释放操作 |
optTime |
Short |
继电器执行时间,单位秒,若为0则一直吸合或者释放 |
表5.1.5.2
6)发送校时指令
方法名: |
timing |
参数: |
int deviceAddr设备地址
short seqNum帧序号 用来表示一次交互的消息ID,可以为0 |
返回值: |
true:发送成功;false:发送失败 |
方法原型: |
public boolean timing(int deviceAddr, short seqNum) |
调用示例: |
DeviceService.getInstance().timing(10000000, (short)0); |
说明 |
设备响应时触发receiveTimingAck 监听 |
表5.1.6.1
7)手动召唤实时数据
方法名: |
callRealTimeData |
参数: |
int deviceAddr设备地址
short seqNum帧序号 |
返回值: |
true:发送成功;false:发送失败 |
方法原型: |
public boolean callRealTimeData(int deviceAddr, short seqNum) |
调用示例: |
DeviceService.getInstance().callRealTimeData(10000000, (short)0); |
说明 |
设备响应时触发receiveRealTimeData 监听 |
表5.1.7.1
8)读取设备存储数据条数
方法名: |
readStoreDataCount |
参数: |
int deviceAddr设备地址
short seqNum帧序号 |
返回值: |
true:发送成功;false:发送失败 |
方法原型: |
public boolean readStoreDataCount(int deviceAddr, short seqNum) |
调用示例: |
DeviceService.getInstance().readStoreDataCount(10000000, (short)0); |
说明 |
设备响应时触发receiveStoreDataCount监听 |
表5.1.8.1
9)读取设备存储数据
方法名: |
readStoreData |
参数: |
int deviceAddr设备地址
short seqNum帧序号 |
返回值: |
true:发送成功;false:发送失败 |
方法原型: |
public boolean readStoreData(int deviceAddr, short seqNum) |
调用示例: |
DeviceService.getInstance().readStoreData(10000000, (short) 0); |
说明 |
设备响应时触发receiveStoreDataAck监听 |
表5.1.9.1
10)读取设备参数列表
方法名: |
readParamItemsIds |
参数: |
int deviceAddr设备地址
short seqNum帧序号 |
返回值: |
true:发送成功;false:发送失败 |
方法原型: |
public boolean readParamItemsIds(int deviceAddr, short seqNum) |
调用示例: |
DeviceService.getInstance().readParamItemsIds(10000000, (short) 0); |
说明: |
设备响应时触发receiveParamIds监听 |
表5.1.10.1
11)读取设备参数
方法名: |
readParamItems |
参数: |
int deviceAddr设备地址
short seqNum帧序号
List<Short> paramIds设备参数编号。由ReadDictItemsIds方法获得 |
返回值: |
true:发送成功;false:发送失败 |
方法原型: |
public boolean readParamItems(int deviceAddr, short seqNum, List<Short> paramIds) |
调用示例: |
DeviceService.getInstance().readParamItems(10000000, (short) 0, paramIds); |
说明: |
设备响应时触发receiveParamItems监听 |
表5.1.11.1
12)下发设备参数
方法名: |
writeParamItems |
参数: |
int deviceAddr设备地址
short seqNum帧序号
List<ParamItem> paramItems设备参数值,参考表5.3.7.2 |
返回值: |
true:发送成功;false:发送失败 |
方法原型: |
public boolean writeParamItems(int deviceAddr, short seqNum, List<ParamItem> paramItems) |
调用示例: |
DeviceService.getInstance().writeParamItems(10000000, (short)0, paramItems); |
说明: |
设备响应时触发receiveAffectedParamItems监听 |
表5.1.12.1
2、监听说明
数据监听类须实现IDataListener接口,接口中方法说明如下
1)receiveLoginData
方法名: |
receiveLoginData |
描述: |
设备发送登录数据时触发此监听 |
参数: |
LoginData data 登录数据 参考表5.3.1.1 |
表5.2.1.1
2)receiveRealTimeData
方法名: |
receiveRealTimeData |
描述: |
设备发送实时数据时触发此监听 |
参数: |
RealTimeData data 实时数据 参考表5.3.2.1 |
表5.2.2.1
3)receiveStoreData
方法名: |
receiveStoreData |
描述: |
设备主动上传已存储数据时触发此监听 |
参数: |
StoreData data 存储数据 参考表5.3.3.1 |
表5.2.3.1
4)receiveTelecontrolAck
方法名: |
receiveTelecontrolAck |
描述: |
设备应答继电器操作时触发此监听 |
参数: |
TelecontrolAck ack设备响应数据 参考表5.3.9.1 |
表5.2.4.1
5)receiveTimingAck
方法名: |
receiveTimingAck |
描述: |
设备应答校时结果时触发此监听 |
参数: |
TimingAck ack 校时结果 参考表5.3.10.1 |
表5.2.5.1
6)receiveParamIds
方法名: |
receiveParamIds |
描述: |
设备应答读取参数字典编号时触发此监听 |
参数: |
ParamIds ack 参考表5.3.5.1 |
表5.2.6.1
7)receiveParamItems
方法名: |
receiveParamItems |
描述: |
终端响应下载参数命令时触发此监听 |
参数: |
ParamItems ack 参考表5.3.7.1 |
表5.2.7.1
8)receiveAffectedParamItems
方法名: |
receiveAffectedParamItems |
描述: |
设备应答写入参数结果时触发此监听 |
参数: |
AffectedParamItems ack 参考表5.3.8.1 |
表5.2.8.1
9)receiveStoreDataCount
方法名: |
receiveStoreDataCount |
描述: |
设备应答读取已存储数据条数时触发此监听 |
参数: |
StoreDataCount ack 参考表5.3.4.1 |
表5.2.9.1
10)receiveStoreDataAck
方法名: |
receiveStoreDataAck |
描述: |
设备应答读取已存储数据时触发此监听 |
参数: |
StoreDataAck ack 参考表5.3.5.1 |
表5.2.10.1
11)receiveDataTransAck
方法名: |
receiveDataTransAck |
描述: |
设备应答数据透传结果时触发此监听 |
参数: |
DataTransAck ack 参考表5.3.11.1 |
表5.2.10.1
3、数据类
1)登录数据 LoginData
方法 |
返回值 |
说明 |
getDeviceAddr() |
Integer |
设备地址 |
getSeqNum() |
Short |
帧序号,与设备一次交互的唯一标识,应答方须复制此值进行应答。下同 |
表5.3.1.1
2)实时数据RealTimeData
方法 |
返回值 |
说明 |
getDeviceAddr() |
Integer |
设备地址 |
getSeqNum() |
Short |
帧序号 |
getNodeDataList() |
List<NodeData> |
节点数据列表。NodeData参考表5.3.2.2 |
表5.3.2.1
NodeData
方法 |
返回值 |
说明 |
getNodeId() |
Short |
节点编号 |
getRecordTime() |
Integer |
时间,1970年1月1日到记录时刻的秒数 |
getDataType() |
DataTypes |
数据类型 |
getAnalog1() |
Float |
模拟量1值 |
getAnalog2() |
Float |
模拟量2值 |
getIntData() |
Integer |
整形值 |
getFloatData() |
Float |
浮点型值 |
getDoubleData() |
double |
双精度值 |
getSwitchData() |
Integer |
开关量值, 0代表无效;1代表闭合;2代表断开 |
getStringData() |
String |
字符串值 |
getCoordinateType() |
Integer |
0代表为上送的百度经纬度
1代表基站为中国联通
2代表基站为中国移动
03代表GPS经纬度信息 |
getLng() |
Float |
经度 |
getLat() |
Float |
纬度 |
getData() |
String |
转换后的数据,模拟量1和模拟量2的数据用英文逗号分隔 |
表5.3.2.2
3)主动上传的存储数据StoreData
方法 |
返回值 |
说明 |
getDeviceAddr() |
Integer |
设备地址 |
getSeqNum() |
Short |
帧序号 |
getNodeDataList() |
List<NodeData> |
节点数据列表。NodeData参考表5.3.2.2 |
表5.3.3.1
4)设备已存储数据的条数StoreDataCount
方法 |
返回值 |
说明 |
getDeviceAddr() |
Integer |
设备地址 |
getSeqNum() |
Short |
帧序号 |
getCount() |
Integer |
已存储数据条数 |
表5.3.4.1
5)召唤的已存储数据StoreDataAck
方法 |
返回值 |
说明 |
getDeviceAddr() |
Integer |
设备地址 |
getSeqNum() |
Short |
帧序号 |
getTotalCount() |
int |
设备上已存储数据总条数 |
getSurplusCount() |
int |
设备上已存储数据剩余条数 |
getNodeDataList() |
List<NodeData> |
节点数据列表。NodeData参考表5.3.2.2 |
表5.3.5.1
6)设备字典编号列表ParamIds
方法 |
返回值 |
说明 |
getDeviceAddr() |
Integer |
设备地址 |
getSeqNum() |
Short |
帧序号 |
getTotalDictCount() |
Integer |
本设备所有字典总数 |
getIdList() |
List<short> |
设备字典列表 |
表5.3.6.1
7)设备参数ParamItems
方法 |
返回值 |
说明 |
getDeviceAddr() |
Integer |
设备地址 |
getSeqNum() |
Short |
帧序号 |
getParamItemList() |
List<Paramtem> |
设备参数列表参考表5.3.7.2 |
表5.3.7.1
ParamItem
方法 |
返回值 |
说明 |
getParamId() |
Short |
参数编号 |
getParamValueType() |
ParamValueTypes |
参数值类型 |
getParamName() |
String |
参数名称 |
getValue() |
String |
参数值 |
getMaxStrLength() |
Integer |
字符串类型的字典值最大长度 |
getMinValue() |
Integer |
数值类型的最小值 |
getMaxValue() |
Integer |
数值类型的最大值 |
getValueDescription() |
Map<String, String> |
数值描述 |
create() |
ParamItem |
创建ParamItem类,用于下发参数
Short paramId 设备参数编号
String value 参数值 |
表5.3.7.2
8)下发设备参数应答AffectedParamItems
方法 |
返回值 |
说明 |
getDeviceAddr() |
Integer |
设备地址 |
getSeqNum() |
Short |
帧序号 |
getParamIdList() |
List<Short> |
受影响的参数字典编号 |
表5.3.8.1
9)继电器操作应答TelecontrolAck
方法 |
返回值 |
说明 |
getDeviceAddr() |
Integer |
设备地址 |
getSeqNum() |
Short |
帧序号 |
getRelayStatusList() |
List<RelayStatus> |
继电器状态列表参考表5.3.9.2 |
表5.3.9.1
RelayStatus
方法 |
返回值 |
说明 |
getRelayNo() |
Short |
继电器编号 |
getExecResult() |
Integer |
执行情况 成功1,失败2,未知错误3 |
getCurrStatus() |
Integer |
当前状态 0断开,1吸合 |
表5.3.9.2
10)校时指令应答TimingAck
方法 |
返回值 |
说明 |
getDeviceAddr() |
Integer |
设备地址 |
getSeqNum() |
Short |
帧序号 |
getExecResult() |
Integer |
执行结果 1执行成功 其他执行失败 |
表5.3.10.1
11)透传数据应答DataTransAck
方法 |
返回值 |
说明 |
getDeviceAddr() |
Integer |
设备地址 |
getSeqNum() |
Short |
帧序号 |
getChannelNo() |
Integer |
通道编号 |
getTransData() |
byte[] |
透传数据 |
表5.3.11.1