代码拉取完成,页面将自动刷新
一个非常非常简单的对接华为IoT平台coap组件实现,使用者只需要实现UDP的收发函数和一个延时函数即可。 作者通过wireshark抓包分析了华为IoT COAP协议对接的过程,代码中只是通过UDP封包的形式简单实现了对接平台的功能,力求简单,略显粗糙,但也足够一般场景使用了。只要你的平台支持udp通信,那么就可以使用该代码来和华为IoT通信了,没必要用复杂且占用空间的MQTT协议。 代码运行中使用的发送和接送的缓存空间都是由用户先申请的,可根据自己的情况创建一个数据。我测试使用的只有1K的RAM,收发Buffer分别是512B,如果发送和接收的数据量不大,也可以将RAM设置为256B。如果发送和接收在同一个线程,那么可以将发送和接收Buffer设置为同一个,节省RAM。
下边通过两幅图片展示了华为IoT COAP协议对接的流程,本次代码也是根据该流程实现的。 具体分析过程可以csdn查看博客: 抓包分析华为IOT平台CoAP对接流程。
/*
brief: send data through udp.
paras: data: data to be sent
len: data length to be sent
return: 0-success , other -failed
*/
uint8_t UDP_Send(uint8_t *data,uint16_t len);
/*
brief: receive data through udp.
paras: data,receive buffer
maxLen, max length of receiving buff.
return: receiving data length.
*/
uint16_t UDP_Receive(uint8_t *data,uint16_t maxLen);
/*
brief: delay some time. unit:ms
*/
void DelayMs(uint16_t ms);
cHWRegisterWithCoap(char *ep,uint8_t epLen)
向平台发起注册,需要传入设备IMEI(需要现在IoT平台创建好profile并添加设备)和IMEI的长度;
通过cHWReportData(uint8_t *data,uint16_t len)
接口向平台上报数据;
通过cuint16_t HWProcessRxData(uint8_t *data,uint16_t maxLen)
接收平台下发的数据。test.c是在linux下实现的一个测试程序,在linux环境下执行make即可生成testapp应用程序:
./testapp 868681049496159
其中868681049496159为我在平台上注册的设备的识别号(IMEI),需要根据自己的设备来进行修改。
testapplication 在树莓派上编译出来的应用程序,其运行效果如下图:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。