CH559UFI.H中的子程序庫中的程序在哪里看到?

/* 子程序庫中提供的子程序 */

/* 下述子程序中, 文件操作子程序CH559File*和磁盤查詢子程序CH559DiskQuery都可能會用到磁盤數(shù)據(jù)緩沖區(qū)pDISK_BASE_BUF,

? ?并且有可能在pDISK_BASE_BUF中保存了磁盤信息, 所以必須保證pDISK_BASE_BUF不被用于其它用途,

? ?如果RAM較少, 要將pDISK_BASE_BUF臨時(shí)用于其它用途, 那么在臨時(shí)用完后必須調(diào)用CH559DirtyBuffer清除磁盤緩沖區(qū) */

extern ?UINT8 ? CH559GetVer( void ); ? ? ? ?/* 獲取當(dāng)前子程序庫的版本號 */

extern ?void ? ?CH559DirtyBuffer( void ); ? /* 清除磁盤緩沖區(qū) */

extern ?UINT8 ? CH559BulkOnlyCmd( PUINT8X DataBuf ); ? ?/* 執(zhí)行基于BulkOnly協(xié)議的命令 */

extern ?UINT8 ? CH559DiskReady( void ); ? ? /* 查詢磁盤是否準(zhǔn)備好 */

extern ?UINT8 ? CH559AnalyzeError( UINT8 iMode ); ? /* USB操作失敗分析CH559IntStatus返回錯(cuò)誤狀態(tài) */

extern ?UINT8 ? CH559FileOpen( void ); ? ? ?/* 打開文件或者枚舉文件 */

extern ?UINT8 ? CH559FileClose( void ); ? ? /* 關(guān)閉當(dāng)前文件 */

這些函數(shù)在哪里(哪個(gè)文件)可以看到?

U盤文件系統(tǒng)庫以子程序庫的形式提供使用,文件系統(tǒng)庫的使用可以參考U_DISK下各個(gè)EXAM


再請教:UFX庫

CH559ByteWrite()返回 Error: 41 是怎么回事?



頭文件CH559UF?.H中:

#define?ERR_OPEN_DIR?0x41????????/*?指定路徑的目錄被打開?*/

1、檢查U盤的文件系統(tǒng)是否是FAT32

2、將U盤格式化之后直接運(yùn)行EXAM9程序,該程序會新建文件,然后對新建的文件進(jìn)行操作,避免因文件是電腦系統(tǒng)下創(chuàng)建的文件,且具有長文件名的。

3、注意file open時(shí)需要操作的是文件的短文件名,短文件名需符合8+3格式。



問題解決,不符合8+3規(guī)則,謝謝!


U盤數(shù)據(jù):

*S*

00000000000

11111111111

22222222222

33333333333

44444444444

55555555555

66666666666

77777777777

88888888888

99999999999

AAAAAAAAA

BBBBBBBBBB

CCCCCCCCC

DDDDDDDD

EEEEEEEEEEE

FFFFFFFFFFF

*E*

用例程U_DISK\EXAM1 + UFX庫讀取,每次64個(gè)字節(jié),第一次和第二次正確,第三次數(shù)據(jù)錯(cuò)誤,為何?

第一次:

Read Bytes Amount: 64

*S*

00000000000

11111111111

22222222222

33333333333

4444444

第二次:

4444

55555555555

66666666666

77777777777

88888888888

999999

第三次:

USBC9

ADDDDDDDD

EEEEEEEEEEE


UINT8 USBGetData(PUINT8 buf)

{

? ? UINT8 s, i, k, len;? //每次讀n個(gè)字節(jié)

? ? UINT8 TotalCount = fieldlen;

? ? memset(buf, 0, sizeof(buf));

k = 0;

? ? printf("Read Bytes Amount: %02d\n", (UINT16)TotalCount);

? ? while(TotalCount)? ? ? ? ? ? ? ? ? ? ? ?//如果文件比較大,一次讀不完,可以再調(diào)用CH559ByteRead繼續(xù)讀取,文件指針自動向后移動

? ? {

? ? ? ? if(TotalCount > (MAX_PATH_LEN - 1))

? ? ? ? {

? ? ? ? ? ? len = MAX_PATH_LEN - 1;? ? ? ? ? ?//剩余數(shù)據(jù)較多,限制單次讀寫的長度不能超過 sizeof( mCmdParam.Other.mBuffer )

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? ? ? len = TotalCount;? ? ? ? ? ? ? ? ?//最后剩余的字節(jié)數(shù)

? ? ? ? }

? ? ? ? mCmdParam.ByteRead.mByteCount = len;? //請求讀出幾十字節(jié)數(shù)據(jù)

? ? ? ? mCmdParam.ByteRead.mByteBuffer = &buf[k];

? ? ? ? s = CH559ByteRead();? ?? //以字節(jié)為單位讀取數(shù)據(jù)塊,單次讀寫的長度不能超過MAX_BYTE_IO,第二次調(diào)用時(shí)接著剛才的向后讀

? ? ? ? TotalCount -= mCmdParam.ByteRead.mByteCount;? ? ? //計(jì)數(shù),減去當(dāng)前實(shí)際已經(jīng)讀出的字符數(shù)

? ? ? ? for(i = 0; i != mCmdParam.ByteRead.mByteCount; i++)

? ? ? ? {

? ? ? ? ? ? printf("%C", mCmdParam.ByteRead.mByteBuffer[i]);? //顯示讀出的字符

? ? ? ? }

? ? ? ? if(mCmdParam.ByteRead.mByteCount < len)? ?//實(shí)際讀出的字符數(shù)少于要求讀出的字符數(shù),說明已經(jīng)到文件的結(jié)尾

? ? ? ? {

? ? ? ? ? ? printf("\n文件已經(jīng)結(jié)束\n");

? ? ? ? ? ? break;

? ? ? ? }

k += len;

? ? }

? ? printf("\nVerify: ");

? ? printf(buf);

? ? return TotalCount;

}

為何?




image.png????

icon_rar.gifEVT.zip

對EXAM1簡單修改,進(jìn)行了測試,輸出正確,代碼工程和U盤文件均在附件中,可以試試看


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

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