CH376連續(xù)讀

CH376讀U盤里的文件。文件較大,設(shè)置的buf[2048];讀了2048個buf就通過串口發(fā)出,然后繼續(xù)讀下一個2048,直到文件全部讀完。現(xiàn)在僅第一個2048能讀出數(shù)據(jù),以后讀出的和第一次相同。程序如下:


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)

????????{

????????????//串口發(fā)送buf,此處省

????????????read_addr=read_addr+2048;

????????????s=CH376ByteLocate(read_addr);

????????????if(s!=USB_INT_SUCCESS)

????????????????return (s);

????????????else

????????????????goto ee;??

????????}

????}


是不是CH376ByteLocate發(fā)得不對?

您好,您的read_addr是一個局部變量,您可以打印看一下是否每次都是從0開始的。您如果需要往后面讀寫的話,這個Locate函數(shù)需要指定到對應(yīng)的地方,發(fā)然后再去讀取固定的長度的數(shù)據(jù)。


我每次讀是2048個,所以在前面用加了2048? ? ??read_addr=read_addr+2048;

這個變量也是變化的。就是讀出的值不變。



你可以先使用我們File_sys下面寫好的字節(jié)讀命令,讀取5個字節(jié)的數(shù)據(jù),再次調(diào)用Locate函數(shù)到第六字節(jié)。看看能否正常的讀取出正確的數(shù)據(jù)。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频