我查得文件是3.7M的MP3,可是只能读文件前面的341个扇区
我查得文件是3.7M的MP3,可是只能读文件前面的341个扇区。
while(1)
{
mCmdParam.Read.mSectorCount =1; // 指定读取的扇区数
CH375FileRead(); c++;//读完后文件指针自动后移
if (mCmdParam.Read.mSectorCount<1 ) break;
} // 实际读出的扇区数较小则说明文件已经结束
我做的MP3,只能读前面341扇区,请教
这人很懒,什么都没留下
热门产品推荐 : CH342: USB转双串口芯片
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; 实际读出的扇区数较小则说明文件已经结束
}
E-MAIL:fqb@wch.cn TEL:025-52638375
CH375FileRead(); 读完后文件指针自动后移别 //那么是后移32个扇区?如果是的话,那不是要把文件数据缓冲区设置为32个?
这人很懒,什么都没留下
续上,谢谢解答。
UINT8 CH375FileRead( void ) /* 从当前文件读取数据 */
{
mCmdParam.ReadX.mDataBuffer = &FILE_DATA_BUF[0]; /* 指向文件数据缓冲区 */
return( CH375FileReadX( ) );
}
每执行一个( CH375FileReadX( ) ); “ 读完后文件指针自动后移一个扇区吗?”
那么为什么CH375FileRead( void ) “ 读完后文件指针自动后移32个扇区吗?”
这人很懒,什么都没留下
不是这个意思,"读完后文件指针自动后移"指的是读完一个扇区的文件,指向下一个文件,你读出一个扇区的数据之后,那你就将这一个扇区的数据在处理完在读下一个扇区,而不是全读出来在处理
E-MAIL:fqb@wch.cn TEL:025-52638375
读完后文件指针自动后移"指的是读完一个扇区的文件,指向下一个文件,
是不是应该这么理解,读完后文件指针自动后移"指的是读完A文件一个扇区后,指向A文件下一个扇区?
,
这人很懒,什么都没留下
恩恩
E-MAIL:fqb@wch.cn TEL:025-52638375
只有登录才能回复,可以选择微信账号登录