设计简单的二进制物联网协议

一、主要架构

  1、客户端和服务端模式。

  2、以传输层TCP协议为基础。

  3、服务端的端口固定在9999,可以修改。

 

二、物联网终端设备的作用

 1、采集信息,传给云端

        需要终端设备作为客户端,主动连接远程的服务器。

 

  2、接受远程控制中心的命令

       需要作为服务端,接受控制中心客户端的连接,接受命令,反馈执行结果。

 

        总结:物联网设备需要同时担任客户端和服务端两种身份。

 

三、需要传递的信息种类

        本文假设:物联网设备是服务端,控制中心是客户端。

  1、客户端发起的命令

   例如:获取最新的参数,关闭或者打开某个功能。

  2、服务端返回执行结果

    返回执行成功或者失败的结果。

 

四、协议格式如下

  (一)登录包(客户端给服务端)

类型(1字节,值为0x00)

用户名长度(2字节)

用户名字节序列

摘要值长度(2字节)

密码摘要值大写十六进制字符的字节序列

 

 (二)命令数据包格式(客户端给服务端)

类型(1字节,值为0x01)

命令代号(2字节)

名字长度(1字节)

命令名字的字节序列(长度指定)

参数个数(1字节)

参数集合(指定个数的参数单元组成)

  说明:

    命令需要用户具体制定。

    假设命令如下:

代号        名字          参数

100         open       管脚编号:字符串类型

101         close      管脚编号:字符串类型

102     open-auto-send    功能编号,整型

103      config-set    名:字符串   值:字符串

104        get-temp      设备号:字符串

105        get-light        设备号:字符串

 

 (三)执行结果包(服务端给客户端)

类型(1字节,值为0x01)

结果代号(2字节)

参数个数(1字节)

参数集合(指定个数的参数单元组成)

  假设结果代号如下:

1   代表登录成功

2   代表登录失败

3   代表命令执行成功

4   代表命令执行失败

 

五、参数基本单元的格式

   在命令包和执行结果包中都有参数集合。

   参数集合由连续的基本单元组成。

   基本单元的组成格式如下:

类型(1字节)

参数长度(1字节)

参数的字节序列(长度指定)

  类型有下列:

1     是整型

2     是双精度浮点型

3     是字节序列

4     是UTF-8的字符串的字节序列

 

六、主要通信过程

  (一)登录

   1、终端正常启动,开启TCP服务端端口监听

   2、客户端主动TCP连接终端。

   3、客户端发出登录包,携带用户名和密码。

   4、终端读取登录包,提取用户名和密码,判断内部用户表:

       如果比对成功,返回登录成功的结果包。

       如果比对失败,返回登录失败的结果包。

    5、客户端读取结果包,判断结果代号:

        如果代号为1,代表登录成功。

        如果代号为2,代表登录失败。

 

  (二)命令控制

   1、已知登录成功。

   2、客户端发送一个命令包。

   3、终端读取命令包,提取出命令和参数,调用驱动库,执行命令。

   4、执行完毕后,没有错误就发送执行成功的结果包。

    有错误就发送执行失败的结果包。

   5、客户端读取结果包,判断代号是否为执行成功和失败。

 

  (三)关闭连接

   1、客户端主动发送关闭连接命令包。

   2、终端读取命令包,获取代号,执行关闭方法。

 

七、总结

   1、二进制协议的优点是紧凑,格式精确。

   2、提供用户自定义设计命令。

   3、需要加密通信,才能安全登录和控制。

   4、需要根据要求,约定命令的参数列表。

        命令执行后,返回的信息可以编制个数和顺序。

   例如:查看设备f3的温度和光照值:

    发送命令包:

        命令是"get-device",参数是1个,类型是字符串,值是"f3"的字节序列。

     执行成功的返回包:

         结果代号是3,代表成功;参数是2个,第1个参数是浮点型的温度值,第2个参数是浮点型的光照值。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值