Android SDK 2.0 FAQ
1.扩展数据点透传收发:1.1 定义数据点:
https://gizwits.kf5.com/attachments/download/789097/0015771ee47144007f07133e72dcdb8/
在机智云产品管理中的数据点中定义一个拓展类型的数据点,如图所示:定义数据长度为60个byte(透传情况下,数据长度暂时支持900字节内数据传输)
1.2 设备数据上报:
设备mcu按照数据点的定义格式上传即可,在完成新产品的定义后,每个新产品都有相应的串口通信协议文档,文档下载路径:机智云官网 –>硬件接入 ->设备列表-> 新产品 ->产品开发资源 ->《XXX-机智云接入串口通信协议文档》
在串口通信协议文档文档的4.9部分则有MCU上报数据的格式,如下图:
https://gizwits.kf5.com/attachments/download/789136/0015771f04f06583c1221446fd85940/
图中的dev_status(60B)即为需要透传的数据
1.3 APP回调接口说明
APP端接收到MCU上报数据的回调接口:didReceiveData,判断result为GizWifiErrorCode.GIZ_SDK_SUCCESS,则接收到的数据可能为普通数据点或者扩展数据点。
Andriod接收到MCU上报拓展数据类型代码示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
// 将16进制的byte转为string,比如byte值为{0x62,0x63},那么将转为“6263”
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char;
for (int j = 0; j < bytes.length; j++) {
int v = bytes & 0xFF;
hexChars = hexArray;
hexChars = hexArray;
hexChars = ' ';
}
return new String(hexChars);
}
@Override
protected void didReceiveData(GizWifiErrorCode result, GizWifiDevice device, ConcurrentHashMap<String, Object> dataMap, int sn) {
if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
// 普通数据点类型,有布尔型、整形和枚举型数据,该种类型一般为可读写
if (dataMap.get("data") != null) {
ConcurrentHashMap<String, Object> map = (ConcurrentHashMap<String, Object>) dataMap.get("data");
// 扩展数据点,key为"kuozhan"
byte[] bytes = (byte[]) map.get("kuozhan");
String string = bytesToHex(bytes);
Toast.makeText(this, string, Toast.LENGTH_SHORT).show(); }
}
}
1.4 APP下发
APP在GizWifiDevice类的write接口中,按照数据点定义发送扩展数据。
Andriod下发拓展数据类型命令代码示例:
1
2
3
4
5
byte[] input1 = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 };
// byte[] input2 = { 11, 22, 33, 44, 55, 66, 77, 88, 99};
ConcurrentHashMap<String, Object> dataMap = new ConcurrentHashMap<String, Object>();
dataMap.put("kuozhan", input1);
device.write(dataMap, 0);
上述代码中,input1与input2的透传结果是不一样的,input1中定义的是十六进制的数值,input2中则是十进制的数值。如果使用input1中0x11的值下发给设备,那么设备将收到0x11的十六进制值,如果使用input2中11的值下发给设备,那么设备收到将是0x0b(十进制11对应十六进制b)。使用input1下发设备,MCU收到的数据为:
FF FF 00 43 03 45 00 00 01 01 11 22 33 44 55 66 77 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69
页:
[1]