CH376周期性發(fā)生獲取長文件名失敗,是不是芯片有BUG?

我用CH376枚舉U盤中的文件,然后獲取它的長文件名,總是在連續(xù)獲取7次以后就會出錯一次,CH376GetLongName()返回值不是0x14(USB_INT_SUCCESS),而是0x1D(USB_INT_DISK_READ),然后繼續(xù)8-14次又正常了,第15次又出現(xiàn)一次,程序很簡單,應(yīng)該不是程序的問題:

s = CH376GetLongName( Filename, buf ); if ( s == USB_INT_SUCCESS ) { 長文件名處理部分 } else { 短文件名處理 }

1、是枚舉同一個文件,還是不同的文件 2、被枚舉的文件名稱是為大寫


1、枚舉某目錄下的所有文件,不是同一個,相當(dāng)于dir檢索文件的功能。 2、應(yīng)該跟被枚舉的文件名稱無關(guān),因為不管是枚舉文件還是目錄,都有這樣的問題,目錄是中文的,不存在大小寫問題。

因為我的項目要讀取U盤的某個目錄下的文件名,顯示到液晶屏上,每隔7次就顯示一次短文件名如“新建文~1.txt”,其他時候都很正常的顯示長文件名,后來跟蹤C(jī)H376GetLongName()的返回值發(fā)現(xiàn)每7次就返回一次0x1D,而不是0x14,所以導(dǎo)致程序往顯示短文件名處理部分走了。


第7個文件的文件后綴名也必須是大寫的,比較一下這個文件名與其正常的是否有區(qū)別呢


出問題的文件名跟其他的沒啥區(qū)別,我用0001.txt~0009.txt測試也是這樣,真是郁悶……

是不是我連續(xù)快速枚舉文件,導(dǎo)致CH376內(nèi)部緩沖區(qū)溢出了?出錯時返回的Ox1D是USB_INT_DISK_READ,根據(jù)頭文件的定義是“USB存儲器請求數(shù)據(jù)讀出”,所以很值得懷疑。

執(zhí)行 CH376GetLongName( Filename, buf );函數(shù)并讀出buf的值后還需要做什么清空CH376內(nèi)部緩沖或是其他操作才能繼續(xù)枚舉下一個文件?


文件名必須是8字節(jié)主文件名+3字節(jié)后綴名,必須全為大寫,你測試的文件名是錯誤的,改正一下試試


可以排除文件名的因素,因為文件名是從U盤枚舉得來的,無論如何都是8.3結(jié)構(gòu)大寫的,并不是我指定的奇奇怪怪的文件名。

上面所說的0001.txt~0009.txt是指我復(fù)制了9個文件到U盤里,分別是0001.txt、0002.txt、0003.txt……0009.txt讓376去枚舉,枚舉的結(jié)果肯定是0001.TXT、0002.TXT、0003.TXT……0009.TXT的,到這步都是沒有任何問題的,就是根據(jù)這些枚舉出來的文件名分別去CH376GetLongName()的時候到了第七個就有問題了,枚舉文件夾名也是這樣。


重新梳理一下:U盤里面的文件,文件后綴名究竟是大寫還是小寫?必須為大寫


把文件的擴(kuò)展名都改為大寫了,還是老樣子,CH376GetLongName到第7個就會返回一次0x1D,真是要抓狂了……


你枚舉一個短文件名之后在去獲取這個文件對應(yīng)的長文件名,你看下還有沒有問題?


我就是這樣做的,先枚舉其短文件名,然后再根據(jù)短文件名去獲取長文件名,前面7次都很正常,第八次CH376GetLongName就返回一次0x1D,而不是正常的0x14了,接下來的就又正常了,第15次又出錯了……無論是操作文件還是文件夾,都會有這個問題。


這個片子問題多多,可能是大家都沒搞明白是怎么回事,反正我在根目錄下新建一個文件,然后再枚舉根目錄下的文件,都有問題,經(jīng)常出現(xiàn)返回值是1D的情況。。。。。。。。。。這個376太難用了,而且功能單一,還不如我直接用m3片子自己做一個讀U盤的東西,真惡心。


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

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