375標(biāo)準(zhǔn)模塊現(xiàn)在可以工作了,奇怪的是執(zhí)行完命令: mCmdParam.Write.mSectorCount = 0x1; // 寫入一個(gè)扇區(qū)512字節(jié) i = ExecCommandBuf( CMD_FileWrite, 1, DATA_BUF ); //向文件寫入數(shù)據(jù) mStopIfError( i ); (其中 DATA_BUF 是數(shù)組名字) U盤中產(chǎn)生了文件,但是沒(méi)有寫入內(nèi)容,文件是空的,這是怎么回事? 生成新文件的命令如下: memcpy( mCmdParam.Create.mPathName, "\\NEWFILE.TXT", MAX_PATH_LEN ); //新文件名,在根目錄下 i = ExecCommand( CMD_FileCreate, MAX_PATH_LEN ); // 新建文件并打開,如果文件已經(jīng)存在則先刪除后再新建 mStopIfError( i ); 可以正確產(chǎn)生文件名為NEWFILE的txt文件,但是文件中什么也沒(méi)有
最后你更新文件長(zhǎng)度的時(shí)候有沒(méi)有更新?你可以選擇自動(dòng)更新和手動(dòng)更新,如果是自動(dòng)更新的話,那么數(shù)據(jù)長(zhǎng)度是512倍數(shù),如果是手動(dòng)更新的話,一定要知道你寫入的字節(jié)數(shù),這個(gè)可能和你更新文件長(zhǎng)度有關(guān)系
在哪手動(dòng)更新,是更改“mCmdParam.Modify.mFileSize = NewSize;”嗎?改變其大小嗎?我知道文件有多少子節(jié)?
就是這個(gè)
試過(guò)了,不行。有個(gè)問(wèn)題,MAX_PATH_LEN=32, struct { unsigned char mLastStatus;//* 返回: 上次的操作狀態(tài) */ unsigned char mDiskStatus;//* 返回: 磁盤及文件狀態(tài) */ unsigned char mIntStatus;//* 返回: CH375操作的中斷狀態(tài) */ unsigned char reserved; unsigned long mFileSize; //* 返回: 當(dāng)前文件的長(zhǎng)度 */ unsigned long mCurrentOffset;//* 返回: 當(dāng)前文件指針,當(dāng)前讀寫位置的字節(jié)偏移 */ } Status; Status的前4個(gè)變量就有32個(gè)字節(jié),mFileSize是不是出了范圍,不起作用了。我的生成的文件大小居然為1G,這顯然不對(duì)
我改過(guò)了“mCmdParam.Modify.mFileSize = 0x00000040”但是結(jié)果還是一樣的,打開文件時(shí)提示說(shuō)文件太長(zhǎng),無(wú)法用記事本打開,查看變量mCmdParam.Modify.mFileSize的值時(shí),發(fā)現(xiàn)其并沒(méi)有改過(guò)來(lái),還是原來(lái)的值0x00160100,沒(méi)有更改過(guò)來(lái),這是怎么回事呢?
你寫一個(gè)扇區(qū)的話,那么長(zhǎng)度應(yīng)該為0X200
文件大小變成了128kb,打開的時(shí)候還是有問(wèn)題,提示說(shuō)“文件或目錄\NEWFILE.TXT已損壞且無(wú)法讀取”,怎么解決?
還有什么地方需要修改嗎?我是直接創(chuàng)建新文件、寫入數(shù)據(jù)、修改參數(shù)、關(guān)閉文件的順序來(lái)操作的
你把程序發(fā)到:tech@wch.cn,應(yīng)該是你的程序上面沒(méi)控制好,你要不先用我們例子程序試下看可以不可以
好的,謝謝!跳線可以生成演示文件,375模塊沒(méi)問(wèn)題,應(yīng)該是程序的關(guān)系
那你在接到計(jì)算機(jī)上面看下用我們模塊調(diào)試工具來(lái)調(diào)試你的模塊看可以不可以運(yùn)行
出現(xiàn)這個(gè)問(wèn)題有可能是你的模塊配置有點(diǎn)問(wèn)題,你如果使用的不是51單片機(jī)的話,例如AVR的單片機(jī),那么你就要將模塊配置為小端格式才可以操作