pomia 发表于 2015-11-27 22:48:17

透传数据代码示例

本帖最后由 pomia 于 2015-12-11 18:04 编辑

XPGWifiSDK 透传数据使用方法:

在APP和MCU之间,有两种方式透传数据:
(1)在产品数据点定义时,定义扩展类型数据点
(2)对不定义数据点的产品直接进行数据透传

设备上报:
1、第一种透传方式,设备mcu按照数据点的定义格式上传即可;APP在didReceiveData中,判断result为0(XPGWifiError_NONE),透传数据放在回传参数的“binary”字段中。
2、第二种透传方式,设备mcu在上传的p0中,第一个字节要填充0x06,后跟自定义数据;APP在didReceiveData中,判断result为-48(XPGWifiError_RAW_DATA_TRANSMIT),则回传参数的“binary”字段会返回透传数据。

iOS代码示例:
- (void)XPGWifiDevice: (XPGWifiDevice *)device didReceiveData: (NSDictionary *)recvInfo result: (int)result{    if (XPGWifiError_NONE == result || XPGWifiError_RAW_DATA_TRANSMIT == result) {      if (recvInfo) {            NSData* binary = ;      }
    }}
Andriod代码示例:
public void didReceiveData(XPGWifiDevice device, java.util.concurrent.ConcurrentHashMap<String, Object> dataMap, int result) {    if (XPGWifiErrorCode.XPGWifiError_NONE == result ||XPGWifiErrorCode.XPGWifiError_RAW_DATA_TRANSMIT== result) {        if (dataMap != null && dataMap.get("binary") != null) {            byte[] binary = (byte[]) dataMap.get("binary");      }    }}
APP下发:
1、第一种透传方式,APP在XPGWifiDevice类的write接口中,按照数据点定义发送扩展数据;
2、第二种透传方式,APP在XPGWifiDevice类的write接口中,发送的json格式为:{"binary": "xxxxxx"};

iOS代码示例:
            char bytes = {1,2,3,4,5,6,7,8,9};
            NSData* data = ;
            NSString* _data = ;
            NSMutableDictionary *request = ;
            ;
            NSLog(@"try to send binary: %@", data);
            ;


Android 代码示例:
            byte []input = {1,2,3,4,5,6,7,8,9};
            String value = new String(XPGWifiBinary.encode(input));
            final JSONObject jsonsend = new JSONObject();
            jsonsend.put("binary", value);
            xpgWifiDevice.write(jsonsend.toString());


pomia 发表于 2015-12-5 23:15:37

本帖最后由 pomia 于 2015-12-11 16:50 编辑

更正:
mcu在上传透传数据时,p0第一个字节填充0x06子命令,不是0xfe。
app在下发透传数据时,用json格式,binary字段填充透传数据,SDK内部会自动把p0的第一个字节填充为0x05。

ghost 发表于 2015-12-7 10:12:56

本帖最后由 ghost 于 2015-12-8 15:09 编辑

上面说的 0x05和0x06子命令是不是指的就是P0命令中的action呢?
app中改为jsonsend.put("cmd", 5);命令发不出去!

pomia 发表于 2015-12-8 23:07:11

05、06是指action。
发送透传数据时,格式不是"cmd", 5。上面的代码示例已经写的很明确: jsonsend.put("binary", value);

字段名必须是binary,value为你要透传的数据内容。

chenws 发表于 2016-4-14 13:32:32

设备接收gizwits_cloud_receive(const unsigned char *pdata, unsigned short length),收不到binary的信息,也就是APK发送后binary,gizwits_cloud_receive没有被调用过。
我采用esp8266,没有用MCU,但获取设备状态和设置设备都正常。
请问楼主,可能是什么原因?
非常感谢
页: [1]
查看完整版本: 透传数据代码示例