USB 讀/寫問題? |
尚未結案
|
kk_9951
一般會員 發表:5 回覆:3 積分:1 註冊:2006-08-30 發送簡訊給我 |
小弟要對USB Port 做讀/寫動作. 目前可以寫出去了,但讀回來只能讀到ASCII 碼, 文字無法讀取
[code cpp] void __fastcall TMainForm::Button8Click(TObject *Sender) { hOut = CreateFile("\\\\?\\USB#Vid_0588&Pid_3987#0&9551&000#{a5dcbf10-6530-11d2-901f-00c04fb951ed}", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); // 開啟 USB port } void USB_SendByte(unsigned char Dat) { DWORD nBytesWritten; ULONG Result; Result = WriteFile(hOut, &Dat, 1,&nBytesWritten,NULL); // 寫一個 byte 到 USB Port } unsigned char USB_ReadByte(void) { BYTE Buffer; DWORD nBytesRead; unsigned char kk; kk = ReadFile(hOut, &Buffer, 1, &nBytesRead, NULL); // 從USB Port 讀一個 byte return Buffer; } 請在此區域輸入程式碼 [/code] 當我 USB_SendByte(0x12) , 再去USB_ReadByte(), 讀到值為 0x12 <=== ok 當我 USB_SendByte(0xC0) , 再去USB_ReadByte(), 讀到值為 0x40 <=== 不是 0xC0 而是 0x40 為什麼讀到 0x40 而不是 0xC0 呢? 關於 ReadFile(); 如果不先執行 USB_SendByte(); 而對USB做Read ,結果程式在 ReadFile(hOut, &Buffer, 1, &nBytesRead, NULL); 會跳不出來 ?? 是否因為 ReadFile 在等待buf 滿呢? 要如何知道 buf 有資料呢? (已解決了) [code cpp] COMSTAT stat; DWORD dwError; ClearCommError(hOut,&dwError,&stat); // <= 用這個來判斷有沒有資料 if(stat.cbInQue > 0) USB_ReadByte(); [/code] 望各位大大協助... 謝謝!! |
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
kk_9951
一般會員 發表:5 回覆:3 積分:1 註冊:2006-08-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |