单片机非透传方式对接AEP平台(二)

今天是2020年7月7日,天气阴,趁着这段时间,公司的项目比较松懈,于是,自己想法做一个小项目。

第一篇文章,设备端模组透传对接AEP平台测试,https://blog.csdn.net/qq_35547767/article/details/107082563,已经详细介绍了关于怎么使用NB模组,直接使用串口调试助手,发送AT指令,对接AEP平台,达到NB模组上线的目的。

今天第二篇文章,主要介绍使用单片机对接AEP平台的过程,大致原理如下,NB模组和单片机之间,利用单片机的串口,将单片机端需要发送的数据,使用串口发送到NB模组的缓冲区,NB模组再通过NB窄带网络传输到AEP平台。(单片机接收数据则相反)

根据以上的硬件原理图,单片机端需要编写的程序,大概有以下步骤:

①编写单片机端的串口驱动程序,实现单片机与模组之间的数据发送与接收。

②使用单片机的串口发送和串口接收驱动程序,实现向Lireda模组发送AT指令,控制模组的启动以及获取模组的配置信息,最后,使用AT指令发送,需要上传到AEP平台的数据。

③根据AEP平台编码和解码的格式,组包需要发送的数据。

(AEP解码的数据格式,按照以下格式,进行解码)

遵循Object19协议规则:

发送数据内容格式:
帧头: CMDType   (1个字节)  (命令类型)(业务数据上报、事件上报、无线参数上报,都为0x02类型)
             ServiceID     (2个字节)     (平台分配的服务ID)(根据AEP平台上面的服务列表中的服务,有具体的服务ID)
             TaskID:必填字段,2Bytes,由平台分配,用于关联下发指令和回复响应,指令和响应中的TaskID必须一致(主要用于命令下发和响应,上报一般不需要)
  帧体:  Payload_length:必填字段,2Bytes,Payload的长度  (发送数据内容的实际长度)
               Payload:类型为Binary,按照服务定义的属性(或参数)进行编码和解码(数据内容)

最后,根据AEP平台自定义的服务和属性进行组包数据内容,由于AEP平台上面,自带的物模型里面没有我需要的数据组包格式,因此我自定义了服务和属性,如下图:

单片机非透传方式对接AEP平台(二)_第1张图片

单片机非透传方式对接AEP平台(二)_第2张图片

单片机非透传方式对接AEP平台(二)_第3张图片

注意点:

①组包数据时,由于单片机端是采用小端模式存储,低字节在前,因此,发送数据时,需要转换成大端模式,AEP平台端解码时的数据格式,是按照大端模式进行的。

②组包数据里面,包含变长字符串的数据类型是,需要在变长字符串前面,添加2个字节,表示实际变长字符串的长度,实际字符串的长度,需要和变长字符串的实际内容长度一致。

以上两点,是我在组包数据时,遇到的两个问题,最终会导致AEP平台解码失败。以下,是我按照自己的组包格式,上传的数据。

单片机非透传方式对接AEP平台(二)_第4张图片

最后,AEP平台上面接收的数据如下图:

单片机非透传方式对接AEP平台(二)_第5张图片

你可能感兴趣的:(中国电信AEP平台对接测试)