CH376连续读

CH376读U盘里的文件。文件较大,设置的buf[2048];读了2048个buf就通过串口发出,然后继续读下一个2048,直到文件全部读完。现在仅第一个2048能读出数据,以后读出的和第一次相同。程序如下:


u32 read_addr;

ee:

    if(RealCount)

            *RealCount=0;

    xWriteCH376Cmd(CMD2H_BYTE_READ);

    xWriteCH376Cmd((u8) ReqCount);

    xWriteCH376Cmd((u8) ReqCount>>8);

    while(1)

    {    

        s=Wait376interrupt();

        if(s==USB_INT_DISK_READ)

        {

            s=CH376ReadBlock(buf);

            xWriteCH376Cmd(CMD0H_BYTE_RD_GO);

            buf+=s;

            if(RealCount)

                *RealCount+=s;

        }

        else if(s==USB_INT_SUCCESS)

        {

            //串口发送buf,此处省

            read_addr=read_addr+2048;

            s=CH376ByteLocate(read_addr);

            if(s!=USB_INT_SUCCESS)

                return (s);

            else

                goto ee;  

        }

    }


是不是CH376ByteLocate发得不对?

您好,您的read_addr是一个局部变量,您可以打印看一下是否每次都是从0开始的。您如果需要往后面读写的话,这个Locate函数需要指定到对应的地方,发然后再去读取固定的长度的数据。


我每次读是2048个,所以在前面用加了2048      read_addr=read_addr+2048;

这个变量也是变化的。就是读出的值不变。



你可以先使用我们File_sys下面写好的字节读命令,读取5个字节的数据,再次调用Locate函数到第六字节。看看能否正常的读取出正确的数据。


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