[求助]關(guān)于txt文件生成的數(shù)據(jù)格式

大家好,小弟剛接觸CH375生成U盤文件的技術(shù),想請(qǐng)教個(gè)問題,比如說我要在U盤里生成一個(gè)名字為a.txt的文件,文件內(nèi)容為12345,需要通過CH375向U盤發(fā)送哪些數(shù)據(jù)?

(1)文件名必須是大寫的:A.TXT (2)TXT的內(nèi)容是ASIIC,文件內(nèi)容為12345的話,那么寫入的數(shù)據(jù)是0x31,0x32,0x33,0x34,0x35


你這是直接調(diào)用CH375庫(kù)函數(shù)使用時(shí)用的吧?庫(kù)函數(shù)里有很多程序用不著,我想知道一些讀寫引導(dǎo)區(qū)的方法,自己嘗試寫底層的程序。


(1)不是,只要想實(shí)現(xiàn)你要的效果,就必須這樣做 (2)如果你是想自己寫底層讀寫物理扇區(qū)的話,那么下載CH375EVT.ZIP,參考MISCELL下的例程,F(xiàn)AT的驅(qū)動(dòng)沒有例程,只能自己參考FAT協(xié)議去編寫了,論壇內(nèi)有個(gè)精簡(jiǎn)例程:http://wch.cn/bbs/View.asp?S=101&I=531


沒有必要,庫(kù)里面的函數(shù)大部分都是必須的,而且已經(jīng)做了精簡(jiǎn),功能比較完善,而且經(jīng)過非常嚴(yán)格的測(cè)試,兼容性非常高,推薦使用庫(kù)函數(shù).


如果你做完整的文件的話我也建議你用他們的庫(kù),因?yàn)槲椰F(xiàn)在就為兼容性頭疼。你如果執(zhí)意寫引導(dǎo)區(qū)和扇區(qū)一級(jí)的話,那就要去查看你所需要的文件系統(tǒng)內(nèi)容,甚至要看USB相關(guān)的協(xié)議。


好的,謝謝大家的回復(fù),我先嘗試去熟悉使用庫(kù)函數(shù),這樣也可以節(jié)省我的工作量。在電子設(shè)計(jì)方面,我工作經(jīng)驗(yàn)比較欠缺,會(huì)有很多瑣碎的問題向大家咨詢。 我想請(qǐng)問我想用通用型51做一個(gè)CH375并口的U盤文件生成的程序,請(qǐng)問先參考哪個(gè)例程效率會(huì)高些? 此外,看到一些例程里有PrintF函數(shù),是不是在Keil的仿真軟件上顯示一些函數(shù)的時(shí)候用的?


(1)下載CH375LIB.ZIP,根據(jù)\CH375LIB\DOC\LIB_LIST.TXT選擇相應(yīng)的庫(kù),例程參考MCS51下的 (2)printf輸出一些調(diào)試信息,由于涉及到CH375芯片,不好軟件仿真


CH375EV4.c里有一段看不明白 if ( DISK_BUFFER[0] != 0xEB && DISK_BUFFER[0] != 0xE9 ) { /* 不是邏輯引導(dǎo)扇區(qū) */ DiskStart = DISK_BUFFER[0x1C6] | (UINT16)DISK_BUFFER[0x1C7] << 8 | (UINT32)DISK_BUFFER[0x1C8] << 16 | (UINT32)DISK_BUFFER[0x1C9] << 24; Status = mReadSector( DiskStart, 1, DISK_BUFFER ); /* 根據(jù)新的起始扇區(qū)號(hào)讀取邏輯盤引導(dǎo)信息 */ if ( Status != 0 ) return( Status ); }

其中DISK_BUFFER[0] != 0xEB && DISK_BUFFER[0] != 0xE9 這2個(gè)判斷條件是與的關(guān)系,一個(gè)RAM怎么會(huì)等于2個(gè)值?這判斷不是肯定不成立嗎?


DISK_BUFFER中是0號(hào)扇區(qū)的內(nèi)容,在FAT文件系統(tǒng)中,0號(hào)扇區(qū)的首字節(jié)可能是0xEB或0xE9 如果該位置的內(nèi)容既不為0xEB也不為0xE9,則該扇區(qū)就不是邏輯引導(dǎo)扇區(qū)


這個(gè)是文件系統(tǒng)中規(guī)定的:邏輯引導(dǎo)扇區(qū)的首字節(jié)可以是0xEB或者0xE9,只不過現(xiàn)在的U盤中在邏輯引導(dǎo)扇區(qū)的首字節(jié)用0xEB比使用0xE9的更普遍.所以這個(gè)語句是沒有問題的. 你想了解的話可以去看看FAT文件系統(tǒng).


呵呵,謝謝各位,邊干活邊研究程序容易出問題,我把!=想成==了,所以覺得很奇怪。 你說的FAT文件系統(tǒng)是指doc里的FAT32那篇文章嗎?我想先了解海量存儲(chǔ)的基礎(chǔ),之前粗略看過《硬盤扇區(qū)讀寫技術(shù)--修復(fù)硬盤與恢復(fù)文件》這篇文章,但由于手上工作較多,沒有很系統(tǒng)的看,結(jié)果看完了幾乎啥都沒有了解到,對(duì)引導(dǎo)區(qū)的相關(guān)信息幾乎不了解。不過今天把CH375跟CH375HF4.c的文件對(duì)照著看了部分,多了解CH375讀寫U盤的方法以及一些引導(dǎo)區(qū)的信息知道。真是非常感謝各位的幫助。


網(wǎng)上找了些資料,還是沒弄懂 DiskStart = DISK_BUFFER[0x1C6] | (UINT16)DISK_BUFFER[0x1C7] << 8 | (UINT32)DISK_BUFFER[0x1C8] << 16 | (UINT32)DISK_BUFFER[0x1C9] << 24; 判斷第1個(gè)扇區(qū)不是引導(dǎo)區(qū)后,從分區(qū)表的第8個(gè)字節(jié)(1C6)起讀的4個(gè)字節(jié)數(shù)據(jù)就可以直接作為U盤的數(shù)據(jù)區(qū)域起始地址了嗎?


偏移地址 01BF ~ 01C1   字節(jié)數(shù) 3   含義分析 分區(qū)的起始地址(磁頭/扇區(qū)/柱面):通常第一分區(qū)的起始地址開始于1磁頭0柱面1扇區(qū),因此這三個(gè)字節(jié)應(yīng)為010100

請(qǐng)問010100是不是應(yīng)該是010001?


01C6 ~ 01C9 該分區(qū)起始邏輯扇區(qū)[在線性尋址方式下的分區(qū)相對(duì)扇區(qū)地址],搜到這個(gè)信息,嘻嘻,大概知道那條語句用來干嘛了,不過010100那個(gè)總覺得有問題,麻煩各位解答一下^_^


void mStopIfError( UINT8 iErrCode ) { /* 如果錯(cuò)誤則停止運(yùn)行并顯示錯(cuò)誤狀態(tài),正式應(yīng)用還需要分析處理 */ if ( iErrCode == 0 ) return; printf( "Error status, %02X\n", (UINT16)iErrCode ); }

運(yùn)行到此語句printf( "Error status, %02X\n", (UINT16)iErrCode );,PC上的仿真軟件是不是就輸出錯(cuò)誤信息并停止仿真器的運(yùn)行?


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

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