csv:简化版excel,在PC机上等同于excel,可进行各种excel计算、画图。
#define EACH_FILE_MAX_BYTE 52428800
//-------------------------------------------------------------------
// 功能:存放数据为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; }