16进制写数据
开关一般写数据是这样的
Write data: { cmd = 1; entity0 = { "anion_sw" = 1; };}那如果是二进制 或者16进制要怎么写呢?麻烦告知一下
举个例子,如果你定义了一个扩展(二进制)类型的数据点名为binary_dataPoint,且这个数据点的长度是140个字节,待发送的这140个字节内容全为0x00,那么这个140个0x00用Base64编码之后就是AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=,故可以这么写数据:{"entity0":{"binary_dataPoint":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="},"cmd":1} SDK有提供一个专门用户Base64编解码的类XPGWifiBinary,大家可以调用里面的encode与decode函数完成Base64编解码工作。我这里也提供一个Base64编解码的网址:http://base64.xpcha.com/ 那么读数据的过程就是逆向的,didReceiveData回调内对应的扩展类型数据点返回的Base64编码过的数据,需要调用XPGWifiBinary类的decode方法将Base64编码数据解码后使用。 Trevor 发表于 2015-4-20 16:48
那么读数据的过程就是逆向的,didReceiveData回调内对应的扩展类型数据点返回的Base64编码过的数据,需要调 ...
按你说的去转码之后再write没有收到回复,是我写的不对还是硬件有问题呢
我是这样写的Write data: {
cmd = 1;
entity0 = {
"start_times" = "Azs=";
};
}
这个开始时间是扩展类型 两位包括小时和分钟
就是没有受到数据是不是写的不成功啊? Trevor 发表于 2015-4-20 16:42
举个例子,如果你定义了一个扩展(二进制)类型的数据点名为binary_dataPoint,且这个数据点的长度是140个 ...
按你说的去转码之后再write没有收到回复,是我写的不对还是硬件有问题呢
我是这样写的Write data: {
cmd = 1;
entity0 = {
"start_times" = "Azs=";
};
}
这个开始时间是扩展类型 两位包括小时和分钟
就是没有受到数据是不是写的不成功啊? Trevor 发表于 2015-4-20 16:42
举个例子,如果你定义了一个扩展(二进制)类型的数据点名为binary_dataPoint,且这个数据点的长度是140个 ...
按你说的去转码之后再write没有收到回复,是我写的不对还是硬件有问题呢
我是这样写的Write data: {
cmd = 1;
entity0 = {
"start_times" = "Azs=";
};
}
这个开始时间是扩展类型 两位包括小时和分钟
就是没有受到数据是不是写的不成功啊? 幽静书香 发表于 2015-4-21 15:16
按你说的去转码之后再write没有收到回复,是我写的不对还是硬件有问题呢
我是这样写的Write data: {
我这边用虚拟设备测试,写是可以成功了,虚拟设备上也收到了这个写的数据,但虚拟设备没有主动上报一包一样的数据,在虚拟设备上修改下扩展类型的数值,点击推送,APP可以收到修改过后的扩展类型数据上报。所以我怀疑设备跟虚拟设备的实现一样,扩展类型的数据改变了,没有做变化上报推给服务器或者APP。
你可以自己试一下。 04-22 14:55:53.663: I/xpgc(30912): 14:55:53 int GWifiDevice::write(char const*): {"entity0":{"open_time":"AQI="},"cmd":1}
04-22 14:55:53.663: I/xpgc(30912): 14:55:53 size_t XPGWifiProtocol::EncodeData(char const*, char const*, byte*, size_t): using model="P0 协议第四版" version="4.000000"
04-22 14:55:53.663: I/xpgc(30912): 14:55:53 Filter entity: id='0' name='entity0' display_name='机智云开发套件'
04-22 14:55:53.673: I/xpgc(30912): 14:55:53 dword XPGWifiProtocol::GetPacketVersion(char const*): using model="P0 协议第四版" version="4.000000"
04-22 14:55:53.673: I/xpgc(30912): writeP0
04-22 14:55:53.673: I/xpgc(30912): 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
04-22 14:55:53.673: I/xpgc(30912): --------------------------------------------------------------------------------
04-22 14:55:53.673: I/xpgc(30912):01 04 00 01 02
04-22 14:55:53.683: W/xpgc(30912): 14:55:53 _recvThread() write
04-22 14:55:53.683: I/xpgc(30912): writePm(), topic = "app2dev/4BeBXtRQg4ZmT6Mf5ybTgN/usruWC_3i}9o,PvaVB-1H]8"
04-22 14:55:53.683: I/xpgc(30912): 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
04-22 14:55:53.683: I/xpgc(30912): --------------------------------------------------------------------------------
04-22 14:55:53.683: I/xpgc(30912):00 00 00 03 08 00 00 90 01 04 00 01 02
04-22 14:56:06.073: I/xpgc(30912): readPm(), tcp raw data
04-22 14:56:06.073: I/xpgc(30912): 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
04-22 14:56:06.073: I/xpgc(30912): --------------------------------------------------------------------------------
04-22 14:56:06.073: I/xpgc(30912): 30=0 2C=,00 1E64=d 65=e 76=v 32=2 61=a 70=p 70=p 2F=/ 34=4 42=B 65=e 42=B
04-22 14:56:06.073: I/xpgc(30912): 58=X 74=t 52=R 51=Q 67=g 34=4 5A=Z 6D=m 54=T 36=6 4D=M 66=f 35=5 79=y 62=b 54=T
04-22 14:56:06.073: I/xpgc(30912): 67=g 4E=N00 00 00 03 07 00 00 91 04 00 01 03
04-22 14:56:06.073: I/xpgc(30912): _handleMqttPacket(), mqtt stripped data
04-22 14:56:06.073: I/xpgc(30912): 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
04-22 14:56:06.073: I/xpgc(30912): --------------------------------------------------------------------------------
04-22 14:56:06.073: I/xpgc(30912):04 00 01 03
04-22 14:56:06.073: W/xpgc(30912): 14:56:06 _recvThread() mqtt callback 48
04-22 14:56:06.073: I/xpgc(30912): 14:56:06 bool GWifiDevicePrivate::OnReceive(XpgPacket*, bool): 4
04-22 14:56:06.073: I/xpgc(30912): recv
04-22 14:56:06.073: I/xpgc(30912): 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
04-22 14:56:06.073: I/xpgc(30912): --------------------------------------------------------------------------------
04-22 14:56:06.073: I/xpgc(30912):04 00 01 03
04-22 14:56:06.073: I/xpgc(30912): 14:56:06 std::string XPGWifiProtocol::DecodeData(char const*, const byte*, size_t): using model="P0 协议第四版" version="4.000000"
04-22 14:56:06.073: I/xpgc(30912): 14:56:06 Filter entity: id='0' name='entity0' display_name='机智云开发套件'
04-22 14:56:06.083: W/xpgc(30912): 14:56:06 alert size 0,fault size 0
04-22 14:56:06.083: I/xpgc(30912): 14:56:06 receive data: {"cmd":4,"entity0":{"Mode":"0","TurnOnOff":false,"open_time":"AQM="},"version":4.0}
上面是自己用虚拟设备测试后发的数据,在APP上发送0102,在虚拟设备上推送0103,得到的日志如上。 Trevor 发表于 2015-4-22 14:58
04-22 14:55:53.663: I/xpgc(30912): 14:55:53 int GWifiDevice::write(char const*): {"entity0":{"open_t ...
搞定了,就是按照你说的那么传的,十分感谢啊。。。要是你们文档加上这个就好了:)EFT2 幽静书香 发表于 2015-4-22 19:23
搞定了,就是按照你说的那么传的,十分感谢啊。。。要是你们文档加上这个就好了EFT2 ...
搞定了就好,文档确实欠缺,实在是太忙了,希望类似的帖子以后可以帮到其他人。
页:
[1]