?? fileoperation.c
字號:
//FileOperation.c
#include "BasicDefinition.h"
long m_nFileSize;//文件長度
FILE *fp1;
BOOL m_bAlreadyOpen;//沒有打開文件
#pragma DATA_SECTION(StrOpenFileFail,".notice");//不能打開文件
char StrOpenFileFail[] = "\n Can't open file \n ";
#pragma DATA_SECTION(StrOpenFileSuccess,".notice");//成功打開文件
char StrOpenFileSuccess[] = "\n Successfully open file \n ";
#pragma DATA_SECTION(StrFilePath,".notice");
char StrFilePath[] = "C:\\cccss.bmp";//dogbig2.bmp";//cccss.bmp";//D:\\TiCup\\TiCupDspWork\\boot55\\TEST_0.BIN";//test14y.bin";//HEX2BIN.EXE";//test14.bin";//TEST_0.BIN";
#pragma DATA_SECTION(StrFileOperation,".notice");//以只讀方式打開二進制文件
char StrFileOperation[] = "rb";
#pragma DATA_SECTION(StrFilePath2,".notice");
char StrFilePath2[] = "C:\\dogbigtest.bmp";
#pragma DATA_SECTION(StrFileOperation2,".notice");//以寫方式打開二進制文件
char StrFileOperation2[] = "wb";
#pragma DATA_SECTION(StrFilePath3,".notice");
char StrFilePath3[] = "C:\\DspJpegTest.jpg";
extern BYTE DDC4[0x400];
extern BYTE RMartix[0x4000];
extern BYTE GMartix[0x4000];
extern BYTE BMartix[0x4000];
extern UINT m_nErrorCode;//前面操作的錯誤代碼
extern UINT ImageWidth;
extern UINT ImageHight;
extern unsigned long ImageBufSize;
extern BYTE JpegInfo[607];
extern void ClearStReg(void);
BOOL LoadFile(void)
{
if ((fp1=fopen(StrFilePath,StrFileOperation)) == NULL)
{
puts(StrOpenFileFail);
return 0;
}
else
{
//文件打開成功后初始化各種變量
m_nFileSize = 0;//文件長度
//下面計算文件的長度
CountFileSize(fp1,&m_nFileSize);
rewind(fp1);
puts(StrOpenFileSuccess);
printf(" File size is %ld bytes\n",m_nFileSize);
return 1;
}
}
void CountFileSize(FILE* fp,long* FileSize)
{
fseek(fp,0,2);//這種方式更快
*FileSize = ftell(fp);
}
BOOL SaveFile(void)
{
BYTE tmpbuf[3];
unsigned long tmp1,tmp2;
int m_nIndexFix;
BYTE *pRMartix,*pGMartix,*pBMartix;
BYTE fillbuf[4];
unsigned long k;
UINT i,j;
ClearStReg();
if(m_nErrorCode == K_OPERATION_SUCCESS)
{
if ((fp1=fopen(StrFilePath2,StrFileOperation2)) == NULL)
{
puts(StrOpenFileFail);
return 0;
}
else
{
fwrite(DDC4,sizeof(BYTE),54,fp1);
tmp1 = (unsigned long)(ImageWidth)*3;
tmp2 = (tmp1>>2)<<2;
m_nIndexFix = (int)(tmp2 - tmp1);//每一行的RGB數據不滿4的整數倍時需要補充的數據個數
if(m_nIndexFix < 0)
{
m_nIndexFix += 4;
fillbuf[0] = 0;
fillbuf[1] = 0;
fillbuf[2] = 0;
fillbuf[3] = 0;
}
for(i=0;i<ImageHight;i++)
{
k = ((unsigned long)(ImageHight - i - 1)) * ((unsigned long)ImageWidth);;
pRMartix = RMartix + k;
pGMartix = GMartix + k;
pBMartix = BMartix + k;
for(j=0;j<ImageWidth;j++)
{
tmpbuf[0] = *pBMartix++;
tmpbuf[1] = *pGMartix++;
tmpbuf[2] = *pRMartix++;
fwrite(tmpbuf,sizeof(BYTE),3,fp1);
}
fwrite(fillbuf,sizeof(BYTE),m_nIndexFix,fp1);
}
fclose(fp1);
return K_OPERATION_SUCCESS;
}
}
else
{
return K_STOP_DU_TO_PREVIOUS_ERROR;
}
}
BOOL LoadBasicBuffer(void)//用于初始化文件信息
{
UINT i;
if(m_bAlreadyOpen == 1)
{
rewind(fp1);
for(i=0;i<0x36;i++)//去掉文件頭
{
DDC4[i] = fgetc(fp1);
}
return K_OPERATION_SUCCESS;
}
else
return K_FILE_NOT_OPEN_ERROR;
}
BOOL LoadBuffer(void)
{
BYTE *pRMartix,*pGMartix,*pBMartix;
unsigned long tmp1,tmp2;
int m_nIndexFix,m_nIndexFixTmp;
unsigned long k;
UINT i,j;
if(m_nErrorCode == K_OPERATION_SUCCESS)
{
tmp1 = (unsigned long)(ImageWidth)*3;
tmp2 = (tmp1>>2)<<2;
m_nIndexFix = (int)(tmp2 - tmp1);//每一行的RGB數據不滿4的整數倍時需要補充的數據個數
if(m_nIndexFix < 0)
{
m_nIndexFix += 4;
}
m_nIndexFixTmp = m_nIndexFix;
if(ImageBufSize < 0x10000)
{
for(i=0;i<ImageHight;i++)
{
k = ((unsigned long)(ImageHight - i - 1)) * ((unsigned long)ImageWidth);
pRMartix = RMartix + k;
pGMartix = GMartix + k;
pBMartix = BMartix + k;
for(j=0;j<ImageWidth;j++)
{
*pBMartix++ = fgetc(fp1);
*pGMartix++ = fgetc(fp1);
*pRMartix++ = fgetc(fp1);
}
while(m_nIndexFixTmp!=0)
{
tmp1 = fgetc(fp1);
m_nIndexFixTmp--;
}
m_nIndexFixTmp = m_nIndexFix;
}
}
fclose(fp1);
m_bAlreadyOpen = 0;
return K_OPERATION_SUCCESS;
}
else
{
return K_FILE_NOT_OPEN_ERROR;
}
}
BOOL CreateFile(void)
{
ClearStReg();
if(m_nErrorCode == K_OPERATION_SUCCESS)
{
if ((fp1=fopen(StrFilePath3,StrFileOperation2)) == NULL)
{
puts(StrOpenFileFail);
return K_CREATE_FILE_FAIL;
}
else
{
JpegHeadWrite(fp1);
return K_OPERATION_SUCCESS;
}
}
else
{
return K_STOP_DU_TO_PREVIOUS_ERROR;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -