请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2650 工具/软件:TI-RTOS
您好!
我有一个应用、在该应用中、我使用 UART 将 SIM5320 GSM 调制解调器连接到处理器。 当 GSM 模块启动时、我从该模块获得一些正常的初始化消息。 之后、我发送 AT 命令、然后侦听端口以从模块获取答案。 对于响应是短字符串的命令、一切都正常。 例如、我发送 AT+CREG? 我得到:
+CREG:0、0 正常
这正是我应该得到的结果。 但问题是,应对时间应更长。 例如、当我发送 AT+CGPSINFOCFG 时、我应该得到:
+CGPSINFO:(0-255)、(0-31) 正常
但我只得到第一行的一部分:
+CGPSINFO:(0
我非常确信该模块工作正常、因为当我使用串行接口将其直接连接到计算机时、一切都正常。
我尝试从我的代码中删除 System_flush()(从串行中获取每个字符后),以查看它是否获得整个响应,但我仍然没有得到整个字符串。
我检查了具有较长响应的不同命令、我注意到我将获得31个字符、其余字符将丢失。
我将代码放在这里:
char msg_write[]="AT+CGPSINFOCFG=?\r\n;//保留消息
UART_WRITE (UART、msg_write、sizeof (msg_write)-1);
uint32_t t0=seconds_get ();
// 而(idx<140){
while (flag2){
UART_READ (UART、INPUT、1);
MSG_READ[idx++]=输入;
System_printf ("%c"、输入);
system_flush();
if ( strstr (msg_read,"OK")!= NULL ){
flag2=false;
System_flush();
}
msg_read[0]='\0';//清除消息
idx=0;
}
MSG_READ[idx]='\0';
//System_flush();
System_printf ("%s"、msg_read);
system_flush();