全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:35714
推到 Plurk!
推到 Facebook!
[<<] [1] [2] [>>]

關於HID裝置開啟並讀寫

答題得分者是:taishyang
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-05 16:56:37 IP:218.211.xxx.xxx 訂閱
請各位高手幫我看一下是否有錯誤
目前可以將HID DEVICE 利用CREATEFILE的方式開啟
IN OUT Address也有抓取到
但是卻無法讀寫
請問大概是何原因呢?
[code cpp]
////////////////////////////////////////////////////////////
// CheckHidDevice()
// 檢查是否有與VID,PID符合的HID 裝置
////////////////////////////////////////////////////////////
bool TLed_HID::CheckHidDevice()
{
DWORD dwIndex;
GUID guid;
HidD_GetHidGuid(&guid);

// 取得所有連結的HID Device interface
HDEVINFO hDeviceInfo = SetupDiGetClassDevs(&guid, NULL, NULL,
DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
if(hDeviceInfo==INVALID_HANDLE_VALUE)
return FALSE;
// 逐一比對HID裝置的VID & PID
dwIndex = 0;
for(dwIndex=0; dwIndex<20; dwIndex )
{
m_hHidOut = GetDeviceHandle(guid, hDeviceInfo, dwIndex,FALSE);
if(m_hHidOut!=INVALID_HANDLE_VALUE)
{
HIDD_ATTRIBUTES att;
// 取得HID attribute.
if(HidD_GetAttributes(m_hHidOut, &att))
{
// 比對VID & PID
if(att.VendorID == m_nVid && att.ProductID == m_nPid)
{
AnsiString strTitle;
strTitle.printf("Hid Led tester : Vid:0xX Pid:0xX"
,att.VendorID,att.ProductID);
Led_HID->Caption = strTitle;
// 取得in 方向的HANDLE
m_hHidIn = GetDeviceHandle(guid, hDeviceInfo, dwIndex,TRUE);
return TRUE;
}
else
{
CloseHandle(m_hHidOut);
m_hHidOut = NULL;
}
}
}
}
return FALSE;
}
///////////////////////////////////////////////////////////////////////
// GetDeviceHandle(GUID guid, HANDLE hDev, DWORD wDevice, BOOL bIn)
// 取得欲連結裝置的HANDLE
// bIn: 傳輸方向, 如果bIn為真則為從HID ==> PC
///////////////////////////////////////////////////////////////////////
HANDLE TLed_HID::GetDeviceHandle(GUID guid, HANDLE hDev, DWORD dwDevice, BOOL bIn)
{
SP_DEVICE_INTERFACE_DATA interfaceDev;
interfaceDev.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
//Get interface
DWORD dwSize = 0;
if(!SetupDiEnumDeviceInterfaces(hDev, NULL, &guid, dwDevice, &interfaceDev)||
SetupDiGetDeviceInterfaceDetail(hDev, &interfaceDev, NULL, 0, &dwSize, NULL))
return INVALID_HANDLE_VALUE;
//Create buffer
SP_INTERFACE_DEVICE_DETAIL_DATA *pDeviceDetail;
pDeviceDetail = (SP_INTERFACE_DEVICE_DETAIL_DATA*)malloc(dwSize);
pDeviceDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
if(!SetupDiGetDeviceInterfaceDetail(hDev, &interfaceDev, pDeviceDetail, dwSize, &dwSize, NULL))
{
free(pDeviceDetail);
return INVALID_HANDLE_VALUE;
}
//Get device handle
HANDLE hDevice;
if(bIn)
{
hDevice = CreateFile(pDeviceDetail->DevicePath,
GENERIC_READ, // read // Device ==> PC
FILE_SHARE_WRITE|FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
0,
NULL);
}
else
{
hDevice = CreateFile(pDeviceDetail->DevicePath,
GENERIC_WRITE, // write // PC ==> Device
FILE_SHARE_WRITE|FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
0,
NULL);
}
free(pDeviceDetail);
return hDevice;
}

////////////////////////////////////////////////////////////
//將資料放入Buffer利用writefile(),寫入USB Device
////////////////////////////////////////////////////////////
bool TLed_HID::SetReport()
{
bool bResult = TRUE;
BYTE byBuf[8];
unsigned long ulBytes = 0;
// we write 2 bytes to output pipe
// the first byte(byBuf[0]) is the report id
// byBuf[1] is the Led data
byBuf[0] = 0; // report ID;
byBuf[1] = m_byLedData;
bResult=WriteFile(m_hHidOut,byBuf,2, &ulBytes,NULL);
return bResult;
}

////////////////////////////////////////////////////////////
//利用Readfile(),收取USB Device回傳資料
////////////////////////////////////////////////////////////
bool TLed_HID::GetReport()
{
bool bResult = TRUE;
BYTE byBufIn[8];
unsigned long ulBytes = 0;
// we read 3 bytes from input pipe
// the first byte(byBufIn[0]) is the report id
// byBufIn[1] is the button data hi byte
// byBufIn[2] is the button data lo byte
// we only use the hi byte for AD.
bResult=ReadFile(m_hHidIn,byBufIn,8,&ulBytes,NULL);
if(bResult)
{
m_byData1 = byBufIn[1];
m_byData2 = byBufIn[2];
}
return bResult;
}
[/code]
編輯記錄
lkap 重新編輯於 2008-11-05 16:57:52, 註解 無‧
lkap 重新編輯於 2008-11-05 19:09:36, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-05 17:04:21 IP:118.169.xxx.xxx 訂閱
好眼熟的程式碼^^
你HID裝置有把資料透過endpoint丟出來嗎?
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-05 19:16:19 IP:218.211.xxx.xxx 訂閱
有的我有透過endpoint丟資料出來
我有抓到一個C#的程式些收傳送都是正常
現在是想用BCB來編寫
這段程式是從義X公司網頁抓下來的
有測試過HID滑鼠也是一樣無法讀寫

有去書局找過書本 也是這樣介紹使用CREATE FILE這幾個Function
來存取USB Device
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-05 20:02:10 IP:118.169.xxx.xxx 訂閱
你Device IN ENDPOINT data length為何?
要跟你的
ReadFile設定的長度一致才行
編輯記錄
taishyang 重新編輯於 2008-11-05 20:10:44, 註解 無‧
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-11-05 20:40:33 IP:60.248.xxx.xxx 訂閱
length = 8
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-11-05 20:56:45 IP:118.169.xxx.xxx 訂閱
HIDD_ATTRIBUTES att;
PHIDP_PREPARSED_DATA pPreData;
HIDP_CAPS cap;

if (HidD_GetAttributes(m_hHidOut, &att)){
if (att.VendorID == m_nVid && att.ProductID == m_nPid){
m_hHidIn = _getDeviceHandle(guid, hDeviceInfo, dwIndex, TRUE);
if (HidD_GetPreparsedData(m_hHidOut, &pPreData)){
if (HidP_GetCaps(pPreData, & cap ) == HIDP_STATUS_SUCCESS){
m_nInReportSize = cap.InputReportByteLength; <-- check這裡的長度為何

編輯記錄
taishyang 重新編輯於 2008-11-05 20:58:05, 註解 無‧
taishyang 重新編輯於 2008-11-05 20:59:01, 註解 無‧
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-11-06 10:00:31 IP:60.248.xxx.xxx 訂閱
感謝副站長的指導
Firmware 傳出九個
所以我修正了陣列大小就可以了
vk8051
一般會員


發表:22
回覆:33
積分:21
註冊:2007-08-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-07-29 21:58:30 IP:114.42.xxx.xxx 訂閱
大大:
請問可以給我這USB HID的程式CODE嗎?
因為我也在研究USB HID的部份,但是才剛開始研究一點都不會,所以可以斗敢要這部份的CODE嗎?
USB HID的開埠和讀寫的部份!!

感恩呀~
===================引 用 lkap 文 章===================
感謝副站長的指導
Firmware 傳出九個
所以我修正了陣列大小就可以了
------
vincent
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-07-29 22:25:23 IP:59.126.xxx.xxx 訂閱
已把網址發到你MAIL
===================引 用 vk8051 文 章===================
大大:
請問可以給我這USB HID的程式CODE嗎?
因為我也在研究USB HID的部份,但是才剛開始研究一點都不會,所以可以斗敢要這部份的CODE嗎?
USB HID的開埠和讀寫的部份!!

感恩呀~
===================引 用 lkap 文 章===================
感謝副站長的指導
Firmware 傳出九個
所以我修正了陣列大小就可以了
vk8051
一般會員


發表:22
回覆:33
積分:21
註冊:2007-08-10

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-07-29 22:42:37 IP:114.42.xxx.xxx 訂閱
感謝~~
===================引 用 lkap 文 章===================
已把網址發到你MAIL
===================引 用 vk8051 文 章===================
大大:
請問可以給我這USB HID的程式CODE嗎?
因為我也在研究USB HID的部份,但是才剛開始研究一點都不會,所以可以斗敢要這部份的CODE嗎?
USB HID的開埠和讀寫的部份!!

感恩呀~
===================引 用 lkap 文 章===================
感謝副站長的指導
Firmware 傳出九個
所以我修正了陣列大小就可以了
------
vincent
boss.tw
高階會員


發表:15
回覆:109
積分:194
註冊:2005-05-17

發送簡訊給我
#11 引用回覆 回覆 發表時間:2009-07-30 06:48:59 IP:122.116.xxx.xxx 訂閱
小弟能否也要一下這部份的資料

===================引 用 lkap 文 章===================
已把網址發到你MAIL
===================引 用 vk8051 文 章===================
大大:
請問可以給我這USB HID的程式CODE嗎?
因為我也在研究USB HID的部份,但是才剛開始研究一點都不會,所以可以斗敢要這部份的CODE嗎?
USB HID的開埠和讀寫的部份!!

感恩呀~
===================引 用 lkap 文 章===================
感謝副站長的指導
Firmware 傳出九個
所以我修正了陣列大小就可以了
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#12 引用回覆 回覆 發表時間:2009-07-30 08:04:50 IP:203.75.xxx.xxx 未訂閱
可否再分享一下呢? +1
===================引 用 boss.tw 文 章===================
小弟能否也要一下這部份的資料

===================引 用 lkap 文 章===================
已把網址發到你MAIL
===================引 用 vk8051 文 章===================
大大:
請問可以給我這USB HID的程式CODE嗎?
因為我也在研究USB HID的部份,但是才剛開始研究一點都不會,所以可以斗敢要這部份的CODE嗎?
USB HID的開埠和讀寫的部份!!

感恩呀~
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#13 引用回覆 回覆 發表時間:2009-07-30 09:00:13 IP:220.228.xxx.xxx 訂閱
都已發至信箱 可以参考該網頁的BCB程式 也有文件說明
===================引 用 GrandRURU 文 章===================
可否再分享一下呢? 1
===================引 用 boss.tw 文 章===================
小弟能否也要一下這部份的資料

===================引 用 lkap 文 章===================
已把網址發到你MAIL
===================引 用 vk8051 文 章===================
大大:
請問可以給我這USB HID的程式CODE嗎?
因為我也在研究USB HID的部份,但是才剛開始研究一點都不會,所以可以斗敢要這部份的CODE嗎?
USB HID的開埠和讀寫的部份!!

感恩呀~
vk8051
一般會員


發表:22
回覆:33
積分:21
註冊:2007-08-10

發送簡訊給我
#14 引用回覆 回覆 發表時間:2009-07-30 16:42:41 IP:220.130.xxx.xxx 訂閱
請問前輩,我在上面的程式中找不到現在這段的部份,請問這段跟最上面的部份是同一個程式嗎?


===================引 用 taishyang 文 章===================
HIDD_ATTRIBUTES att;
PHIDP_PREPARSED_DATA pPreData;
HIDP_CAPS cap;

if (HidD_GetAttributes(m_hHidOut, &att)){
if (att.VendorID == m_nVid && att.ProductID == m_nPid){
m_hHidIn = _getDeviceHandle(guid, hDeviceInfo, dwIndex, TRUE);
if (HidD_GetPreparsedData(m_hHidOut, &pPreData)){
if (HidP_GetCaps(pPreData, & cap ) == HIDP_STATUS_SUCCESS){
m_nInReportSize = cap.InputReportByteLength; <-- check這裡的長度為何

------
vincent
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#15 引用回覆 回覆 發表時間:2009-07-30 17:06:30 IP:220.228.xxx.xxx 訂閱
我沒看到你那部份的程式
===================引 用 vk8051 文 章===================
請問前輩,我在上面的程式中找不到現在這段的部份,請問這段跟最上面的部份是同一個程式嗎?


===================引 用 taishyang 文 章===================
HIDD_ATTRIBUTES att;
PHIDP_PREPARSED_DATA pPreData;
HIDP_CAPS cap;

if (HidD_GetAttributes(m_hHidOut, &att)){
if (att.VendorID == m_nVid && att.ProductID == m_nPid){
m_hHidIn = _getDeviceHandle(guid, hDeviceInfo, dwIndex, TRUE);
if (HidD_GetPreparsedData(m_hHidOut, &pPreData)){
if (HidP_GetCaps(pPreData, & cap ) == HIDP_STATUS_SUCCESS){
m_nInReportSize = cap.InputReportByteLength; <-- check這裡的長度為何

vk8051
一般會員


發表:22
回覆:33
積分:21
註冊:2007-08-10

發送簡訊給我
#16 引用回覆 回覆 發表時間:2009-07-30 17:17:24 IP:220.130.xxx.xxx 訂閱
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include
#include
#include
#include
extern "C"
{
#include "hid_ddk_inc\hidsdi.h"
}
#include
#include "main.h"
//#include "THidthread.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TLed_HID *Led_HID;
//---------------------------------------------------------------------------
__fastcall TLed_HID::TLed_HID(TComponent* Owner)
: TForm(Owner)
{
m_bGetDevice = FALSE;
}
//---------------------------------------------------------------------------
void __fastcall TLed_HID::BtnGetDeviceClick(TObject *Sender)
{
AnsiString strTitle;
m_nVid = EditVid->Text.ToInt();
m_nPid = EditPid->Text.ToInt();
// If not get device yet! Try to connect it.
if( !m_bGetDevice )
{
if( !m_nVid || !m_nPid)
{
ShowMessage("Invalid Vid or Pid!");
return;
}
m_bGetDevice = CheckHidDevice();
if( m_bGetDevice == 0)
{
ShowMessage("No device find!");
return;
}
}
if(!m_bRunning)
{
strTitle = "Stop" ;
BtnGetDevice->Caption = strTitle;
m_bRunning = TRUE;
}
else
{
strTitle = "Start" ;
BtnGetDevice->Caption = strTitle;
m_bRunning = FALSE;
}
}

////////////////////////////////////////////////////////////
// CheckHidDevice()
// 檢查是否有與VID,PID符合的HID 裝置
////////////////////////////////////////////////////////////
bool TLed_HID::CheckHidDevice()
{
DWORD dwIndex;
GUID guid;
HidD_GetHidGuid(&guid);
// 取得所有連結的HID Device interface
HDEVINFO hDeviceInfo = SetupDiGetClassDevs(&guid, NULL, NULL,DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
if(hDeviceInfo==INVALID_HANDLE_VALUE)
return FALSE;
// 逐一比對HID裝置的VID & PID
dwIndex = 0;
for(dwIndex=0; dwIndex<20; dwIndex )
{
m_hHidOut = GetDeviceHandle(guid, hDeviceInfo, dwIndex,FALSE);
if(m_hHidOut!=INVALID_HANDLE_VALUE)
{
HIDD_ATTRIBUTES att;
// 取得HID attribute.
if(HidD_GetAttributes(m_hHidOut, &att))
{
// 比對VID & PID
if(att.VendorID == m_nVid && att.ProductID == m_nPid)
{
AnsiString strTitle;
strTitle.printf("Hid Led tester : Vid:0xX Pid:0xX",att.VendorID,att.ProductID);
Led_HID->Caption = strTitle;
// 取得in 方向的HANDLE
m_hHidIn = GetDeviceHandle(guid, hDeviceInfo, dwIndex,TRUE);
return TRUE;
}
else
{
CloseHandle(m_hHidOut);
m_hHidOut = NULL;
}
}
}
}
return FALSE;
}
///////////////////////////////////////////////////////////////////////
// GetDeviceHandle(GUID guid, HANDLE hDev, DWORD wDevice, BOOL bIn)
// 取得欲連結裝置的HANDLE
// bIn: 傳輸方向, 如果bIn為真則為從HID ==> PC
///////////////////////////////////////////////////////////////////////
HANDLE TLed_HID::GetDeviceHandle(GUID guid, HANDLE hDev, DWORD dwDevice, BOOL bIn)
{
SP_DEVICE_INTERFACE_DATA interfaceDev;
interfaceDev.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
//Get interface
DWORD dwSize = 0;
if(!SetupDiEnumDeviceInterfaces(hDev, NULL, &guid, dwDevice, &interfaceDev)||
SetupDiGetDeviceInterfaceDetail(hDev, &interfaceDev, NULL, 0, &dwSize, NULL))
return INVALID_HANDLE_VALUE;
//Create buffer
SP_INTERFACE_DEVICE_DETAIL_DATA *pDeviceDetail;
pDeviceDetail = (SP_INTERFACE_DEVICE_DETAIL_DATA*)malloc(dwSize);
pDeviceDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
if(!SetupDiGetDeviceInterfaceDetail(hDev, &interfaceDev, pDeviceDetail, dwSize, &dwSize, NULL))
{
free(pDeviceDetail);
return INVALID_HANDLE_VALUE;
}
//Get device handle
HANDLE hDevice;
if(bIn)
{
hDevice = CreateFile(pDeviceDetail->DevicePath,
GENERIC_READ, // read // Device ==> PC
FILE_SHARE_WRITE|FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
0,
NULL);
}
else
{
hDevice = CreateFile(pDeviceDetail->DevicePath,
GENERIC_WRITE, // write // PC ==> Device
FILE_SHARE_WRITE|FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
0,
NULL);
}
free(pDeviceDetail);
return hDevice;
}
//---------------------------------------------------------------------------

bool TLed_HID::SetReport()
{
bool bResult = TRUE;
BYTE byBuf[8];
unsigned long ulBytes = 0;
// we write 2 bytes to output pipe
// the first byte(byBuf[0]) is the report id
// byBuf[1] is the Led data
byBuf[0] = 0; // report ID;
byBuf[1] = m_byLedData;
bResult=WriteFile(m_hHidOut,byBuf,2, &ulBytes,NULL);
return bResult;
}
//---------------------------------------------------------------------------
bool TLed_HID::GetReport()
{
bool bResult = TRUE;
BYTE byBufIn[8];
unsigned long ulBytes = 0;
// we read 3 bytes from input pipe
// the first byte(byBufIn[0]) is the report id
// byBufIn[1] is the button data hi byte
// byBufIn[2] is the button data lo byte
// we only use the hi byte for AD.
bResult=ReadFile(m_hHidIn,byBufIn,3, &ulBytes,NULL);
if(bResult)
{
m_byData1 = byBufIn[1];
m_byData2 = byBufIn[2];
}
return bResult;
}
//---------------------------------------------------------------------------
void __fastcall TLed_HID::Button1Click(TObject *Sender)
{
AnsiString buff;
unsigned long i;
bool bResult = TRUE;
BYTE byBufIn[32];
unsigned long ulBytes = 32;
//-------------------------------------------------------
bResult=ReadFile(m_hHidIn,byBufIn,32, &ulBytes,NULL);
if( bResult )
{
for( i=0; i<32; i )
{
buff = buff (IntToHex(byBufIn[i], 2) ',');
}//for_i
Memo1->Lines->Add(buff);//在memo元件上顯示收到的碼
}
}
//---------------------------------------------------------------------------
這是我刪除其他LED的部份剩下的程式,然後輸入PID/VID可以抓到滑鼠,但是我用了一個按鈕手動來收USB滑鼠的資料但是一直是00,00
所以可以再麻煩一下指導我一下~是那邊不對嗎

謝謝
===================引 用 lkap 文 章===================
我沒看到你那部份的程式
===================引 用 vk8051 文 章===================
請問前輩,我在上面的程式中找不到現在這段的部份,請問這段跟最上面的部份是同一個程式嗎?


===================引 用 taishyang 文 章===================
HIDD_ATTRIBUTES att;
PHIDP_PREPARSED_DATA pPreData;
HIDP_CAPS cap;

if (HidD_GetAttributes(m_hHidOut, &att)){
if (att.VendorID == m_nVid && att.ProductID == m_nPid){
m_hHidIn = _getDeviceHandle(guid, hDeviceInfo, dwIndex, TRUE);
if (HidD_GetPreparsedData(m_hHidOut, &pPreData)){
if (HidP_GetCaps(pPreData, & cap ) == HIDP_STATUS_SUCCESS){
m_nInReportSize = cap.InputReportByteLength; <-- check這裡的長度為何


------
vincent
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#17 引用回覆 回覆 發表時間:2009-07-30 17:23:11 IP:220.228.xxx.xxx 訂閱
我是抓取自己Firmware送出來的資料,沒抓取過MOUSE的資料
所以我也不曉得
vk8051
一般會員


發表:22
回覆:33
積分:21
註冊:2007-08-10

發送簡訊給我
#18 引用回覆 回覆 發表時間:2009-07-30 17:27:09 IP:220.130.xxx.xxx 訂閱
那請問~
這段範例程式中那邊有出現這段程式~
HIDD_ATTRIBUTES att;
PHIDP_PREPARSED_DATA pPreData;
HIDP_CAPS cap;

if (HidD_GetAttributes(m_hHidOut, &att))
{
if (att.VendorID == m_nVid && att.ProductID == m_nPid)
{
m_hHidIn = _getDeviceHandle(guid, hDeviceInfo, dwIndex, TRUE);
if (HidD_GetPreparsedData(m_hHidOut, &pPreData)){
if (HidP_GetCaps(pPreData, & cap ) == HIDP_STATUS_SUCCESS){
m_nInReportSize = cap.InputReportByteLength; <-- check這裡的長度為何

因為我看不到這一段可以調整資料長度的部份!!
===================引 用 lkap 文 章===================
我是抓取自己Firmware送出來的資料,沒抓取過MOUSE的資料
所以我也不曉得
------
vincent
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#19 引用回覆 回覆 發表時間:2009-07-30 18:19:48 IP:118.169.xxx.xxx 訂閱
自己加上去不就行了^^?

只是檢查長度(因為韌體端已經固定長度了),並不是調整
那段程式只是要確定韌體端EP的資料長度為何
用於之後Read/WriteFile的參數


===================引 用 vk8051 文 章===================
那請問~
這段範例程式中那邊有出現這段程式~
HIDD_ATTRIBUTES att;
PHIDP_PREPARSED_DATA pPreData;
HIDP_CAPS cap;

if (HidD_GetAttributes(m_hHidOut, &att))
{
if (att.VendorID == m_nVid && att.ProductID == m_nPid)
{
m_hHidIn = _getDeviceHandle(guid, hDeviceInfo, dwIndex, TRUE);
if (HidD_GetPreparsedData(m_hHidOut, &pPreData)){
if (HidP_GetCaps(pPreData, & cap ) == HIDP_STATUS_SUCCESS){
m_nInReportSize = cap.InputReportByteLength; <-- check這裡的長度為何

因為我看不到這一段可以調整資料長度的部份!!
vk8051
一般會員


發表:22
回覆:33
積分:21
註冊:2007-08-10

發送簡訊給我
#20 引用回覆 回覆 發表時間:2009-07-30 19:25:14 IP:114.42.xxx.xxx 訂閱
收到~
那我加上試試~
如果我都固定傳36個byte,是不是在real跟write那個涵式直接填上這個固定的長度就可以?
因為我是完全不了解USB,麻煩在指導一下!!

感恩~
===================引 用 taishyang 文 章===================
自己加上去不就行了^^?

只是檢查長度(因為韌體端已經固定長度了),並不是調整
那段程式只是要確定韌體端EP的資料長度為何
用於之後Read/WriteFile的參數


===================引 用 vk8051 文 章===================
那請問~
這段範例程式中那邊有出現這段程式~
HIDD_ATTRIBUTES att;
PHIDP_PREPARSED_DATA pPreData;
HIDP_CAPS cap;

if (HidD_GetAttributes(m_hHidOut, &att))
{
if (att.VendorID == m_nVid && att.ProductID == m_nPid)
{
m_hHidIn = _getDeviceHandle(guid, hDeviceInfo, dwIndex, TRUE);
if (HidD_GetPreparsedData(m_hHidOut, &pPreData)){
if (HidP_GetCaps(pPreData, & cap ) == HIDP_STATUS_SUCCESS){
m_nInReportSize = cap.InputReportByteLength; <-- check這裡的長度為何

因為我看不到這一段可以調整資料長度的部份!!
------
vincent
haaaaa
一般會員


發表:0
回覆:1
積分:0
註冊:2003-06-06

發送簡訊給我
#21 引用回覆 回覆 發表時間:2010-04-20 15:59:58 IP:61.222.xxx.xxx 訂閱
不好意思,大大
最近剛好在研究這個問題
請問可以把網址也寄給我嗎?

感謝
kyp001
一般會員


發表:0
回覆:1
積分:0
註冊:2011-01-13

發送簡訊給我
#22 引用回覆 回覆 發表時間:2011-01-17 09:13:50 IP:220.133.xxx.xxx 訂閱
我也在研究HID,是不是可以將檔案寄給我?
謝謝!!
------
Robert Kao
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#23 引用回覆 回覆 發表時間:2011-07-14 10:10:25 IP:180.217.xxx.xxx 訂閱
都已發至信箱 可以参考該網頁的BCB程式 也有文件說明
===================引 用 haaaaa 文 章===================
不好意思,大大
最近剛好在研究這個問題
請問可以把網址也寄給我嗎?

感謝
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#24 引用回覆 回覆 發表時間:2011-07-14 10:11:51 IP:180.217.xxx.xxx 訂閱
都已發至信箱 可以参考該網頁的BCB程式 也有文件說明
===================引 用 kyp001 文 章===================
我也在研究HID,是不是可以將檔案寄給我?
謝謝!!
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#25 引用回覆 回覆 發表時間:2011-07-14 10:40:07 IP:60.249.xxx.xxx 未訂閱

可否再分享一下呢? 1

thanks a lot ~

===================引 用 lkap 文 章===================
都已發至信箱 可以参考該網頁的BCB程式 也有文件說明
===================引 用 kyp001 文 章===================
我也在研究HID,是不是可以將檔案寄給我?
謝謝!!
編輯記錄
salo0610 重新編輯於 2011-07-13 20:41:19, 註解 無‧
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#26 引用回覆 回覆 發表時間:2011-07-14 10:50:46 IP:180.217.xxx.xxx 訂閱
都已發至信箱 可以参考該網頁的BCB程式 也有文件說明
===================引 用 salo0610 文 章===================

可否再分享一下呢? 1

thanks a lot ~

===================引 用 lkap 文 章===================
都已發至信箱 可以参考該網頁的BCB程式 也有文件說明
===================引 用 kyp001 文 章===================
我也在研究HID,是不是可以將檔案寄給我?
謝謝!!
iandergan
一般會員


發表:0
回覆:1
積分:0
註冊:2011-07-18

發送簡訊給我
#27 引用回覆 回覆 發表時間:2011-07-18 17:49:49 IP:59.125.xxx.xxx 訂閱
最近想研究研究HID 功能 可否分享一下
謝謝
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#28 引用回覆 回覆 發表時間:2011-07-18 19:44:57 IP:180.217.xxx.xxx 訂閱
已發至信箱 可以参考該網頁的BCB程式 也有文件說明
===================引 用 iandergan 文 章===================
最近想研究研究HID 功能 可否分享一下
謝謝
ANDY8C
資深會員


發表:114
回覆:582
積分:299
註冊:2006-10-29

發送簡訊給我
#29 引用回覆 回覆 發表時間:2011-07-20 22:00:18 IP:210.66.xxx.xxx 訂閱
 
可否也給我一份
謝謝您


------
---------------------------------------
偶爾才來 KTOP ,交流條碼問題,在 FB [條碼標籤達人] 社團留言,感恩.
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#30 引用回覆 回覆 發表時間:2011-07-20 22:09:49 IP:114.41.xxx.xxx 訂閱
已發至信箱 可以参考該網頁的BCB程式 也有文件說明
===================引 用 ANDY8C 文 章===================

可否也給我一份
謝謝您


marky1
一般會員


發表:17
回覆:29
積分:9
註冊:2003-03-19

發送簡訊給我
#31 引用回覆 回覆 發表時間:2011-08-09 10:26:38 IP:113.196.xxx.xxx 訂閱
您好,可否也給我一份,感謝~~
[<<] [1] [2] [>>]
系統時間:2024-04-18 21:22:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!