1、AP能发送AT指令,但cp接收不了AT指令?
查找原因:是因为cp那边接收指令的结束符不对,导致判断不出接收数据是不是AT指令,以至于无法解析数据。
解决办法:通过查看代码,cp那边是通过“n”作为AT指令的结束符,修改代码将“n”改为“r”,把结束符改成“r”就OK了,另外串口的波特率不匹配也会导致AT指令接收不成功。
2、AP和CP都能正确的发送和接收AT指令,但AP的RIL初始化不成功(即:static voidinitializeCallback(void *param)函数初始化不成功),通过打log(adb logcat -b radio)查看发现如下信息:
E/RIL ( 131): [young][Reference-ril.c] andy mainLoop()
D/RIL ( 131): setRadioState(0)
D/AT ( 131): AT> ATE0Q0V1
D/AT ( 131): AT> ATE0Q0V1
D/AT ( 131): AT> ATE0Q0V1
D/AT ( 131): AT> ATE0Q0V1
D/AT ( 131): AT> ATE0Q0V1
D/AT ( 131): AT> ATE0Q0V1
D/AT ( 131): AT> ATE0Q0V1
D/AT ( 131): AT> ATE0Q0V1
D/RIL ( 131): query_ctec. current: -1226203992, preferred: -1226203988
D/AT ( 131): AT> AT+CTEC?
通过分析,是由于AP发送第一条AT指令(即: AT> ATE0Q0V1)后,一直没收到CP反馈回来的信息,导致AP强行中断AT指令通道
解决办法:在cp端对该指令进行处理,如:接收到ATE0Q0V1指令后,主动给AP返回一个ERROR,然AP继续完成后面AT指令的初始化。