用VC 實現USB介面讀寫資料的程式

2021-05-23 02:01:02 字數 2716 閱讀 6487

用vc++實現usb介面讀寫資料的程式 收藏

用vc++實現usb介面讀寫資料的程式

使用乙個guidguidhid_1查詢並開啟乙個usb裝置

extern "c" int pascal searchusbdevice()

// 取得乙個該guid相關的裝置資訊集控制代碼

hdevinfoset = ::setupdigetclassdevs((lpguid)&guidhid_1,//guid_class_usb_device, // class guid

null, // 無關鍵字

null, // 不指定父視窗控制代碼

digcf_present | digcf_deviceinte***ce); // 目前存在的裝置

// 失敗...

if (hdevinfoset == invalid_handle_value)

// 申請裝置介面資料空間

ncount = 0;

bresult = true;

for (i=0; i< 34; i++)

sp_device_inte***ce_data ifdata;

// 裝置序號=0,1,2... 逐一測試裝置介面,到失敗為止

while (bresult)

pdetail = (psp_inte***ce_device_detail_data)::globalalloc(lmem_zeroinit, predictedlength);

pdetail->cbsize = sizeof(sp_device_inte***ce_detail_data);

bresult = setupdigetinte***cedevicedetail(

hdevinfoset, // 裝置資訊集控制代碼

&ifdata, // 裝置介面資訊

pdetail, // 裝置介面細節(裝置路徑)

predictedlength, // 輸出緩衝區大小

&requiredlength, // 不需計算輸出緩衝區大小(直接用設定值)

null); // 不需額外的裝置描述

if (bresult)

ch[17]='/0';

if (strcmp(ch,"vid_0471&pid_0666")==0)//比較版本號,防止意外出錯

write_os.hevent = createevent( null, // no security

true, // explicit reset req

false, // initial event reset

null ) ; // no name

if (null == write_os.hevent)

read_os.hevent = createevent( null, // no security

true, // explicit reset req

false, // initial event reset

null ) ; // no name

if (read_os.hevent == null)

write_os.hevent = createevent( null, // no security

true, // explicit reset req

false, // initial event reset

null ) ; // no name

if (null == write_os.hevent)

// 關閉裝置資訊集控制代碼

::setupdidestroydeviceinfolist(hdevinfoset);

idevicecount = ncount;

return ncount;

} // 寫

bool writestr(char *buf,int buflen, int index)

div_result = div(buflen, 58);

if (div_result.rem == 0)

else

for (i=0; i", dwerror ) ;

outputdebugstring(szerror);

clearcommerror(m_gphdcom[index], &dwerrorflags, &comstat ) ;

if (dwerrorflags >0) }

else

return false;

} }

if (i != packet-1) }

} return true;

} // 讀

int readstr(char *buf,int nmaxlength, int index)

// only try to read number of bytes in queue

clearcommerror(m_gphdcom[index], &dwerrorflags, &comstat) ;

//dwlength = min( (dword) nmaxlength, comstat.cbinque ) ;

if (dwerrorflags >0) }

purgecomm(m_gphdcom[index],purge_rxclear|purge_txclear);

} }

return dwlength;

用VC 實現USB介面讀寫資料的程式

使用乙個guidguidhid 1查詢並開啟乙個usb裝置 extern c int pascal searchusbdevice 取得乙個該guid相關的裝置資訊集控制代碼 hdevinfoset setupdigetclassdevs lpguid guidhid 1,guid class us...

用VC對USB口的開啟讀寫操作

usb口的開啟讀寫操作 程式的通用性是很好的,不同的usb只需修改不同的guid 至於除錯,你怎麼除錯串列埠程式就怎麼除錯usb程式,大小方面一次性傳送和接受資料不大於64個位元組.這個可能和usb裝置有關 使用乙個guidguidhid 1查詢並開啟乙個usb裝置 extern c int pas...

VC HIDAPI實現USB資料讀寫

目錄 引入hidapi 主要函式 初始化和退出 hid enumerate hid open 讀資料寫資料 hidapi是乙個開源的c語言實現的usb通訊庫,支援linux,mac,windows系統,但是也有一段時間沒有更新了。在windows系統上的實現是依賴winusb實現的 github 位...