\}
CMD字段解释如下:\对应的MODBUS RTU命令如下图所示: {0x11,0x03,0x0,0x6B,0x0,0x3,0x87,0x76},其中0x87和0x76存储的是CRC16结果0x8776,从Slave Address 0x11开始计算到最后一个寄存器地址(此处为0x3)。
3.上传登录报文
如前述登录报文格式,例子如下:
unsigned char req[52];
unsigned char type[11] = \ unsigned char name[9] = \ unsigned char phone[12] = \填写创建设备时的卡号 unsigned char pwd[9] = \填写创建设备时的密码
unsigned char p_id[11] = \设备所在项目的ID memset(req, 0, 52); memcpy(req, type, 11); memcpy(req + 11, name, 9); memcpy(req + 11 + 9, phone, 12); memcpy(req + 11 + 9 + 12, pwd, 9); memcpy(req + 11 + 9 + 12 + 9, p_id, 11);
向登录服务器上传整个req即可,登录成功无返回,否则服务器断开连接。
Raw数据如下:
0x74 0x79 0x70 0x65 0x0 0x0 0x0 0x0 0x0 0x0 0x00x6e 0x61 0x6d 0x65 0x0 0x0 0x0 0x0 0x0 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x30 0x0 0x0 0x0 0x0 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x30 0x0 0x33 0x39 0x34 0x38 0x34 0x0 0x0 0x0 0x0 0x0 0x0
四个颜色标注的数据依次对应登录报文的各字段。
4.与服务器端建立TCP连接后,并成功登录,设备云会定期发送查询命令,设备一分钟内无回复,服务器会断开连接。
设备端收到的命令RAW数据如下: 0x11 0x3 0x0 0x6b 0x0 0x3 0x87 0x76
和增加数据流时配置的数据一模一样,如\。
5.设备端回复查询命令的结果
按照如下截图中RTU格式回复16进制数据:
0x11 0x3 0x6 0x2 0x2b 0x0 0x0 0x0 0x64 0xc8 0xba ,采用CRC16校验,不需要转字符串。
6.查看上传结果
1.在平台的web端显示,进入对应项目和设备的页面查看,情况如下:
2.利用restfull api查询结果,这里使用Fiddler工具发送查询设备数据点的命令。
核对下数据,是不是我们上传的。
上传数据:0x11 0x3 0x6 0x2 0x2b 0x0 0x0 0x0 0x64 0xc8 0xba , 0x22b=555,0x00=0,0x64=100,上传正确。
附测试用Restfull api:
POST http://api.heclouds.com/devices HTTP/1.1 User-Agent: Fiddler api-key: yours
Host: api.heclouds.com Content-Length: 155 {
\ \ \ \
\ \}
POST http://api.heclouds.com/devices/yours/datastreams HTTP/1.1 User-Agent: Fiddler api-key: yours
Host: api.heclouds.com Content-Length: 66 {
\
\\}
GET http://api.heclouds.com/devices/yours/datastreams/test_cmd HTTP/1.1 User-Agent: Fiddler api-key: yours
Host: api.heclouds.com Content-Length: 0