收藏官网首页
查看: 19643|回复: 10

16进制写数据

5

主题

18

帖子

94

积分

注册会员

Rank: 2

积分
94
跳转到指定楼层
楼主
发表于 2015-4-20 16:09:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发

开关一般写数据是这样的
Write data: {
    cmd = 1;
    entity0 =     {
        "anion_sw" = 1;
    };
}
那如果是二进制 或者16进制要怎么写呢?  麻烦告知一下

62

主题

125

帖子

665

积分

高级会员

Rank: 4

积分
665
沙发
发表于 2015-4-20 16:42:41 | 只看该作者
举个例子,如果你定义了一个扩展(二进制)类型的数据点名为binary_dataPoint,且这个数据点的长度是140个字节,待发送的这140个字节内容全为0x00,那么这个140个0x00用Base64编码之后就是AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=,故可以这么写数据:{"entity0":{"binary_dataPoint":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="},"cmd":1}

62

主题

125

帖子

665

积分

高级会员

Rank: 4

积分
665
板凳
发表于 2015-4-20 16:45:38 | 只看该作者
SDK有提供一个专门用户Base64编解码的类XPGWifiBinary,大家可以调用里面的encode与decode函数完成Base64编解码工作。我这里也提供一个Base64编解码的网址:http://base64.xpcha.com/

62

主题

125

帖子

665

积分

高级会员

Rank: 4

积分
665
地板
发表于 2015-4-20 16:48:40 | 只看该作者
那么读数据的过程就是逆向的,didReceiveData回调内对应的扩展类型数据点返回的Base64编码过的数据,需要调用XPGWifiBinary类的decode方法将Base64编码数据解码后使用。

5

主题

18

帖子

94

积分

注册会员

Rank: 2

积分
94
5#
 楼主| 发表于 2015-4-20 22:55:46 | 只看该作者
免费使用STM32、APP自动代码生成工具
Trevor 发表于 2015-4-20 16:48
那么读数据的过程就是逆向的,didReceiveData回调内对应的扩展类型数据点返回的Base64编码过的数据,需要调 ...

按你说的去转码之后再write没有收到回复,是我写的不对还是硬件有问题呢

我是这样写的Write data: {
    cmd = 1;
    entity0 =     {
        "start_times" = "Azs=";
    };
}

这个开始时间是扩展类型 两位  包括小时和分钟

就是没有受到数据  是不是写的不成功啊?

5

主题

18

帖子

94

积分

注册会员

Rank: 2

积分
94
6#
 楼主| 发表于 2015-4-21 10:54:19 | 只看该作者
Trevor 发表于 2015-4-20 16:42
举个例子,如果你定义了一个扩展(二进制)类型的数据点名为binary_dataPoint,且这个数据点的长度是140个 ...

按你说的去转码之后再write没有收到回复,是我写的不对还是硬件有问题呢

我是这样写的Write data: {
    cmd = 1;
    entity0 =     {
        "start_times" = "Azs=";
    };
}

这个开始时间是扩展类型 两位  包括小时和分钟

就是没有受到数据  是不是写的不成功啊?

5

主题

18

帖子

94

积分

注册会员

Rank: 2

积分
94
7#
 楼主| 发表于 2015-4-21 15:16:28 | 只看该作者
Trevor 发表于 2015-4-20 16:42
举个例子,如果你定义了一个扩展(二进制)类型的数据点名为binary_dataPoint,且这个数据点的长度是140个 ...

按你说的去转码之后再write没有收到回复,是我写的不对还是硬件有问题呢

我是这样写的Write data: {
    cmd = 1;
    entity0 =     {
        "start_times" = "Azs=";
    };
}

这个开始时间是扩展类型 两位  包括小时和分钟

就是没有受到数据  是不是写的不成功啊?

62

主题

125

帖子

665

积分

高级会员

Rank: 4

积分
665
8#
发表于 2015-4-22 14:53:40 | 只看该作者
幽静书香 发表于 2015-4-21 15:16
按你说的去转码之后再write没有收到回复,是我写的不对还是硬件有问题呢

我是这样写的Write data: {

我这边用虚拟设备测试,写是可以成功了,虚拟设备上也收到了这个写的数据,但虚拟设备没有主动上报一包一样的数据,在虚拟设备上修改下扩展类型的数值,点击推送,APP可以收到修改过后的扩展类型数据上报。所以我怀疑设备跟虚拟设备的实现一样,扩展类型的数据改变了,没有做变化上报推给服务器或者APP。

你可以自己试一下。

62

主题

125

帖子

665

积分

高级会员

Rank: 4

积分
665
9#
发表于 2015-4-22 14:58:38 | 只看该作者
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="0 协议第四版" 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="0 协议第四版" 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   1E  64=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=N  00   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:ecodeData(char const*, const byte*, size_t): using model="0 协议第四版" 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,得到的日志如上。

5

主题

18

帖子

94

积分

注册会员

Rank: 2

积分
94
10#
 楼主| 发表于 2015-4-22 19:23:21 | 只看该作者
免费使用STM32、APP自动代码生成工具
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

62

主题

125

帖子

665

积分

高级会员

Rank: 4

积分
665
11#
发表于 2015-4-23 17:49:40 | 只看该作者
幽静书香 发表于 2015-4-22 19:23
搞定了,就是按照你说的那么传的,十分感谢啊。。。要是你们文档加上这个就好了EFT2 ...

搞定了就好,文档确实欠缺,实在是太忙了,希望类似的帖子以后可以帮到其他人。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表