This commit is contained in:
2026-04-23 10:50:18 +08:00
commit a436fda935
844 changed files with 272643 additions and 0 deletions

View File

@ -0,0 +1,568 @@
/*
*****************************************************************
ͷ<>ļ<EFBFBD>
*****************************************************************
*/
#include "bsp.h"
/*
************************************************************************************
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
************************************************************************************
*/
data_common data_common1;
FIL fp; /* Pointer to the blank file object */
FATFS fs1;
UINT btw; /* Number of bytes to write */
UINT bws;
u32 send_pos=0;
DIR DirInf;
FILINFO FileInf;
char name[20]="\0";
char Tf_Read_Buff[max_transmission+15],Send_Buf[max_transmission+15] = {'\0'},Temp_Buf[max_transmission+15] = {'\0'};
/*
*********************************************************************************************************
* <09><> <20><> <20><>: FATFS_WriteFile()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: TF<54><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
* <09><> <20><> <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> fname <20><><EFBFBD><EFBFBD> dat <20><><EFBFBD><EFBFBD> len
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
void FATFS_WriteFile(char *fname,char *dat,u16 len) //д<><D0B4><EFBFBD>ݵ<EFBFBD>SD<53><44>
{
UINT br;
char name[20];
sprintf(name,"%s%s",fname,".txt");
f_mount(&fs1, "0:", 1);
f_open (&fp,fname,FA_READ|FA_WRITE|FA_OPEN_ALWAYS);
f_lseek(&fp,f_size(&fp)); //<2F>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ĩβ--׷<><D7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
f_write(&fp,dat,len,&br);
f_close(&fp);
f_mount(NULL, DiskPath, 0);
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: Data_Write_TF()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: TF<54><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4> ʱ<><EFBFBD><E4A1A2>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>γ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ρ<EFBFBD><CEA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <09><> <20><> <20><><EFBFBD><EFBFBD>
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
FRESULT Data_Write_TF(void)
{
FRESULT res;
u8 i=0;
char hhmmss[8]={'\0'},yymmdd[8]={'\0'};
RTC_DateTypeDef dates;
//RTC_GetDate(RTC_Format_BIN,&dates);
//GetRTC(hhmmss,yymmdd);
//sprintf(name,"%s_%s.txt",yymmdd,Init_Data_Equipment.Measure_Interval);
f_mount(&fs1, "0:", 1);
res=f_open(&fp,name,FA_WRITE);
if((res==FR_NO_FILE)||(Init_Data_Equipment.par_change==1))//<2F>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ͷ
{
f_close(&fp);
f_open(&fp,name,FA_READ | FA_WRITE | FA_OPEN_ALWAYS );
f_lseek (&fp,f_size(&fp));
f_write(&fp,"Equipment_ID:",strlen("Equipment_ID:"),&bws);
f_write(&fp,Init_Data_Equipment.Equipment_ID,strlen(Init_Data_Equipment.Equipment_ID),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"TCP_Ip:",strlen("TCP_Ip:"),&bws);
f_write(&fp,Init_Data_Equipment.Bc25_Ip,strlen(Init_Data_Equipment.Bc25_Ip),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"TCP_Port:",strlen("TCP_Port:"),&bws);
f_write(&fp,Init_Data_Equipment.Bc25_Port,strlen(Init_Data_Equipment.Bc25_Port),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Wifi_SSID:",strlen("Wifi_SSID:"),&bws);
f_write(&fp,Init_Data_Equipment.ESP8266_AP_SSIDs,strlen(Init_Data_Equipment.ESP8266_AP_SSIDs),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Wifi_Pwd:",strlen("Wifi_Pwd:"),&bws);
f_write(&fp,Init_Data_Equipment.ESP8266_AP_PWDs,strlen(Init_Data_Equipment.ESP8266_AP_PWDs),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Wifi_Port:",strlen("Wifi_Port:"),&bws);
f_write(&fp,Init_Data_Equipment.ESP8266_AP_Ports,strlen(Init_Data_Equipment.ESP8266_AP_Ports),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Measure_Interval:",strlen("Measure_Interval:"),&bws);
f_write(&fp,Init_Data_Equipment.Measure_Interval,strlen(Init_Data_Equipment.Measure_Interval),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Pub_Interval:",strlen("Pub_Interval:"),&bws);
f_write(&fp,Init_Data_Equipment.Pub_Time,strlen(Init_Data_Equipment.Pub_Time),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Appointment_Time:",strlen("Appointment_Time:"),&bws);
f_write(&fp,Init_Data_Equipment.appointment_time,strlen(Init_Data_Equipment.appointment_time),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Measure_Mode:",strlen("Measure_Mode:"),&bws);
f_write(&fp,Init_Data_Equipment.measure_mode,strlen(Init_Data_Equipment.measure_mode),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Equipment_ID,DateTime,Power-V,Latitude,N/S,Longitude,E/W,Ch1-SoilT_C,Ch1-SoilVWC_%,Ch1-Soil_DS,Ch2-SoilT_C,Ch2-SoilVWC_%,Ch2-Soil_DS,Ch3-SoilT_C,Ch3-SoilVWC_%,Ch3-Soil_DS,Ch4-SoilT_C,Ch4-SoilVWC_%,Ch4-Soil_DS,Ch5-SoilT_C,Ch5-SoilVWC_%,Ch5-Soil_DS,Ch6-SoilT_C,Ch6-SoilVWC_%,Ch6-Soil_DS,qxz-Temperature_C,qxz-Humidity_%RH,qxz-AirPressure_hPa,qxz-WindSpeed_m/s,qxz-WindDirection_<6E><5F>,qxz-Rainfall_mm,qxz-Illuminance_lux\r\n",
strlen("Equipment_ID,DateTime,Power-V,Latitude,N/S,Longitude,E/W,Ch1-SoilT_C,Ch1-SoilVWC_%,Ch1-Soil_DS,Ch2-SoilT_C,Ch2-SoilVWC_%,Ch2-Soil_DS,Ch3-SoilT_C,Ch3-SoilVWC_%,Ch3-Soil_DS,Ch4-SoilT_C,Ch4-SoilVWC_%,Ch4-Soil_DS,Ch5-SoilT_C,Ch5-SoilVWC_%,Ch5-Soil_DS,Ch6-SoilT_C,Ch6-SoilVWC_%,Ch6-Soil_DS,qxz-Temperature_C,qxz-Humidity_%RH,qxz-AirPressure_hPa,qxz-WindSpeed_m/s,qxz-WindDirection_<6E><5F>,qxz-Rainfall_mm,qxz-Illuminance_lux\r\n"),&bws);
f_close(&fp);
//qxz<78><7A><EFBFBD><EFBFBD>վ<EFBFBD><D5BE><EFBFBD>ݣ<EFBFBD><DDA3>¶ȡ<C2B6>ʪ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>١<EFBFBD><D9A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD>
//ʪ<><CAAA> <20><EFBFBD><E7B5BC> <20><EFBFBD>
}
res=f_open(&fp,name,FA_READ | FA_WRITE | FA_OPEN_ALWAYS );//0:/
if(res!=FR_OK) //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
{
i=0;
while((res!=FR_OK)&(i<100))
{
i++;
f_close(&fp);
f_mount(NULL, DiskPath, 0);
f_mount(&fs1, "0:", 1);
res=f_open(&fp,name,FA_READ | FA_WRITE | FA_OPEN_ALWAYS );//0:/
}
if(i>98)return FR_NO_PATH ;
}
f_lseek (&fp,f_size(&fp));
f_write(&fp,data_common1.Pack_data,strlen(data_common1.Pack_data),&bws);
f_write(&fp,"\r\n",2,&bws);
f_close(&fp);
f_mount(&fs1, "0:", 1);
res=f_open(&fp,"BC25.txt",FA_WRITE);
/*************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BC25<32><35>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>*******************************/
if((Init_Data_Equipment.par_change==1) || (res==FR_NO_FILE))//<2F>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ͷ
//if((Init_Data_Equipment.par_change==1)||(Init_Data_Equipment.Bc25_Send_Header!=dates.RTC_Date))//<2F>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ͷ
{
//res=f_open(&fp,"BC25.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS );
Init_Data_Equipment.par_change=0;
EEPROM_WriteBytes(185,0,1);
EEPROM_WriteBytes(186,&dates.RTC_Date,1);
f_close(&fp);
f_open(&fp,"BC25.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS );
f_lseek (&fp,f_size(&fp));
f_write(&fp,"Equipment_ID:",strlen("Equipment_ID:"),&bws);
f_write(&fp,Init_Data_Equipment.Equipment_ID,strlen(Init_Data_Equipment.Equipment_ID),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"TCP_Ip:",strlen("TCP_Ip:"),&bws);
f_write(&fp,Init_Data_Equipment.Bc25_Ip,strlen(Init_Data_Equipment.Bc25_Ip),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"TCP_Port:",strlen("TCP_Port:"),&bws);
f_write(&fp,Init_Data_Equipment.Bc25_Port,strlen(Init_Data_Equipment.Bc25_Port),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Wifi_SSID:",strlen("Wifi_SSID:"),&bws);
f_write(&fp,Init_Data_Equipment.ESP8266_AP_SSIDs,strlen(Init_Data_Equipment.ESP8266_AP_SSIDs),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Wifi_Pwd:",strlen("Wifi_Pwd:"),&bws);
f_write(&fp,Init_Data_Equipment.ESP8266_AP_PWDs,strlen(Init_Data_Equipment.ESP8266_AP_PWDs),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Wifi_Port:",strlen("Wifi_Port:"),&bws);
f_write(&fp,Init_Data_Equipment.ESP8266_AP_Ports,strlen(Init_Data_Equipment.ESP8266_AP_Ports),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Measure_Interval:",strlen("Measure_Interval:"),&bws);
f_write(&fp,Init_Data_Equipment.Measure_Interval,strlen(Init_Data_Equipment.Measure_Interval),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Pub_Interval:",strlen("Pub_Interval:"),&bws);
f_write(&fp,Init_Data_Equipment.Pub_Time,strlen(Init_Data_Equipment.Pub_Time),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Appointment_Time:",strlen("Appointment_Time:"),&bws);
f_write(&fp,Init_Data_Equipment.appointment_time,strlen(Init_Data_Equipment.appointment_time),&bws);
f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Measure_Mode:",strlen("Measure_Mode:"),&bws);
f_write(&fp,Init_Data_Equipment.measure_mode,strlen(Init_Data_Equipment.measure_mode),&bws);
f_write(&fp,"\r\n",2,&bws);
// f_write(&fp,"IOT_Username:",strlen("IOT_Username:"),&bws);
// f_write(&fp,Init_Data_Equipment.measure_mode,strlen(Init_Data_Equipment.IOT_Username),&bws);
// f_write(&fp,"\r\n",2,&bws);
// f_write(&fp,"IOT_Password:",strlen("IOT_Password:"),&bws);
// f_write(&fp,Init_Data_Equipment.measure_mode,strlen(Init_Data_Equipment.IOT_Password),&bws);
// f_write(&fp,"\r\n",2,&bws);
// f_write(&fp,"IOT_Theme_name:",strlen("IOT_Theme_name:"),&bws);
// f_write(&fp,Init_Data_Equipment.measure_mode,strlen(Init_Data_Equipment.IOT_Theme_name),&bws);
// f_write(&fp,"\r\n",2,&bws);
f_write(&fp,"Equipment_ID,DateTime,Power-V,Latitude,N/S,Longitude,E/W,Ch1-SoilT_C,Ch1-SoilVWC_%,Ch1-Soil_DS,Ch2-SoilT_C,Ch2-SoilVWC_%,Ch2-Soil_DS,Ch3-SoilT_C,Ch3-SoilVWC_%,Ch3-Soil_DS,Ch4-SoilT_C,Ch4-SoilVWC_%,Ch4-Soil_DS,Ch5-SoilT_C,Ch5-SoilVWC_%,Ch5-Soil_DS,Ch6-SoilT_C,Ch6-SoilVWC_%,Ch6-Soil_DS,qxz-Temperature_C,qxz-Humidity_%RH,qxz-AirPressure_hPa,qxz-WindSpeed_m/s,qxz-WindDirection_<6E><5F>,qxz-Rainfall_mm,qxz-Illuminance_lux\r\n",
strlen("Equipment_ID,DateTime,Power-V,Latitude,N/S,Longitude,E/W,Ch1-SoilT_C,Ch1-SoilVWC_%,Ch1-Soil_DS,Ch2-SoilT_C,Ch2-SoilVWC_%,Ch2-Soil_DS,Ch3-SoilT_C,Ch3-SoilVWC_%,Ch3-Soil_DS,Ch4-SoilT_C,Ch4-SoilVWC_%,Ch4-Soil_DS,Ch5-SoilT_C,Ch5-SoilVWC_%,Ch5-Soil_DS,Ch6-SoilT_C,Ch6-SoilVWC_%,Ch6-Soil_DS,qxz-Temperature_C,qxz-Humidity_%RH,qxz-AirPressure_hPa,qxz-WindSpeed_m/s,qxz-WindDirection_<6E><5F>,qxz-Rainfall_mm,qxz-Illuminance_lux\r\n"),&bws);
f_close(&fp);
}
res=f_open(&fp,"BC25.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS );//0:/
if(res!=FR_OK) //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
{
i=0;
while((res!=FR_OK)&(i<100))
{
i++;
f_close(&fp);
f_mount(NULL, DiskPath, 0);;
f_mount(&fs1, "0:", 1);
res=f_open(&fp,"BC25.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS );//0:/
}
if(i>98)
{
//u5_printf("open BC25.txt fail\r\n");
return FR_NO_PATH ;
}
}
// if(res==FR_OK) //<2F>򿪳ɹ<F2BFAAB3>
// {
f_lseek (&fp,f_size(&fp));
f_write(&fp,data_common1.Pack_data,strlen(data_common1.Pack_data),&bws);
f_write(&fp,"\r\n",2,&bws);
f_close(&fp);
// }
f_mount(NULL, DiskPath, 0);
return FR_OK;
}
void Write_Test(void)
{
f_mount(&fs1, "0:", 1);
f_open(&fp,"test.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS );
f_lseek (&fp,f_size(&fp));
f_write(&fp,"Equipment_ID,DateTime,Power-V,Latitude,N/S,Longitude,E/W,Ch1-SoilT_C,Ch1-SoilVWC_%,Ch1-Soil_DS,Ch2-SoilT_C,Ch2-SoilVWC_%,Ch2-Soil_DS,Ch3-SoilT_C,Ch3-SoilVWC_%,Ch3-Soil_DS,Ch4-SoilT_C,Ch4-SoilVWC_%,Ch4-Soil_DS,Ch5-SoilT_C,Ch5-SoilVWC_%,Ch5-Soil_DS,Ch6-SoilT_C,Ch6-SoilVWC_%,Ch6-Soil_DS,qxz-Temperature_C,qxz-Humidity_%RH,qxz-AirPressure_hPa,qxz-WindSpeed_m/s,qxz-WindDirection_<6E><5F>,qxz-Rainfall_mm,qxz-Illuminance_lux,IOT_Cpin,IOT_Csq,IOT_Net,Tf_Tol,Tf_Free\r\n",
strlen("Equipment_ID,DateTime,Power-V,Latitude,N/S,Longitude,E/W,Ch1-SoilT_C,Ch1-SoilVWC_%,Ch1-Soil_DS,Ch2-SoilT_C,Ch2-SoilVWC_%,Ch2-Soil_DS,Ch3-SoilT_C,Ch3-SoilVWC_%,Ch3-Soil_DS,Ch4-SoilT_C,Ch4-SoilVWC_%,Ch4-Soil_DS,Ch5-SoilT_C,Ch5-SoilVWC_%,Ch5-Soil_DS,Ch6-SoilT_C,Ch6-SoilVWC_%,Ch6-Soil_DS,qxz-Temperature_C,qxz-Humidity_%RH,qxz-AirPressure_hPa,qxz-WindSpeed_m/s,qxz-WindDirection_<6E><5F>,qxz-Rainfall_mm,qxz-Illuminance_lux,IOT_Cpin,IOT_Csq,IOT_Net,Tf_Tol,Tf_Free\r\n"),&bws);
f_write(&fp,data_common1.Pack_data,strlen(data_common1.Pack_data),&bws);
f_write(&fp,"\r\n",2,&bws);
f_close(&fp);
f_mount(NULL, "0:", 1);
// free(fs);
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: Fil_delete()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
* <09><> <20><> <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> name
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
FRESULT Fil_delete(char *names)
{
FRESULT result;
char namebuff[10]="\0";
sprintf(namebuff,"%s%s",names,".txt");
f_mount(&fs1, "0:", 1);
result = f_unlink(namebuff);
f_close(&fp);
if(result == FR_OK)
{
}//u5_printf("delete sucess");
f_mount(NULL, DiskPath, 0);;
return result;
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: txt_size_read()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC>Ĵ<EFBFBD>Сbyte
* <09><> <20><> <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> name
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
u32 txt_size_read(char *fname)
{
// u8 i=0;
FRESULT res;
u32 txt_size;
char name[20];
sprintf(name,"%s%s",fname,".txt");
res=f_mount(&fs1, "0:", 1);
res=f_open(&fp,"0:/BC25.txt",FA_READ);
if(res!=FR_OK) //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
{
//u5_printf("open bc25txt size fail\r\n");
return FR_NO_FILE;
}
txt_size=f_size(&fp);
res=f_close(&fp);
f_mount(NULL, DiskPath, 0);;
return txt_size;
}
uint16_t Count(char *P)
{
uint16_t count = 0;
while((P[count++] != 0x0a)&&(P[count - 1] != 0x0d) && count < max_transmission+15);
return count;
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: FATFS_Read_TF()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: TF<54><46><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ
* <09><> <20><> <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> name <20><>ʼλ<CABC><CEBB> start <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> len
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
void FATFS_Read_TF(char *fname,u32 start_pos,u32 len)
{
FRESULT res;
u32 tf_sendpos=0;
u16 size_buf,Send_Len = 0,Save_Addr = 0;
u8 times;
u32 i,lens_quotient,len_remainder;//<2F>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
char rname[10];
if(BC25_Status.socket==0)return;
memset(Tf_Read_Buff,0,sizeof(Tf_Read_Buff));
memset(Send_Buf,0,sizeof(Send_Buf));
memset(Temp_Buf,0,sizeof(Temp_Buf));
EEPROM_ReadDWords(180,&tf_sendpos,1);//<2F><>ȡTF<54><46><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>λ<EFBFBD><CEBB>
if(tf_sendpos>len)tf_sendpos=0;//<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ɾ<EFBFBD><C9BE>
sprintf(rname,"%s%s",fname,".txt");
lens_quotient=(len-tf_sendpos)/max_transmission;
len_remainder=(len-tf_sendpos)%max_transmission;
memset(Tf_Read_Buff,0,sizeof(Tf_Read_Buff));
if(osEventFlagsGet(EventFlagID_PROCESS)&EVENT_TFstore_BIT_6)
{
osDelay(3000);
}
res=f_mount(&fs1, "0:", 1);
res=f_open(&fp,rname,FA_READ);
times=0;
while((res!=FR_OK)&(times<100))
{
res=f_close(&fp);
res=f_mount(&fs1, "0:", 1);
res=f_open(&fp,rname,FA_READ);
}
f_lseek(&fp, start_pos+tf_sendpos);
for(i=0;i<lens_quotient;lens_quotient=((len-tf_sendpos)/max_transmission))//<2F><><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD>max_transmission<6F>ֽ<EFBFBD>
{
if(osEventFlagsGet(EventFlagID_PROCESS)&EVENT_TFstore_BIT_6)//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ݴ洢
{
osEventFlagsClear(EventFlagID_PROCESS,EVENT_TFstore_BIT_6);
//u5_printf("BC25 WAIT\r\n");
res=f_close(&fp);
osEventFlagsSet(EventFlagID_PROCESS,EVENT_TFread2_BIT_7);
osEventFlagsWait(EventFlagID_PROCESS,EVENT_TFstore2_BIT_8,osFlagsWaitAll,5000 );
res=f_close(&fp);
/******<2A><>ȡ<EFBFBD><C8A1><EFBFBD>º<EFBFBD><C2BA><EFBFBD><EFBFBD>ļ<EFBFBD>******/
len=txt_size_read("BC25");//
//u5_printf("second-len:%ld\r\n",len);
while((len<10)&(times<50))
{
len=txt_size_read("BC25");
//u5_printf("second-len:%ld\r\n",len);
times++;
}
lens_quotient=(len-tf_sendpos)/max_transmission;
lens_quotient+=i;
len_remainder=(len-tf_sendpos)%max_transmission;
//u5_printf("i=%d\r\n",i);
//u5_printf("lens_quotient=%d\r\n",lens_quotient);
//u5_printf("len_remainder=%d\r\n",len_remainder);
f_mount(&fs1, "0:", 1);
res=f_open(&fp,rname,FA_READ);
times=0;
while((res!=FR_OK)&(times<100))
{
res=f_open(&fp,rname,FA_READ);
times++;
}
if(res!=FR_OK) //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
{
EEPROM_WriteDWords(180,&tf_sendpos,1);
return;
}
f_lseek(&fp,tf_sendpos);
//u5_printf("BC25 resum\r\n");
}
res=f_read(&fp,Tf_Read_Buff,max_transmission,&bws);
Send_Len = Count(Tf_Read_Buff);
Save_Addr = Send_Len + 1;
memset(Send_Buf,0,sizeof(Send_Buf));
memset(Temp_Buf,0,sizeof(Temp_Buf));
memcpy(Temp_Buf,Tf_Read_Buff,Send_Len + 1);
if(strstr((const char*)Temp_Buf,(const char*)"Ch1-SoilT_C"))
{
IOT_Theme_TYPE = IOT_Theme_tablehead;
}
else if((Temp_Buf[0] > 0x2F) && (Temp_Buf[0] < 0x3A)) // Temp_Buf[0] <20>ڡ<EFBFBD>0<EFBFBD><30>---<2D><>9<EFBFBD><39>֮<EFBFBD><D6AE>
{
IOT_Theme_TYPE = IOT_Theme_data;
}
else
{
IOT_Theme_TYPE = IOT_Theme_config;
}
sprintf(Send_Buf,"Pub,%d,%s*",Send_Len+1,Temp_Buf);
Send_Len = Count(Send_Buf);
times=0;
if(IOT_Theme_TYPE != IOT_Theme_config)
{
if(BC25_Senddata_mode(Send_Len + 2,Send_Buf))
{
//u5_printf("bc25 send fail:%ld\r\n",tf_sendpos);
return;//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
}
}
tf_sendpos += Save_Addr;//<2F><><EFBFBD><EFBFBD>һ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>λ<EFBFBD><CEBB>
f_lseek(&fp, start_pos+tf_sendpos);
EEPROM_WriteDWords(180,&tf_sendpos,1);
}
while(tf_sendpos < len)
{
res=f_read(&fp,Tf_Read_Buff,max_transmission,&bws);
Send_Len = Count(Tf_Read_Buff);
Save_Addr = Send_Len + 1;
memset(Send_Buf,0,sizeof(Send_Buf));
memset(Temp_Buf,0,sizeof(Temp_Buf));
memcpy(Temp_Buf,Tf_Read_Buff,Send_Len + 1);
sprintf(Send_Buf,"Pub,%d,%s*",Send_Len+1,Temp_Buf);
Send_Len = Count(Send_Buf);
if(IOT_Theme_TYPE != IOT_Theme_config)
{
if(BC25_Senddata_mode(Send_Len + 2,Send_Buf))
{
//u5_printf("bc25 send fail:%ld\r\n",tf_sendpos);
return;//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
}
}
tf_sendpos += Save_Addr;//<2F><><EFBFBD><EFBFBD>һ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>λ<EFBFBD><CEBB>
f_lseek(&fp, start_pos+tf_sendpos);
EEPROM_WriteDWords(180,&tf_sendpos,1);
__nop();
}
tf_sendpos=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
EEPROM_WriteDWords(180,&tf_sendpos,1);
res=f_close(&fp);
f_mount(&fs1, "0:", 1);
Fil_delete("BC25");//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: Common_Data_Pack()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
* <09><> <20><> <20><><EFBFBD><EFBFBD>
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
void Common_Data_Pack(void)
{
sprintf(data_common1.Time_DATA,"%c%c/%c%c/20%c%c %c%c:%c%c:%c%c",
rtc_data[2],rtc_data[3],rtc_data[4],rtc_data[5],rtc_data[0],rtc_data[1],
rtc_time[0],rtc_time[1],rtc_time[2],rtc_time[3],rtc_time[4],rtc_time[5]);//<2F><><EFBFBD>ں<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>
memset(data_common1.Pack_data,0,sizeof(data_common1.Pack_data));
sprintf(data_common1.Pack_data,"%s,%s,%s%s%s,%s,%s,%s,%s,%s,%s",
Init_Data_Equipment.Equipment_ID,
data_common1.Time_DATA,
data_common1.ADC_DATA,
data_common1.GPS_DATA,
Sdi_Fram_Record_Structs.Ch1_RX_BUF,
Sdi_Fram_Record_Structs.Ch2_RX_BUF,
Sdi_Fram_Record_Structs.Ch3_RX_BUF,
Sdi_Fram_Record_Structs.Ch4_RX_BUF,
Sdi_Fram_Record_Structs.Ch5_RX_BUF,
Sdi_Fram_Record_Structs.Ch6_RX_BUF,
// Sdi_Fram_Record_Structs.Ch7_RX_BUF,
// Sdi_Fram_Record_Structs.Ch8_RX_BUF,
// Sdi_Fram_Record_Structs.Ch9_RX_BUF
Sdi_Fram_Record_Structs.QXZ_RX_BUF
);
sprintf(data_common1.Pack_len,"%d,",strlen(data_common1.Pack_data)+2);
//<2F><><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>
if((data_common1.Pack_data[0] < 0x30) || (data_common1.Pack_data[0] > 0x39))
{
memset(data_common1.Pack_data,0,sizeof(data_common1.Pack_data));
sprintf(data_common1.Pack_data,"%s\r\n","TESTTEST"
// Sdi_Fram_Record_Structs.Ch7_RX_BUF,
// Sdi_Fram_Record_Structs.Ch8_RX_BUF,
// Sdi_Fram_Record_Structs.Ch9_RX_BUF
);
}
}
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//drv:<3A><><EFBFBD>̱<EFBFBD><CCB1><EFBFBD>("0:"/"1:")
//total:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λKB<4B><42>
//free:ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λKB<4B><42>
//<2F><><EFBFBD><EFBFBD>ֵ:0,<2C><><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t exf_getfree(char *drv,u32 *total,u32 *frees)
{
FATFS *fs;
fs=malloc(700);
FRESULT res;
u32 fre_clust=0, fre_sect=0, tot_sect=0;
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>
res=f_mount(fs, "0", 1);
res =f_getfree("0", (DWORD*)&fre_clust, &fs);
if(res==0)
{
tot_sect=(fs->n_fatent-2)*fs->csize; //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fre_sect=fre_clust*fs->csize; //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*total=tot_sect>>1; //<2F><>λΪKB
*frees=fre_sect>>1; //<2F><>λΪKB
*total=(*total)/1024; //<2F><>λΪM
*frees=(*frees)/1024; //<2F><>λΪM
}
res=f_mount(NULL, "0", 1);
free(fs);
return res;
}
/***************************** END OF FILE *********************************/