USB讀寫問題? |
答題得分者是:bio
|
kenbcb
中階會員 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
|
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
Hi~kenbcb
參考這篇對岸的範例吧~
http://www.cppfans.com/articles/system/bcb_usb_a.asp
|
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
參考一下 【分享】偵測USB裝置插入哪一個USB Port插槽
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=59211
|
bio
一般會員 發表:42 回覆:36 積分:20 註冊:2003-03-05 發送簡訊給我 |
kenbcb 您好
之前有研究過USB,你若要對USB做讀寫動作,要先了解File System喔,而且還包括有FAT12,FAT16,FAT32的區別喔,相信你搜尋一下站內資源應該會找到相關的,在假設你也了解FAT,若只是要做讀和寫動作
我是這樣做,會用到這些function:
先要取得device的handle
HANDLE DISC_device_select(char deviceNo) { ULONG accessMode = 0, shareMode = 0; ULONG length = 0, errorCode = 0, returned = 0, sectorSize = 512; UCHAR string[25]; sprintf((char *)(string),"\\\\.\\%c:",deviceNo); shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE; // default accessMode = GENERIC_WRITE | GENERIC_READ; // default sectorSize = 512; fileFATHandle = CreateFile( (char *) string,accessMode,shareMode,NULL,OPEN_EXISTING,0,NULL); if (fileFATHandle == INVALID_HANDLE_VALUE) { printf("Error opening %s. Error: %d\n", string, errorCode = GetLastError()); // PrintError(errorCode); return NULL; } return fileFATHandle; }接下來就是將USB裡的data讀進來 void HD_read_sector_lba(UCHAR *tmpbuff,int Lba,int nBlock) { memset(tmpbuff,0,2048*nBlock); int addr; addr = Lba*512; FindBuffLen = nBlock*512; setfilepointer(addr); ReadFile( fileFATHandle, // handle to file tmpbuff, // data buffer FindBuffLen, // number of bytes to read &nNumberOfBytesRead, // number of bytes read NULL // lpOverlapped // overlapped buffer ); } //----------------------------------------------------------------- void setfilepointer(ULONG address) { SetFilePointer ( fileFATHandle, // handle to file address, // bytes to move pointer NULL, // bytes to move pointer FILE_BEGIN // starting point ); }至於寫的動作 void FATWriteBuff(int address,UCHAR *tmpbuff,int length) { DWORD dwPos; dwPos = SetFilePointer(fileFATHandle,address,NULL,FILE_BEGIN); LockFile(fileFATHandle,dwPos,0,dwPos nNumberOfBytesRead,0); WriteFile( fileFATHandle, // handle tofile tmpbuff, // data buffer length, // number of bytes to read &nNumberOfBytesRead, // number of bytes read NULL // lpOverlapped // overlapped buffer ); UnlockFile(fileFATHandle,dwPos,0,dwPos nNumberOfBytesRead,0); }這裡我只要表達如何使用createfile(),writefile(),readfile() 至於USB要如何用,你要說明是應用在何處,才能幫你阿 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |