csv:简化版excel,在PC机上等同于excel,可进行各种excel计算、画图。
#defineEACH_FILE_MAX_BYTE52428800
//-------------------------------------------------------------------
//功能:存放数据为csv格式
//输入:filename 写入U盘的文件名称,如ai.csv。
//name 变量名称。
//value 值。
//输出:0:成功!0:失败
//备注:
//-------------------------------------------------------------------
int Hzhy_Write_CsvData(char *filename,char *name,int value)
{
int len = 0,size;
struct tm *p;
char buff[256];
time_t timep;
time(&timep);
if (InitUsb() < 0)
return -1;
p=gmtime(&timep);
size = UsbGetFileSize(filename);
if(size == 0)
{
memset(buff,0,sizeof(buff));
printf("Build new file\n");
sprintf(buff,"变量名,时间,值\n");
len = strlen(buff);
UsbWriteFile(filename,buff,len);
}
else
{
if(size > EACH_FILE_MAX_BYTE)
{
printf("Beyond the maximum byte limit !\n");
return MAX_LEN_ERROR;
}
}
/*{
static int i=0;
printf("csv%03d\n",i++);
}
*/
memset(buff,0,sizeof(buff));
sprintf(buff,"%s, %d-%d-%d %d:%d:%d,%d\n",name,(1900+p->tm_year), (1+p->tm_mon),p->tm_mday,p->tm_hour, p->tm_min, p->tm_sec,value);
len = strlen(buff);
UsbWriteFile(filename,buff,len);
return 0;
}
//-------------------------------------------------------------------
//功能:写文件(包含创建)
//输入:
//输出:>=0:写入的数目<0:失败
//备注:
//-------------------------------------------------------------------
int UsbWriteFile(char *filename, char *buf, char len)
{
int fd,ret=0;
char name[100];
if (IsUsbExist == 0)
return -1;
if (strlen(filename) > 72)
{
printf("file name too long!\n");
return -4;
}
memset(name,0,sizeof(name));
sprintf(name,usb_path);
strcat(name,filename);
//printf("path:%s\n",name);
fd = open(name,O_RDWR|O_CREAT);//写方式打开文件,如果文件不存在则创建
if((fd < 0))//打开操作不成功
{
static int cnt=0;
if (cnt == 0)
{
cnt = 1;
printf("The file can not be opened.\n");
}
return -2;
}
lseek(fd,0,SEEK_END);//文件指针移动到末尾,追加
ret = write(fd,buf,len);
if (ret < 0)
perror("write err");
close(fd);
return ret;
}
//-------------------------------------------------------------------
//功能:读文件
//输入:
//输出:>=0:读取的数目<0:失败
//备注:
//-------------------------------------------------------------------
int UsbReadFile(char *filename, char *buf, char len)
{
int fd,ret=0;
char name[100];
if (IsUsbExist == 0)
return -1;
if (strlen(filename) > 72)
{
printf("file name too long!\n");
return -4;
}
memset(name,0,sizeof(name));
sprintf(name,usb_path);
strcat(name,filename);
//printf("path:%s\n",name);
fd = open(name,O_RDONLY);
if((fd < 0))//打开操作不成功
{
static int cnt=0;
if (cnt == 0)
{
cnt = 1;
printf("The file can not be opened.\n");
}
return -2;
}
lseek(fd,0,SEEK_SET);//文件指针移动到开头
ret = read(fd,buf,len);
if (ret < 0)
perror("read err");
close(fd);
printf("read Result:\n%s\n",buf);
return ret;
}
//-------------------------------------------------------------------
//功能:获取文件大小
//输入:
//输出:文件大小
//备注:
//-------------------------------------------------------------------
int UsbGetFileSize(char *filename)
{
int fd,size=0;
char name[100];
if (IsUsbExist == 0)
return -1;
if (strlen(filename) > 72)
{
printf("file name too long!\n");
return -4;
}
memset(name,0,sizeof(name));
sprintf(name,usb_path);
strcat(name,filename);
//printf("path:%s\n",name);
fd = open(name,O_RDONLY);
if((fd < 0))//打开操作不成功
{
static int cnt=0;
if (cnt == 0)
{
cnt = 1;
printf("The file can not be opened.\n");
}
return -2;
}
size = lseek(fd,0,SEEK_END);//文件指针移动到末尾
if (size < 0)
perror("get size err");
close(fd);
//printf("size=%d\n",size);
return size;
}