gprs模块通讯数据长度不固定的问题

2019-12-20 21:44发布

gprs模块和服务器通讯,采用非透明方式和不指定长度发送数据,有几个特殊数字(0x08,0x1A,0x1B)不能发送。
如果指定数据长度就是AT+CIPSEND=n,n需要修改很多次。
请问有做过这个方面的大侠,怎么处理?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
dzymushi
2019-12-21 16:42
HAL_StatusTypeDef gsm_SendGprsData(uint8_t ch,uint8_t *pData,uint16_t length)
{
//uint8_t i;       
uint8_t len[5]={"00000"};
len[0] = HEX[length/10000];
len[1] =HEX[(length%10000)/1000];
len[2] =HEX[(length%1000)/100];
len[3] =HEX[(length%100)/10];
len[4] =HEX[length%10];
printf(" -----Link:%d Send:%d Byte-------- ",ch,length);
uart3_PrintArrayAscii(pData,length);
printf(" --------------------------------- ");
switch(ch)
{
        case 0:gsm_SendString((uint8_t*)"AT+QISEND=0,");//5 ");  //ºǫ́   
                     break;
        case 1:gsm_SendString((uint8_t*)"AT+QISEND=1,");//5 "); //Ö÷Á¬½Ó
                     break;
        case 2:gsm_SendString((uint8_t*)"AT+QISEND=2,");//5 ");  //¸±1   
                     break;
        case 3:gsm_SendString((uint8_t*)"AT+QISEND=3,");//5 ");   //¸±2   
                     break;
        case 4:gsm_SendString((uint8_t*)"AT+QISEND=4,");//5 ");   //¸±3  
                     break;
        case 5:gsm_SendString((uint8_t*)"AT+QISEND=5,");//5 ");   //¸±4   
                     break;
        default: break;
}

一周热门 更多>