一、版本信息
版本 |
日期 |
修改說明 |
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