Ⅰ 怎樣用vc通過USB介面讀取數據,該如何解決
我覺得過程挺對的阿,一般都需要設備驅動提供API函數,或者基於一定的架構開發的介面函數才能訪問設備讀取數據,比如BDA或者AVStream設備。
「讀數據之前要給接受變數分配足夠的內存空間否則會接受不到數據」,有些問題,因為有些USB設備驅動會做緩沖,如果都取速度慢的話,會有數據丟失,但應該可以接收到數據。
不知道你用的是什麼類型的設備?
Ⅱ 如何用VC編寫實現USB設備的讀寫操作
USB是一種支持在USB主機和USB設備之間進行串列數據傳輸的通信協議。主機作為匯流排的主叫方,採用兩種信令模式:全速模式12Mb/s和低速模式1.5Mb/s。USB使用四種數據傳輸方式:控制傳輸(control)、中斷傳輸(interrupt)、批量傳輸(bulk)及等時...
Ⅲ 用VC 實現USB通信
我來說下我做過的USB通信,我沒有做過DSP跟上位機的通信,我只做過ARM類的STM32跟上位機的數據傳遞,雖然做過但是也不是很 懂,只是略知一二,我來說說我怎麼做的吧,我是這么實現的:
USB是個很復雜的協議,你如果完全搞懂,我估計沒有幾個月專心鑽研是不行的,但是如果只是能實現你的這個功能,我估計不是很復雜。
首先來說說USB通信:
USB通信傳輸方式分為四種:控制,中斷,批量,同步傳輸四種,這個你可以看看網上資料,然後我用STM32通信,因為數據量不是很大,我用的是中斷傳輸方式,但是DSP數據量應該會比較大,不知道中斷傳輸行不行,但是一般問題不大。
傳輸方式說完了,再說說USB設備類型,你每次插usb設備到電腦上的時候就會有提示,這是一個什麼設備,USB設備類型就是說的這個意思,是滑鼠還是鍵盤還是別的什麼的,如果你選用標準的類,你就不用自己寫上位機(PC)的驅動程序,但是如果不用標準的類,就是用自定義的類就要自己寫上層的設備驅動程序,就是所謂的DDK,WDM,WDF什麼的,你沒寫過這方面的還真有點棘手,但是也不一定要寫驅動程序,你可以試試有個類叫HID類,這個類在USB通信的時候用的還挺多的,不過這個類也有缺點,這個地方還要說一點,USB還分低速,全速,高速三種,不太了解DSP,不知道他支持什麼模式,但是USB2.0的全速應該至少可以支持的。
USB2.0全速模式HID用中斷方式每秒最多可以傳輸64KB的數據,不知道能不能達到你的要求,但是我估計一般問題不大了,如果你這歀DSP能支持高速模式,每秒用這種方式可以傳輸高達22MB的數據,這個速度一般問題不大了。
你可以照著我說的思路,去網上搜搜人家寫好的程序,肯定有人做過DSP的USB通信,然後你按照自己的要求改一改,主要應該是USB的設備描述符部分要自己修改,然後可能還要根據自己的電路改改配置什麼的,上位機軟體網上有源代碼的多的是,然後自己摸索摸索,我估計你要是編程水平還可以的話,只是摸索USB,一兩個星期完全沒有問題,祝你好運!
Ⅳ 各位大俠,在vc++下如何編程式控制制USB口,即通過USB口收發數據
publicstaticStringreverse1(Stringstr)
{
returnnewStringBuffer(str).reverse().toString();
}
2.最常用的方法:
publicstaticStringreverse3(Strings)
{
char[]array=s.toCharArray();
Stringreverse="";//注意這是空串,不是null
for(inti=array.length-1;i>=0;i--)
reverse+=array[i];
returnreverse;
}
3.常用方法的變形:
publicstaticStringreverse2(Strings)
{
intlength=s.length();
Stringreverse="";//注意這是空串,不是null
for(inti=0;i<length;i++)
reverse=s.charAt(i)+reverse;//在字元串前面連接,而非常見的後面
returnreverse;
}
4.C語言中常用的方法:
publicstaticStringreverse5(Stringorig)
{
char[]s=orig.toCharArray();
intn=s.length-1;
inthalfLength=n/2;
for(inti=0;i<=halfLength;i++){
chartemp=s[i];
s[i]=s[n-i];
s[n-i]=temp;
}
returnnewString(s);//知道char數組和String相互轉化
}
Ⅳ 如何用VC++編寫USB通信程序
你要首先知道要控制的USB設備的USB控制晶元的型號,根據USB控制晶元確定控制USB設備的驅動程序,然後找相關的USB控制晶元型號的資料,資料裡面應該包括關於驅動程序的開發介面,知道開發介面後再使用VC引入,調用。
Ⅵ 用vc++實現usb介面通信編程的一般步驟
我來說下我做過的USB通信,我沒有做過DSP跟上位機的通信,我只做過ARM類的STM32跟上位機的數據傳遞,雖然做過但是也不是很 懂,只是略知一二,我來說說我怎麼做的吧,我是這么實現的:
USB是個很復雜的協議,你如果完全搞懂,我估計沒有幾個月專心鑽研是不行的,但是如果只是能實現你的這個功能,我估計不是很復雜。
首先來說說USB通信:
USB通信傳輸方式分為四種:控制,中斷,批量,同步傳輸四種,這個你可以看看網上資料,然後我用STM32通信,因為數據量不是很大,我用的是中斷傳輸方式,但是DSP數據量應該會比較大,不知道中斷傳輸行不行,但是一般問題不大。
傳輸方式說完了,再說說USB設備類型,你每次插usb設備到電腦上的時候就會有提示,這是一個什麼設備,USB設備類型就是說的這個意思,是滑鼠還是鍵盤還是別的什麼的,如果你選用標準的類,你就不用自己寫上位機(PC)的驅動程序,但是如果不用標準的類,就是用自定義的類就要自己寫上層的設備驅動程序,就是所謂的DDK,WDM,WDF什麼的,你沒寫過這方面的還真有點棘手,但是也不一定要寫驅動程序,你可以試試有個類叫HID類,這個類在USB通信的時候用的還挺多的,不過這個類也有缺點,這個地方還要說一點,USB還分低速,全速,高速三種,不太了解DSP,不知道他支持什麼模式,但是USB2.0的全速應該至少可以支持的。
USB2.0全速模式HID用中斷方式每秒最多可以傳輸64KB的數據,不知道能不能達到你的要求,但是我估計一般問題不大了,如果你這歀DSP能支持高速模式,每秒用這種方式可以傳輸高達22MB的數據,這個速度一般問題不大了。
你可以照著我說的思路,去網上搜搜人家寫好的程序,肯定有人做過DSP的USB通信,然後你按照自己的要求改一改,主要應該是USB的設備描述符部分要自己修改,然後可能還要根據自己的電路改改配置什麼的,上位機軟體網上有源代碼的多的是,然後自己摸索摸索,我估計你要是編程水平還可以的話,只是摸索USB,一兩個星期完全沒有問題,祝你好運!
Ⅶ USB設備已裝驅動,且知道其VID,PID,VC該怎麼編程實現數據傳送
看看具體是什麼USB類的設備,通過MDK,DDK或SDK中的設備管理器族函數枚舉設備的VID和PID,尋找到vid和pid就可以通過相關函數得到這個設備的符號名,然後通過相關函數比如openfile得到設備文件的讀寫句柄來通過驅動定義的函數或readfile和writefie來讀寫數據。
Ⅷ vc++實現控制USB設備啟用與否
XP下可以使用注冊表來實現,但 win7 及以上就無效了,此時可以使用重命名 USB 驅動的方式來進行,參考代碼如下
BeginWaitCursor();
//1修改注冊表
DWORDdwState=0x00000004;
LONGlStatus=SHSetValue(
HKEY_LOCAL_MACHINE,
_T("SYSTEM\CurrentControlSet\Services\USBSTOR"),
_T("Start"),
REG_DWORD,
&dwState,
sizeof(DWORD)
);
if(lStatus==ERROR_SUCCESS){
SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,0,0);
}
else
{
m_msg=_T("注冊表更新失敗,請嘗試右鍵[使用管理員許可權]啟動");
UpdateData(FALSE);
EndWaitCursor();
return;
}
//2重命名文件
TCHARszTempPath[MAX_PATH];
CString_WindowsDir;
::GetWindowsDirectory(szTempPath,MAX_PATH);
_WindowsDir=CString(szTempPath);
if(_WindowsDir.GetAt(_WindowsDir.GetLength()-1)!=_T('\'))
_WindowsDir+=_T('\');
TCHARszFrom[MAX_PATH]={0},szTo[MAX_PATH]={0};
_tcscpy(szFrom,szTempPath);
_tcscat(szFrom,_T("\inf\usbstor.inf"));
_tcscpy(szTo,szTempPath);
_tcscat(szTo,_T("\inf\usbstor.inf.disabled"));
SHFILEOPSTRUCTFileOp;
FileOp.hwnd=NULL;
FileOp.wFunc=FO_RENAME;
FileOp.pFrom=szFrom;
FileOp.pTo=szTo;
FileOp.fFlags=FOF_SILENT;
if(SHFileOperation(&FileOp)!=0)
{
m_msg=_T("重命名USB驅動文件失敗");
UpdateData(FALSE);
EndWaitCursor();
return;
}
_tcscpy(szFrom,szTempPath);
_tcscat(szFrom,_T("\inf\usbstor.pnf"));
_tcscpy(szTo,szTempPath);
_tcscat(szTo,_T("\inf\usbstor.pnf.disabled"));
FileOp.hwnd=NULL;
FileOp.wFunc=FO_RENAME;
FileOp.pFrom=szFrom;
FileOp.pTo=szTo;
FileOp.fFlags=FOF_SILENT;
if(SHFileOperation(&FileOp)!=0)
{
m_msg=_T("重命名USB驅動文件失敗");
UpdateData(FALSE);
EndWaitCursor();
return;
}
if(RestartExplorer())
m_msg=_T("USB存儲設備已經被禁止使用!");
else
m_msg=_T("重啟Explorer失敗,請嘗試手工Ctrl+Alt+Del在任務管理器後新建explorer任務");
UpdateData(FALSE);
EndWaitCursor();
Ⅸ 如何使用VC實現USB通訊
電腦迷你USB藍牙2.0適配器 免驅動 可以在拍拍 里去找下 看 !全世界最小 V2.0版本+EDR高速 免驅動 藍牙適配器
http://dx.anxz.com/www.anxz.com/IVT_BlueSoleil.rar 下載驅動詳細說明: 支持多藍牙設備連接
CSR蕊片 全免驅動 真正內置陶瓷天線 閃綠色光
實現電腦與其他藍牙協議設備(藍牙耳機/滑鼠/鍵盤/數碼相機/傳真機/列印機等)的無線連接進行音頻、數據、圖像的傳輸,另外可組建個人區域網實現數據的共享及無線上網。
其他功能:藍牙撥號網路服務、藍牙串列埠服務、藍牙信息同步服務。 產品簡介:
* 藍牙標准V2.0+EDR
* 支持藍牙CLASS 1/2/3
* USB介面:USB2.0標准,向下兼容1.0/1.1標准
* 操作頻帶在 2.4GHz 至 2.483GHz 之間,採用 FHSS (跳頻展頻) 技術
* 開放空間下的操作范圍約為20米
* 直覺式的軟體操作介面,無須繁雜的設定
* 適用於 Windows 98SE/ME/2000/XP/2003/VISTA或 Mac OS X 10.2.6以上之操作系統
*在WindowsXP SP2/VISTA下可不驅動,方便攜帶!
* 數據傳輸率最高可達3Mbps產品特點
* 靈敏度 < -85 dBM
*安全性:內置密碼及使用者授權
*電源:USB介面直接供電
* PC/Mac:藍牙無線撥號上網 (需藍芽手機等裝置配合)
* PC:藍牙無線區域網絡,可同時讓八台配有藍牙裝置的計算機自成一小型無線網路,也可通過此功能透過藍牙無線基地台或插有藍牙連結器的計算機來上網(被連結的基地台或計算機必須已經連上網際網路)
* PC:藍牙無線傳真 (計算機需安裝有傳真軟體)
* PC/Mac:藍牙無線檔案傳輸
* PC/Mac:藍牙無線數據同步化
* PC:支持藍牙虛擬串列埠
* PC:支持藍牙無線列印
* PC:支援藍牙耳機
* PC/Mac:支持藍牙人因介面(藍牙滑鼠及藍牙鍵盤)
驅動方式:這款藍牙有2種方式可選,「全免驅動」(不用事先安裝) XP/Vista下即插即用-直接調用系統自帶藍牙驅動。提醒:使用系統驅動只能傳輸數據,不支持音頻,因為微軟的藍牙驅動沒有虛擬音效卡功能,只有在安裝了原廠配備的「IVT光碟驅動」後,藍牙才能支持音頻。光碟里是性能最穩定的合法授權「正版IVT2.7」完美支持Vista支持藍牙立體聲使用方法:
1.拿出隨機所配光碟插入光碟機,選擇語言為中文並安裝驅動
2.點擊桌面剛安裝的程序之後插入藍牙適配器
3.手機藍牙功能打開為自動
4.點電腦里的程序中間那個球按滑鼠右鍵選搜索設備
5.點擊搜索到的設備選配對(輸入111,搜索到的設備也輸入111).
6.點上面顯示黃色的文件傳輸或對象交換可以傳輸了.
Ⅹ 我想用VC++6.0編寫一個讀取USB介面數據並進行實時顯示的上位機程序,求具體的方法,要具體的越詳細越好
下圖為單片機P1口與8個LED燈的連接方法,為高電平亮低電平滅。 上位機對最佳答案的評論我想求一份EDA設計要求是:感測器與信號處理系統的設計、