EC20 HTTP 圖片傳輸亂碼

 

圖片數據存入RAM時,EC20將每次寫入一段(512字節)數據就會添加間隔符0D0A

 

HTTP上傳

 App_Printf("上傳照片\r\n");
	
 HTTP_Land();//HTTP初始化 //123456.txt
//"123456.txt";
 FATFS_ReadFile((char *)Pic_SD.PICFile[Pic_SD.number-1].name);//寫入EC20數據		
//									 FATFS_ReadFile((char *)"2001.jpg");		

 memset(APP_HTTP_pic_url_buf,0,sizeof(APP_HTTP_pic_url_buf));
 sprintf((char*)APP_HTTP_pic_url_buf,"http://118.178.120.152:34210/api/file/%s",Pic_SD.PICFile[Pic_SD.number-1].name);
//									 sprintf((char*)APP_HTTP_pic_url_buf,"http://118.178.120.152:34210/api/file/2001.jpg");
 
 memset(APP_HTTP_pic_url_length_buf,0,sizeof(APP_HTTP_pic_url_length_buf));
 sprintf((char*)APP_HTTP_pic_url_length_buf,"AT+QHTTPURL=%d,80",strlen(APP_HTTP_pic_url_buf));

 Comsend_AT(APP_HTTP_pic_url_length_buf,"CONNECT",200);

 Comsend_AT(APP_HTTP_pic_url_buf,"OK",200);
 
 memset(APP_HTTP_pic_POSTBUF,0,sizeof(APP_HTTP_pic_POSTBUF));
sprintf((char*)APP_HTTP_pic_POSTBUF,"AT+QHTTPPOSTFILE=\"RAM:%s\",80",Pic_SD.PICFile[Pic_SD.number-1].name);
//									 sprintf((char*)APP_HTTP_pic_POSTBUF,"AT+QHTTPPOSTFILE=\"RAM:2001.jpg\",80");
 Comsend_AT(APP_HTTP_pic_POSTBUF,"OK",1200);
	
//									 Comsend_AT("AT+QHTTPCFG?","OK",200);
 Comsend_AT("AT+QHTTPREAD=80","QHTTPREAD",200);
 vTaskDelay(500);
	if(http_recive_picnumibei>0)
	 {		
		// printf("\r\n打印的%d\r\n", http_recive_picnumibei);																
		 iot_event_report(2,MAXSensor_Id_Buf,Modetype,SocketGPS->latitude,SocketGPS->longitude,SocketGPS->speed,mqttsendtimebuf,0,0,http_reciveLINKFile);
		 http_recive_picnumibei=0;     

		 memset(APP_HTTP_pic_QFDELbuf,0,sizeof(APP_HTTP_pic_QFDELbuf));
		 sprintf((char*)APP_HTTP_pic_QFDELbuf,"AT+QFDEL=\"RAM:%s\"",Pic_SD.PICFile[Pic_SD.number-1].name);
		 Comsend_AT(APP_HTTP_pic_QFDELbuf,"OK",500);	
		 
		  char SDbuf[50];
			memset(SDbuf,0,sizeof(SDbuf));
sprintf(SDbuf,"0:/PHOTO/%s",Pic_SD.PICFile[Pic_SD.number-1].name);
		  f_unlink(SDbuf);//刪除SD卡相應文件文件
		 Pic_SD.number--;											 
 }

數據寫入ARM

uint8_t FATFS_ReadFile(char *name)
{
	uint32_t pic_length = 0;
	char SDbuf[50];
	char rambuf[50];
	FRESULT res;
	FIL fsrc;
//	uint16_t a;
	UINT br;
	uint8_t buffer[512];
	
	Comsend_AT("AT+QFLDS=\"RAM\"","OK",200);//獲取存儲空間信息
	Comsend_AT("AT+QFLST=\"RAM:*\"","OK",200);//列出全部緩存
	Comsend_AT("AT+QFDEL=\"RAM:*\"","OK",200);//清楚全部緩存
	
	memset(SDbuf,0,sizeof(SDbuf));
	sprintf(SDbuf,"0:/PHOTO/%s",name);
	res = f_open(&fsrc, SDbuf, FA_READ);
	if(res == FR_OK)
	{
		br=1;
	//	a=0;
		pic_length = fsrc.fsize;//獲取文件大小
		App_Printf("文件長度:%d\r\n",pic_length);
		memset(rambuf,0,sizeof(rambuf));
		sprintf(rambuf,"AT+QFUPL=\"RAM:%s\",%d",name,pic_length);
		App_Printf("%s\r\n",rambuf);
		Comsend_AT(rambuf,"OK",200);
		//AT+QFUPL="RAM:1.jpg",7532
		printf("文件寫入內容:");
		for (;;)
		{
      memset(buffer,0,sizeof(buffer));
			res = f_read(&fsrc, buffer, sizeof(buffer), &br);//br 用來保存讀取到多少數據
			Comsend_date(buffer,br,"OK",50);
			App_Printf("br:%d\r\n",br);
			if (res || br == 0)
			{
					break; // error or eof
			}
		}
//		f_unlink(SDbuf);//刪除文件
	}
	f_close(&fsrc); //不論是打開,還是新建文件,一定記得關閉
	return 0;
}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章