请教个战舰开发板SIM开发的代码事宜

2019-08-16 19:38发布

在代码中:
u8 sim800c_gprs_test(void)
{
        const u8 *port="8086";        //端口固定为8086,当你的电脑8086端口被其他程序占用的时候,请修改为其他空闲端口
        u8 mode=0;                                //0,TCP连接;1,UDP连接
        u8 key;
        u8 timex=0;
        u8 ipbuf[16];                 //IP缓存
        u8 iplen=0;                        //IP长度
        sim800c_gprs_ui();        //加载主界面
        Show_Str(30+72,90,200,16,(u8*)modetbl[mode],16,0);        //显示连接方式        
        Show_Str(30+40,130,200,16,(u8*)port,16,0);                        //显示端口         
         sim800c_send_cmd("AT+CIPCLOSE=1","CLOSE OK",100);        //关闭连接
        sim800c_send_cmd("AT+CIPSHUT","SHUT OK",100);                //关闭移动场景
        if(sim800c_send_cmd("AT+CGCLASS="B"","OK",1000))return 1;                                //设置GPRS移动台类别为B,支持包交换和数据交换
        if(sim800c_send_cmd("AT+CGDCONT=1,"IP","CMNET"","OK",1000))return 2;//设置PDP上下文,互联网接协议,接入点等信息
        if(sim800c_send_cmd("AT+CGATT=1","OK",500))return 3;                                        //附着GPRS业务
        if(sim800c_send_cmd("AT+CIPCSGP=1,"CMNET"","OK",500))return 4;                 //设置为GPRS连接模式
        if(sim800c_send_cmd("AT+CIPHEAD=1","OK",500))return 5;                                         //设置接收数据显示IP头(方便判断数据来源)
        ipbuf[0]=0;


而sim800c_send_cmd会最终调用:
//串口3,printf 函数
//确保一次发送数据不超过USART3_MAX_SEND_LEN字节
void u3_printf(char* fmt,...)  
{  
        u16 i,j;
        va_list ap;
        va_start(ap,fmt);   //指向格式的下一个位置即CMD位置
        vsprintf((char*)USART3_TX_BUF,fmt,ap);   //将CDM按格式写入字符串
        va_end(ap);
        i=strlen((const char*)USART3_TX_BUF);                     //此次发送数据的长度
        for(j=0;j<i;j++)                                          //循环发送数据
        {
          while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);//等待上次传输完成
                USART_SendData(USART3,(uint8_t)USART3_TX_BUF[j]);           //发送数据到串口3
        }
        
}

每次cmd发送指令都是填写到USART3_TX_BUF数组中,如果后面的CMD长度比前面一次的CMD短,比如
前面AT+CGDCONT=1,"IP","CMNET"
接着发"AT+CGATT=1
那么第二次经过u3_printf函数形成的USART3_TX_BUF的数据不是会保留前面指令的后半截?
请教下。谢谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。