用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 位...