⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 txtfile.c

📁 基于嵌入式linux下
💻 C
字号:
#include "dispatch.h"

//调度信息处理
int DISPATCH_TxtFile(const char *pathname,GPS_Txt_Info *GPSTxtInfo,int intLine,char *WriteType,unsigned short MsgID)
{
	int i,j,oldCount,SizeLen,FileSize,FileLine;
	unsigned short OldMsgID;
	FILE *in;
	GPS_Txt_Info tmpBuffer[ECHOMAX];
	char tmpMsgID[6],*ContenMent,tmpConment[ECHOMAX+12];
	
	memset(tmpBuffer,0,sizeof(tmpBuffer));
	
	FileSize=GetFileSize(pathname);
	
	ContenMent=malloc(FileSize);
	
	FileSize=DISPATCH_TxtFileR(pathname,ContenMent);
	
	oldCount=GetLine(ContenMent);

	if((in=fopen(pathname,WriteType))==NULL)
	{
		printf("unopen!\r\n");
		return FALSE;
	}

	for(i=0;i<intLine;i++)
	{
		memset(tmpConment,0,sizeof(tmpConment));
		SizeLen=1;
		tmpConment[0]=GPSTxtInfo[i].infotype[0];
		
		for (j=0;j<5;j++)
		{
			if (GPSTxtInfo[i].infoid[j]!=0x00)
			{
				tmpConment[j+1]=GPSTxtInfo[i].infoid[j];
			}
			else
			{
				tmpConment[j+1]=' ';
			}

			SizeLen++;
		}
		
		for (j=0;j<6;j++)
		{
			if (GPSTxtInfo[i].shorttime[j]!=0x00)
			{
				tmpConment[j+6]=GPSTxtInfo[i].shorttime[j];
			}
			else
			{
				tmpConment[j+6]=' ';
			}
			SizeLen++;
		}
		
		for (j=0;j<ECHOMAX;j++)
		{
			SizeLen++;
			if (GPSTxtInfo[i].content[j]!=0x00)
			{
				tmpConment[j+12]=GPSTxtInfo[i].content[j];
			}
			else
			{
				tmpConment[j+12]='\n';
				break;
			}
		}
		
		if((fwrite(tmpConment,SizeLen,1,in))!=1)
		{
			printf("eorror!\r\n");
			return FALSE;
		}
		//fprintf(in,"\n");
	}

	SizeLen=0;
	j=0;
	FileLine=0;
	memset(tmpConment,0,sizeof(tmpConment));
	for (i=0;i<FileSize;i++)
	{
		if ((FileLine+intLine)>=30)
		{
			break;
		}
		if (ContenMent[i]!='\n')
		{
			SizeLen++;
			tmpConment[j]=ContenMent[i];
			if ((MsgID>0) && (SizeLen==2))
			{
				memset(tmpMsgID,0,sizeof(tmpMsgID));
				
				tmpMsgID[0]=ContenMent[i];
				tmpMsgID[1]=ContenMent[i+1];
				tmpMsgID[2]=ContenMent[i+2];
				tmpMsgID[3]=ContenMent[i+3];
				tmpMsgID[4]=ContenMent[i+4];
				tmpMsgID[5]='\0';
				OldMsgID=atoi(tmpMsgID);
				
				if (OldMsgID==MsgID)
				{
					tmpConment[j]=0x01;
				}
			}
			j++;
		}
		else
		{
			SizeLen++;
			tmpConment[j]='\n';
			
			if((fwrite(tmpConment,SizeLen,1,in))!=1)
			{
				printf("eorror!\r\n");
				return FALSE;
			}
			//fprintf(in,"\n");
			
			FileLine++;
			SizeLen=0;
			j=0;
			memset(tmpConment,0,sizeof(tmpConment));
		}
	}
	
	fclose(in);
	free(ContenMent);

    return TRUE;
}

//调度信息读取
int DISPATCH_TxtFileR(const char *pathname,char *ContenMent)
{
	unsigned int i,FileSize;
	int fd;
	int retr;
	
	FileSize=0;
	if((fd = open(pathname, O_RDONLY))!=-1)
	{
		if((FileSize = GetFileSize(pathname))!=0)
		{
			retr = read(fd,ContenMent,FileSize);
			if (retr==FileSize)
			{
				close(fd);
			}
			else
			{
				close(fd);
				free(ContenMent);
				ContenMent = NULL;
			}
		}
	}
    
    return FileSize;
}

//菜单信息处理
int DISPATCH_MenuFile(const char *pathname,GPS_Menu_Info *GPS_MenuInfo,int intLine,char *WriteType)
{
	int i,j,SizeLen;
	FILE *in;
	char tmpConment[36];
	
	if((in=fopen(pathname,WriteType))==NULL)
	{
		printf("unopen!\r\n");
		return FALSE;
	}
	
	/*for(i=0;i<intLine;i++)
	{
		if((fwrite(&GPS_MenuInfo[i],sizeof(GPS_Menu_Info),1,in))!=1)
		{
			printf("eorror!\r\n");
			return FALSE;
		}
		fprintf(in,"\n");
	}*/
	for(i=0;i<intLine;i++)
	{
		memset(tmpConment,0,sizeof(tmpConment));
		SizeLen=0;
		
		for (j=0;j<3;j++)
		{
			if (GPS_MenuInfo[i].infotype[j]!=0x00)
			{
				tmpConment[j]=GPS_MenuInfo[i].infotype[j];
			}
			else
			{
				tmpConment[j]=' ';
			}

			SizeLen++;
		}
		
		for (j=0;j<33;j++)
		{
			SizeLen++;
			if ((j!=32))//(GPS_MenuInfo[i].content[j]!=0x00) && 
			{
				tmpConment[j+3]=GPS_MenuInfo[i].content[j];
			}
			else
			{
				tmpConment[j+3]='\n';
				break;
			}
		}
		
		if((fwrite(tmpConment,SizeLen,1,in))!=1)
		{
			printf("eorror!\r\n");
			return FALSE;
		}
		//fprintf(in,"\n");
	}

	fclose(in);

    return TRUE;
}

//获取文件的大小
int GetFileSize(char *FName)
{
	struct stat flstat;
	int	retr;
	if((retr=stat(FName,&flstat))==-1)
		return 0;
	return flstat.st_size;
}

//获取文件的行数
int GetLine(char *ptr)
{
	int retr=0;
	char *lineptr = NULL;
	char *newline = NULL;

	newline = ptr;
	while(1)
	{
		lineptr = strchr(newline,'\n');
		if(lineptr==NULL)
		{
			return retr;
		}
		else
		{
			retr++;
			newline = lineptr+1 ;
		}
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -