使用CMD0H_DISK_QUERY與CMD0H_DISK_CAPACITY指令都是一樣,大于4G的存儲(chǔ)器就顯示接近4G的容量,剩余容量也不對(duì)了,只有小于4G的移動(dòng)存儲(chǔ)器才能正確讀出總?cè)萘颗c剩余容量,是不是CH376的一個(gè)bug???
你可以把4G存儲(chǔ)器送到計(jì)算機(jī)上面去,看下讀取的容量是多少?我們實(shí)際上是按照計(jì)算機(jī)上面的操作步驟來操作U盤的。應(yīng)該不會(huì)出現(xiàn)你說的現(xiàn)象。
用我們提供的程序庫(kù)中的CH376DiskCapacity試試
CMD0H_DISK_QUERY命令獲取U盤的總扇區(qū)數(shù)是多少? 還有你的U盤的扇區(qū)大小是多少?CH376只支持扇區(qū)大小為512字節(jié)的存儲(chǔ)器
謝謝大家的解答,我是一概按照512字節(jié)來計(jì)算,難道大于4G的SD卡和U盤每扇區(qū)不是512字節(jié)?這些卡和U盤在電腦里都能顯示正常的容量,8G的卡讀出扇區(qū)來計(jì)算容量正好差一半這樣,可能每扇區(qū)是1024字節(jié)的了。
不知如何獲取存儲(chǔ)器每扇區(qū)的大???如果無(wú)法獲取的話,移動(dòng)硬盤就難搞了,扇區(qū)大小千差萬(wàn)別。
一般U盤不是大扇區(qū)的,但不能排除,你下載WINHEX軟件,用這個(gè)軟件來打開U盤就可以看到了。另外你把你的程序貼出來看一下。
終于找到問題了,低級(jí)錯(cuò)誤:變量溢出了!??!
保存總字節(jié)數(shù)的變量要聲明為unsigned long long才行,unsigned long 在4G以上就會(huì)溢出。
再次謝謝各位的幫助!