[求助]CH376如何列舉U盤目錄下的文件?

請問各位大俠,用CH376讀寫U盤的時候,如何列舉U盤目錄(根目錄或任一打開的文件夾)里面的文件名和拓展名,并用串口將文件名和拓展名發(fā)送出去?思想是什么,如果有源代碼就更好了,急用,謝謝! 用的是串口和CH376通信,51單片機(jī)

打開要枚舉的文件夾,枚舉當(dāng)前文件夾下的文件或者目錄,枚舉的方法可以參考EXAM1主程序開頭部分的例程,也可以參考376編程手冊(CH376EVT中)


謝謝您的回答,我還要麻煩您,枚舉目錄下的文件名(所有的都要枚舉)之后,怎么樣把枚舉到的文件名通過串口(單片機(jī)的另一個串口)發(fā)出或者是將枚舉到的文件名寫入文檔呢?


把枚舉到得文件名通過另一個串口發(fā)出到哪邊?寫入到哪里的文檔


不好意思我沒講清楚,我需要單片機(jī)有兩個串口,一個串口和CH376相連,另一個串口和其他設(shè)備連接。單片機(jī)控制CH376去列舉U盤的指定文件夾內(nèi)的文件名,然后單片機(jī)把列舉到文件夾內(nèi)的每個文件名通過另一個串口發(fā)送到PC或者其他設(shè)備。如果寫入文檔的話,在U盤新建立一個文檔,并把列舉到的文件名寫入。當(dāng)然發(fā)送的是最好的,不知道這樣描述您懂得我的意思沒有


建文檔可以,參考EXAM7.另一個串口把文件名發(fā)送出去,你就操作另外一個串口發(fā)送就是了


謝謝指導(dǎo),EXAM1和EXAM7我都看過了,我不清楚如何將文件名取出來,比如取到的文件名在什么變量里面,應(yīng)該如何操作取文件名和發(fā)送呢?


strcpy( buf, "\\C51\\CH376*" ); /* CH376HFT.C文件不存在則列出\C51子目錄下的以CH376開頭的文件 */ printf( "List file %s\n", buf ); s = CH376FileOpenPath( buf ); /* 枚舉多級目錄下的文件或者目錄,輸入緩沖區(qū)必須在RAM中 */ while ( s == USB_INT_DISK_READ ) { /* 枚舉到匹配的文件 */ CH376ReadBlock( buf ); /* 讀取枚舉到的文件的FAT_DIR_INFO結(jié)構(gòu),返回長度總是sizeof( FAT_DIR_INFO ) */ pDir = (P_FAT_DIR_INFO)buf; /* 當(dāng)前文件目錄信息 */ if ( pDir -> DIR_Name[0] != '.' ) { /* 不是本級或者上級目錄名則繼續(xù),否則必須丟棄不處理 */ if ( pDir -> DIR_Name[0] == 0x05 ) pDir -> DIR_Name[0] = 0xE5; /* 特殊字符替換 */ pDir -> DIR_Attr = 0; /* 強(qiáng)制文件名字符串結(jié)束以便打印輸出 */ printf( "*** EnumName: %s\n", pDir -> DIR_Name ); /* 打印名稱,原始8+3格式,未整理成含小數(shù)點分隔符 */ } xWriteCH376Cmd( CMD0H_FILE_ENUM_GO ); /* 繼續(xù)枚舉文件和目錄 ,放在buf里面的


謝謝指教,根據(jù)您說的我修改了一下,程序如下

s = CH376FileCreate( "演示記錄.TXT" ); /*為了將所列舉的文件名存在一個文件中, 在根目錄或者當(dāng)前目錄下新建文件*/ mStopIfError( s ); s = CH376FileClose( TRUE ); //關(guān)閉文件,自動更新文件長度 mStopIfError( s );

/******* 此處省略歷程中關(guān)于初始化的語句********/

strcpy( buf, "/*\0" ); // 列舉目錄下的所有文件

s = CH376FileOpen( buf ); //開始打開所有文件 while ( s == USB_INT_DISK_READ ) // 枚舉到匹配的文件 { CH376ReadBlock( buf ); // 讀取枚舉到的文件的FAT_DIR_INFO結(jié)構(gòu)

pDir = (P_FAT_DIR_INFO)buf; // 當(dāng)前文件目錄信息 if ( pDir -> DIR_Name[0] != '.' ) // 不是本級或者上級目錄名則繼續(xù),否則必須丟棄不處理 { if ( pDir -> DIR_Name[0] == 0x05 ) pDir -> DIR_Name[0] = 0xE5; // 特殊字符替換 pDir -> DIR_Attr = 0; // 強(qiáng)制文件名字符串結(jié)束以便打印輸出 }

s = CH376FileOpen( "演示記錄.TXT" ); s = CH376ByteWrite( buf, strlen(buf), NULL ); //以字節(jié)為單位向當(dāng)前位置寫入數(shù)據(jù)塊 mStopIfError( s ); s = CH376FileClose( TRUE ); //關(guān)閉文件,自動更新文件長度 mStopIfError( s ); } xWriteCH376Cmd( CMD0H_FILE_ENUM_GO ); //繼續(xù)枚舉文件和目錄 ,放在buf里面的

這個程序我只是實驗在根目錄下完成操作,在子目錄的情況我沒有試過。我試主函數(shù)加大while(1)的情況和不加while(1)得情況,以上語句均不能達(dá)到要求,生成的文檔里面有很少的幾個字,但不是我想要的文件名。如果加大循環(huán)我還注意了將新建文件的語句拿出循環(huán)防止重復(fù)新建文件。而且加大循環(huán)while(1)程序就會一直循環(huán),不知道用什么標(biāo)志讓其完成一邊列舉后退出循環(huán)。 請問大俠我應(yīng)該怎么修改,達(dá)到將所在目錄下的文件名寫入當(dāng)前目錄下新建的一個文檔中?謝謝!


沒看懂你到底要做什么....CH376FileOpen( "演示記錄.TXT" ); 這種寫法是錯誤的,如果是根目錄下應(yīng)該這樣寫CH376FileOpen( "/演示記錄.TXT" ); 還有你整個枚舉的流程也是錯誤的,枚舉時不能打開其它文件,你先參考EXAM1把枚舉的流程弄清楚


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

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