NB_IOT之sim7020c

AT+CSOC=1,1,1                          //+CSOC:0 OK 创建 TCP socket, =0
AT+CSOCON=0,58713,"180.97.81.180" //OK 连接远端 TCP server
AT+CSOSEND=0,0,"Hello World"         // OK发送 TCP 数据
AT+CSOCL=0                             //OK 关闭 TCP socket

接收到的数据以十六进制字符串格式显示出来

+CSONMI: 0,24,68656C6C6F20776F726C6421       //hello world!

如何把16进制字符串转换为ascii 字符串,以下代码可以参考

u16 process_NB_uart(u8 *fdata)
{
	u16 ret = 0;//这个ret是返回给串口的,串口根据处理结果返回不同的数据
	u16 i =0;
	u16	len=0;
	u16 t=0,y=0;
	u8 data_buff=0;
	u8 xdata buf[pbuf_len]=0;
	if(strstr(fdata,"+C")!=NULL)
	{
		while(fdata[i]!='+')
		{	
			i++;										
		}		
		fdata+=i+1;	
		// PrintString1(fdata,Strlen(fdata));
		// PrintString1("\r\n",Strlen("\r\n"));		
		if(CompareData(fdata, "CSONMI", 6)==0)//+CSONMI: 0,12,313233343536
		{				
			fdata+=10;//313233343536
			i=0;
			while(fdata[i]!=',')//获取hex长度
			{	
				len=len*10;
				len+=fdata[i++]-'0';										
			}
			fdata+=i+1;	
			//PrintString1(fdata,len);
			//PrintString1(pbuf,pbuf[pbuf_len-1]);		
			len=len/2;
			for(t=0;t='0')&&(fdata[y]<='9'))data_buff=(u8)(fdata[y]-'0')<<4;
				else if((fdata[y]>='A')&&(fdata[y]<='F'))data_buff=(u8)(fdata[y]-'A'+10)<<4;
				if((fdata[y+1]>='0')&&(fdata[y+1]<='9'))data_buff+=fdata[y+1]-'0';
				else if((fdata[y+1]>='A')&&(fdata[y+1]<='F'))data_buff+= fdata[y+1]-'A'+10; 								
				buf[t]=data_buff;	
			}
			buf[t+1]='\0';
			buf[pbuf_len-1]=t;
			ret='a';
			
		}
		else if(CompareData(fdata, "CSQ: ", 5)==0)
		{
			fdata+=5;
			i=0;
			while(fdata[i]!=',')
			{	
				i++;										
			}						
			for(t=0;t

 

你可能感兴趣的:(2G)