[求助]关于模块扇区参数设置
请问,对于文件大于255扇区,而单片机只有1k ram没有外扩ram的情况,在输入扇区参数时,是否sector。count设成一,然后再加文件所占扇区数的循环呀即执行这些次数的读命令呀?(每读入一扇区我还要对其进行检索)谢谢!
另外:在每次读取一扇区的例程序中,文件较大一次读不完,有这么一句:if(mcmd.read.msector!=1) break
用于判断文件是否结束.是什么原理?
难道当读鱼虾不足一扇趋时会返回0吗?

你有多少缓冲区,就一次读多少数据!
模块里,对于最后不足一个扇区的数据,应该调用命令ReadLast读取.

不要一次读写超过64K,因为有些U盘可能不支持。if(mcmd.read.msector!=RequestLength)用来判断文件是否结束,文件快结束时返回0

我的情况是这样的:单片机无外扩ram,仅有内部1k ram,而要读的文件超过了255个扇区,是否可以将文件长度加511后,通过if(mcmd.read.msector!=1)语句来控制读完整个文件,每次只读一个扇区。
还有 tech提到的“文件快结束时返回0”是不是指读到最后不足一扇区时不会将其读出,而返回0呀

模块里,对于最后不足一个扇区的数据,应该调用命令ReadLast读取.

你所说的将文件长度加511,是针对直接使用CH375芯片,调用库文件,操作文件时用到.
你可以将 CH375vFileSize+511,然后读取数据,再将CH375vFileSize-511,将文件长度改回

那光盘提供的汇编例程序ch375hmp.asm不是针对模块的吗?在其中就用到了+511。而没有调用readlast。
根据什么判断已经读到剩余不足一扇区的数了哪?
谢谢

没人帮忙呀:(

数据正常读完后调用readlast返回0表示没有尾部数据,不为零可将尾部数据读出.

那请看下面做法对吗?

loop:
read (只读一个扇区)

处理读出数据

判断返回扇区参数是否为一
若=1 跳到loop
若=0 用readlast读出剩余扇区

文件长度+511,计算扇区数,然后READ((文件长度+511)/512)个扇区,读完后,再调用READLAST看有没有数据.

我的情况是:要读的文件大于255个扇区且mcu只有内部1k ram,所以只有一次读入1个扇区。
问题是:能否用模块读命令的返回参数来作为是否文件已读完?(比如:用read语句进行读,当文件结束时或还剩不足一扇区时,返回0?)

引用回复:文件长度+511,计算扇区数,然后READ(((文件长度+511)/512)个扇区/每次读写扇区数)次,读完后,再调用READLAST看有没有数据.

还有必要再用readlast吗
已经将实际文件长度延长了,即使原文件正好多出1字节经+511后也成为一整扇区了,如多出n(n<512)字节经+511,最后多出不足1扇区的不使原文件数据了呀

用模块的话,文件+511h只不过是计算扇区,真正最后一个扇区,如果没有修改CH375vFileSize,那肯定是读不到的.

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