【Tips:本人刚入行不久,还比较浅显,有不足的地方,请多多指教。这里记录的是个人的工作笔记和思考,实际的效果还需要时间去验证,仅供参考】
常规使用
在MCU与4G模块(以Fibocom_MC66x型号为例)进行AT指令通信的过程中,MCU对4G模块返回的结果的判定,习惯性都是直接使用strstr()函数进行判定。如发送指令"AT+CGREG?"给4G模块,4G模块会返回结果,此时想要的结果为"+CGREG: 0,1",因此调用函数strstr(rx_data, "+CGREG: 0,1")进行判定(rx_data为4G模块返回的数据),假如strstr()不返回NULL,则说明4G模块返回的数据中包含了"+CGREG: 0,1",判定为返回正确。
问题引入
常规使用情况下,4G模块都是只会返回字符串,可以使用strstr()对返回的数据进行判定,判定是否为自己想要的数据。但假如此时4G模块通过TCP连接了云平台服务器,而MCU与云平台之间定义了一些十六进制的通信协议,需要将4G模块作为MCU与云平台之间的通信介质。如云平台下发指令给4G模块,4G模块再发送给MCU。通信关系如下图所示: