CH375 操作U盤創(chuàng)建文件的問題,請(qǐng)高手賜教!

用mega128+CH375B+U盤實(shí)現(xiàn)對(duì)U盤的文件讀寫操作。 使用了avr的CH375HFB.A文件子程序庫。 事先做了兩個(gè)實(shí)驗(yàn),第一用命令0x06,傳數(shù)按位取反命令,能成功。第二用CH375DiskConnect()函數(shù),插拔U盤串口調(diào)試也能提示成功。 接下來就是要實(shí)現(xiàn)最開始敘述的功能。但程序死于CH375DiskReady()。后從網(wǎng)上看到去CH375DiskReady()函數(shù),直接走CH375FileCreate(),程序就死于CH375FileCreate()。 不知道是什么原因,請(qǐng)高手們賜教!

void main(void) { char i; UINT8 returnData=0xFF; unsigned char tmp = 0; init_devices(); CH375Reset();

if(CH375LibInit()==ERR_SUCCESS) UsartSendBuf("USB初始化成功\n",14); else UsartSendBuf("USB初始化失敗\n",14); while(1) { /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 */ if(CH375DiskConnect()==ERR_SUCCESS) UsartSendBuf("USB連接成功\n",12); else UsartSendBuf("USB斷開連接\n",12); mDelaymS(1000); /* 檢查U盤是否準(zhǔn)備好,有些U盤不需要這一步,但是某些U盤必須要執(zhí)行這一步才能工作 */ for(i=0;i<5;i++) { /* 有的U盤總是返回未準(zhǔn)備好,不過可以被忽略 */ mDelaymS(100); if(CH375DiskReady()==ERR_SUCCESS) { UsartSendBuf("U盤準(zhǔn)備好\n",10); break; /* 查詢磁盤是否準(zhǔn)備好 */ } } if(i==5) UsartSendBuf("U盤未準(zhǔn)備好\n",12); UsartSendBuf("\n------------------\n",20); for(i=0;i<5;i++ ) { mDelaymS(200); } //等待 strcpy((char *)mCmdParam.Create.mPathName,title ); //寫入文件

while(1) { returnData = CH375FileCreate(); UsartSendBuf("USB創(chuàng)建文件\n",12); UsartTransmit(returnData); UsartSendBuf("\n----------\n",12); mCmdParam.Write.mSectorCount=1; returnData = CH375FileWrite(); UsartSendBuf("USB寫寫文件\n",12); UsartTransmit(returnData); UsartSendBuf("\n----------\n",12); returnData = CH375FileClose(); //關(guān)閉文件 UsartSendBuf("USB關(guān)閉文件\n",12); UsartTransmit(returnData); UsartSendBuf("\n----------\n",12); mDelaymS( 1000 ); } } }

1、CH375Reset()執(zhí)行后至少等待40mS才能繼續(xù)操作CH375,通常這個(gè)函數(shù)用不著,參考我們的例程就可以了 2、CH375DiskReady失敗,那么后續(xù)的操作時(shí)無意義的,檢查CH375_INT_WIRE定義是否正確


謝謝!果然是CH375_INT_WIRE腳的問題!


另外,我仍然碰到創(chuàng)建的文件在windows下不能刪除的問題。 仍是上面的程序,CH375FileCreate(),CH375FileWrite(),CH375FileClose()返回值都是0。 把U盤取出,放入電腦,電腦文件夾是能顯示有一個(gè)title.TXT文件的圖標(biāo), 但雙擊文件后系統(tǒng)提示:找不到“title.TXT”,要?jiǎng)?chuàng)建新文件嗎?

程序是這樣寫的: char title[]={"\\title.TXT"}; strcpy((char *)mCmdParam.Create.mPathName, title); 應(yīng)該沒問題吧!

請(qǐng)高手再幫我看下原因,先謝謝了!


文件名需要大寫,就直接這樣做吧:strcpy((char *)mCmdParam.Create.mPathName, "\\TITLE.TXT");


正如你所說,謝謝!


我也是建了文件打不開,大寫也不行,還是出現(xiàn)上面的問題,提示是否新建,但是查看文件的字節(jié)數(shù)里頭有16個(gè)字節(jié)


樓上兄弟,請(qǐng)注意:

文件名必須符合DOS規(guī)范(WINDOWS下的小寫或長(zhǎng)文件名實(shí)際上都對(duì)應(yīng)一個(gè)自動(dòng)產(chǎn)生的DOS文件名): 1、文件名分為兩部分,主名和擴(kuò)展名,之間為小數(shù)點(diǎn)分開。目錄名與文件名類似,下同。 2、擴(kuò)展名可以省略,如果沒有擴(kuò)展名,小數(shù)點(diǎn)也必須省去,擴(kuò)展名代表文件類型,只是代表而已。 3、主名長(zhǎng)度不超過8個(gè)字符,擴(kuò)展名長(zhǎng)度不超過3個(gè)字符。 4、必須是大寫字母A-Z、數(shù)字0-9、下劃線等,而不能用特殊字符例如空格、斜杠、大于小于等。 5、文件名以00H結(jié)束。 例如有效文件名,字符串的最后以00H結(jié)束,C語言是"\x0": A B2KD9DI8 D4889.C D2004_12.TXT 中文.DOC 例如無效文件名(注:如果使用長(zhǎng)文件名子程序庫那么可以支持小寫文件名和較長(zhǎng)的文件名) a 小寫 B2KD8D18X 主名太長(zhǎng) D48 89.C 空格無效 DOIW44I4.TXT2 擴(kuò)展名太長(zhǎng) 中文.DoC 小寫 實(shí)際文件名還要加上左斜杠以指定目錄,例如,strcpy(mCmdParam.Create.mPathName,"/MYFILE.TXT"); 注意在C語言中容易出現(xiàn)strcpy(mCmdParam.Create.mPathName,"\MYFILE.TXT");右斜杠必須是兩個(gè)。 因?yàn)榇蠖鄶?shù)用戶都使用固定的文件名,不需要復(fù)雜的功能,所以我們沒有在程序庫中增加代碼自動(dòng)處理 大小寫轉(zhuǎn)換等問題,而是由用戶根據(jù)需要自行處理,以節(jié)約不需此功能時(shí)的代碼。 另外,寫完文件后要及時(shí)修改文件長(zhǎng)度,如果寫入了數(shù)據(jù)而文件長(zhǎng)度為0,那么WINDOWS也讀不出數(shù)據(jù)。 對(duì)于已經(jīng)發(fā)生錯(cuò)誤的U盤,在重新使用前應(yīng)該在WINDOWS下做磁盤掃描,修正原有錯(cuò)誤后再使用。


樓上總結(jié)很好,這些實(shí)際上都是WINDOWS所規(guī)定的,所有只要按照WINDOWS的規(guī)范來操作就沒什么問題了。


CH375LibInit() 返回值是0x81 ,請(qǐng)問cs a0 wr rd 這些引腳怎么定義?。烤褪窃趺春虲H375HF4庫文件聯(lián)系起來。


不能用CH375HF4,用庫CH375HFC,和CH375通訊的底層函數(shù)要自己寫,參考:CH375LIB\MCS51\FILELIBC\exam7


您好,我遇到了相同的問題,CH375Diskready返回0x82能不能請(qǐng)您說的再詳細(xì)一點(diǎn)


朋友,你是怎么解決的?我一直不行啊


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

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