This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS5.5下不能读取.bmp文件



CCS5.5 环境下,读写可变文件名的文件,比如说,0001.bmp,0002.bmp,0003.bmp,0004.bmp,...,文件名前缀同可变量i变化。

代码如下,该代码在VS2008下能正常工作,但是不能在CCS5.5下正常工作。

跟踪代码,发现代码进入ReadBmpFile()函数后,

就看不到完整的文件路径,只能看到部分路径,文件名及部分文件路径丢失,以至于fopen()函数不能正常打开文件,程序就死在该函数了。

有没有这份方面经验的,请给予指导。

for(i=0;i<PIC_NUM;i++)

{

sprintf(as8Name, ".//..//..//TestData//img//%04d.bmp", i+1);

sprintf(as8OutName, ".//..//..//TestData//out//%04d.bmp", i+1);

    ReadBmpBwPic(as8Name,gaaau8BwPic[0]);

 

void ReadBmpBwPic(S8 *pucFileName,  U8 (*pau8Data)[COL])

{

S16 i,j,dHigh,dWidth;

ReadBmpFile(pucFileName, &dHigh, &dWidth, (U8*)gaaaReadBmpData[0][0]);

for (i = 0; i < ROW; i++)

{

      for (j = 0; j < COL; j++)

      {

                 //RGB 转换。

      }

}

}

 

void ReadBmpFile(S8 *pucFileName, S32 *pdHigh, S32 *pdWidth, U8 *pucData)

{

      FILE *fpOut = NULL;

      T_BmpFileHeader tFileHeader;

      T_BmpInfoHeader tInfoHeader;

      S32 dHighIdx;

      S32 dWidthIdx; 

      fpOut = fopen(pucFileName, "rb+");

      fread((U8*)(&tFileHeader) + 2, 14, 1, fpOut);

      fread(&tInfoHeader, 40, 1, fpOut);

      for (dHighIdx = 0; dHighIdx < (S32)tInfoHeader.biHeight; dHighIdx++)

      {

      for (dWidthIdx = 0; dWidthIdx < (S32)tInfoHeader.biWidth; dWidthIdx++)

           {              

//文件读写

           }

      }

      *pdHigh  = tInfoHeader.biHeight;

      *pdWidth = tInfoHeader.biWidth;

      fclose(fpOut);

}

  • 在C66核DSP的MCSDK包里面有一个使用fopen的例子,你可以看看

    FILE* fp = fopen("C:\\temp\\StatPof_etbdata.bin", "wb");

    路径\BIOS_MCSDK\mcsdk_2_01_02_06\demos\image_processing\ipc\instrumentation\src中的statistical_profiling.c