我查得文件是3.7M的MP3,可是只能读文件前面的341个扇区

我查得文件是3.7M的MP3,可是只能读文件前面的341个扇区。 while(1) { mCmdParam.Read.mSectorCount =1; // 指定读取的扇区数 CH375FileRead(); c++;//读完后文件指针自动后移 if (mCmdParam.Read.mSectorCount<1 ) break; } // 实际读出的扇区数较小则说明文件已经结束 我做的MP3,只能读前面341扇区,请教

mCmdParam.Read.mSectorCount =2; // 指定读取的扇区数 CH375FileRead(); c++; if (mCmdParam.Read.mSectorCount<2 ) break; // 实际读出的扇区数较小则说明文件已经结束 这个设置为1K的缓冲区,只能读16个扇区,请教WCH的工程师


UINT8 CH375FileRead( void ) /* 从当前文件读取数据 */ { mCmdParam.ReadX.mDataBuffer = &FILE_DATA_BUF[0]; /* 指向文件数据缓冲区 */ return( CH375FileReadX( ) ); } 说明书上说mCmdParam.Read.mSectorCount =2; CH375FileRead(); 就读两个扇区到1K的文件数据缓冲区

CH375FileRead(); 按照上面的函数,不是只能读一个扇区吗?CH375FileReadX( )一次,读一个扇区,这不是很矛盾吗?


前面应该有一个while循环吧: while ( 1 ) { c = 32; 每次读取32个扇区 mCmdParam.Read.mSectorCount = c; 指定读取的扇区数 CH375FileRead(); 读完后文件指针自动后移 处理数据 if ( mCmdParam.Read.mSectorCount < c ) break; 实际读出的扇区数较小则说明文件已经结束 }


CH375FileRead(); 读完后文件指针自动后移别 //那么是后移32个扇区?如果是的话,那不是要把文件数据缓冲区设置为32个?


续上,谢谢解答。 UINT8 CH375FileRead( void ) /* 从当前文件读取数据 */ { mCmdParam.ReadX.mDataBuffer = &FILE_DATA_BUF[0]; /* 指向文件数据缓冲区 */ return( CH375FileReadX( ) ); } 每执行一个( CH375FileReadX( ) ); “ 读完后文件指针自动后移一个扇区吗?” 那么为什么CH375FileRead( void ) “ 读完后文件指针自动后移32个扇区吗?”


不是这个意思,"读完后文件指针自动后移"指的是读完一个扇区的文件,指向下一个文件,你读出一个扇区的数据之后,那你就将这一个扇区的数据在处理完在读下一个扇区,而不是全读出来在处理


读完后文件指针自动后移"指的是读完一个扇区的文件,指向下一个文件, 是不是应该这么理解,读完后文件指针自动后移"指的是读完A文件一个扇区后,指向A文件下一个扇区? ,


恩恩


只有登录才能回复,可以选择微信账号登录