讀取hid dll使用問題 |
尚未結案
|
c7904520
一般會員 發表:2 回覆:1 積分:0 註冊:2009-11-09 發送簡訊給我 |
各位大大好!
小弟第一次接觸usb hid的裝置,手上有讀寫此usb的dll在宣告上遇到些問題 望各位大大幫忙,在此先謝謝!!! DLL的FUNTION : BOOL ReadUSB(HANDLE hDevice,LPVOID pData, DWORD nLen,LPOVERLAPPED pOV,DWORD dwTime); 在DELPHI我是這樣的使用,不知道是否正確。[code delphi] unit HID_DLL_Test;interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShellAPI, Winsock, IdWinSock2; function FindUSB(dwVID, dwPID: DWORD; bSync: BOOL): tHANDLE; stdcall;external 'HIDApi.dll'; function CloseHIDDevice(hDevice: tHANDLE): BOOL; STDCALL; EXTERNAL 'hidaPI.DLL'; function ReadUSB(hDevice: THANDLE; pData: pointer; nLen: DWORD; pOV: LPWSAOVERLAPPED; dwTime: DWORD): BOOL; external 'HIDApi.dll'; procedure TForm1.Button1Click(Sender: TObject); var i: integer; p: pointer; ReadState: boolean; Buf: array [0 .. 8] of byte; pOV: PWSAOverlapped; begin //p := addr(Buf); Memo1.Lines.add('暫存區長度 :'); Memo1.Lines.add(format('%d',[sizeof(Buf)])); fillMemory(@Buf, SizeOf(Buf), 0); // 記憶體set 0 Memo1.Lines.add('暫存區初始化: '); Memo1.Lines.add(format('%0.2X %0.2X %0.2X %0.2X %0.2X %0.2X %0.2X %0.2X %0.2X', [Buf[0], Buf[1], Buf[2], Buf[3], Buf[4], Buf[5], Buf[6], Buf[7], Buf[8]])); hUSB := FindUSB($04D9, $A057, flag); Memo1.Lines.add('USB Handle: ' inttostr(hUSB)); if hUSB >= 32 then begin ReadState := ReadUSB(hUSB, p, sizeof(Buf), nil, 0);// 讀取usb資料 if ReadState then // 讀取成功,顯示讀取的內容 begin Memo1.Lines.add('讀取成功!'); Memo1.Lines.add('回傳值: ' format('%0x %0x %0x %0x %0x %0x %0x %0x %0x', [Buf[0], Buf[1], Buf[2], Buf[3], Buf[4], Buf[5], Buf[6], Buf[7]])); end else begin Memo1.Lines.add('讀取失敗!'); end; end else begin ShowMessage('NO Device!'); end; if CloseHIDDevice(hUSB) then Memo1.Lines.add('USB連線結束!!') ELSE Memo1.Lines.add('結束USB連線失敗!!'); Memo1.Lines.add(''); end;[/code] ReadUSB(hUSB, p, sizeof(Buf), nil, 0)<<<-----------程式執行於此就會發生錯誤 這是錯誤訊息:First chance exception at $74D39617. Exception class EAccessViolation with message 'Access violation at address 74D3F213 in module 'KERNELBASE.dll'. Write of address 0000A057'. Process Project1.exe (14528) 不知道LPOVERLAPPED在delphi 裡是否就是直接宣告 IdWinSock2並且宣告物件為LPWSAOVERLAPPED的型態。這問題已經困擾很久哩,希望各位大大能夠幫忙指點一下,第一次發問若需改進地方,再請各位大大提醒^__^ 在這先謝謝!
------
Delphi新手努力學習中! 取之於網路,回饋於網路! 編輯記錄
c7904520 重新編輯於 2010-11-27 01:06:28, 註解 無‧
c7904520 重新編輯於 2010-11-27 01:11:37, 註解 無‧ c7904520 重新編輯於 2010-11-27 01:12:32, 註解 無‧ c7904520 重新編輯於 2010-11-27 01:14:36, 註解 無‧ c7904520 重新編輯於 2010-11-27 01:15:45, 註解 無‧ c7904520 重新編輯於 2010-11-27 01:17:25, 註解 無‧ c7904520 重新編輯於 2010-11-27 18:57:34, 註解 無‧ c7904520 重新編輯於 2010-11-27 19:00:57, 註解 無‧ c7904520 重新編輯於 2010-11-27 19:11:00, 註解 無‧ c7904520 重新編輯於 2010-11-27 19:12:09, 註解 無‧ c7904520 重新編輯於 2010-11-27 19:15:10, 註解 無‧ c7904520 重新編輯於 2010-11-27 19:15:42, 註解 無‧ c7904520 重新編輯於 2010-11-27 19:18:45, 註解 無‧ c7904520 重新編輯於 2010-11-27 19:21:12, 註解 無‧ c7904520 重新編輯於 2010-11-27 19:21:51, 註解 無‧ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |