導航:首頁 > 安裝管理 > c判斷usb設備是否連接

c判斷usb設備是否連接

發布時間:2021-08-19 09:23:49

❶ 如何通過枚舉設備來判斷我的USB已經處在連接狀態

您好,一旦獲悉有新設備連接上來,主機就會發送一系列的請求(Resqusts)給設備所掛載到的hub,再由hub建立起一條連接主機(Host)和設備(Device)之間的通信通道。然後主機以控制傳輸(ControlTransfer)的方式,通過端點0(Endpoint0)對設備發送各種請求,設備收到主機發來的請求後回復相應的信息,進行枚舉(Enumerate)操作。所有的USB設備必須支持標准請求(StandardRequests),控制傳輸方式(ControlTransfer)和端點0(Endpoint0)。在講解枚舉之前,先大概說說USB的一種傳輸模式——控制傳輸。這種傳輸在USB中是非常重要的,它要保證數據的正確性,在設備的枚舉過程中都是使用控制傳輸的。控制傳輸分為三個階段:①建立階段。②數據階段。③確認階段。建立(setup)階段:都是由USB主機發起,它是一個setup數據包,裡麵包含一些數據請求的命令以及一些數據。如果建立階段是輸入請求,那麼數據階段就要輸入數據;如果建立階段是輸出請求,那麼數據階段就要輸出數據。如果在數據階段,即便不需要傳送數據,也要發一個0長度的數據包。數據階段過後就是確認階段。確認階段剛好跟數據階段相反,如果是輸入請求,則它是一個輸出數據包;如果是輸出請求,則它是一個輸入數據包。確認階段用來確認數據的正確傳輸。

❷ VB怎麼檢測某個USB硬體設備是否連接

OptionExplicit
"kernel32"Alias"GetDriveTypeA"_
(ByValnDriveAsString)AsLong
"kernel32"Alias"GetLogicalDriveStringsA"_
(ByValnBufferLengthAsLong,ByVallPBufferAsString)AsLong
PrivateSubCommand1_Click()
Timer1.Enabled=True
EndSub
PrivateSubForm_Load()
Label1.Caption=""
Command1.Caption="運行監測"
EndSub

PrivateSubTimer1_Timer()
DimrtnAsString,a,b$(),i%,uAsBoolean,dAsString
DimAllDrivesAsString
AllDrives=Space$(64)'設置緩沖
rtn=GetLogicalDriveStrings(Len(AllDrives),AllDrives)'調用函數得到包含所有驅動器的字元串
AllDrives=Left(AllDrives,rtn)
a=Split(Trim(AllDrives),Chr(0))
ReDimb(UBound(a))
u=False
Fori=0ToUBound(a)-1
b(i)=GetDriveType(a(i))
Ifb(i)<2Orb(i)>6Thenb(i)=1
d=d+Choose(Val(b(i)),"未知類型","移動盤","硬碟","映射盤","光碟機","內存檔")+vbCrLf
Next
Label1.Caption=d
EndSub

❸ 如何判斷一個USB設備的驅動是否可用

你好,1. 使用U盤測試USB埠是否正常可用。
2. 如果U盤可以使用,證明主板的USB埠沒有問題,如果U盤也無法使用可能是這個USB埠有問題了,將鍵盤更換到其他的USB埠再次測試。
3. 使用其他USB鍵盤測試,如果其他的USB鍵盤可用,就可以判斷問題可能出現在這個USB鍵盤上。
4. 其他可能,電腦中病毒導致不認USB口,USB驅動程序沒有正確安裝,主板驅動沒有正常安裝。處理這幾個問題,分別是殺毒,使用驅動精靈重新安裝或升級主板驅動,USB驅動。

❹ 怎樣編寫c語言程序在windows下檢測usb設備的插入求大俠解疑!

正好接觸過這方面的東西,windows有一個檢測USB口狀態的消息循環,當有專USB設備插入或拔出時,屬會向消息隊列寫入一個WM_DEVICECHANG的消息(注意這是xp系統的消息,win7有保護機制,你自己搜索一下解決方法)。
你設計的程序,要寫一個窗口的回調函數,在函數中檢測這個消息,就ok了。

❺ 如何確定哪些 USB 設備已連接到計算機上

關於如何確定哪些USB設備已連接到計算機上,可以根據以下步驟來操作:

第一、在電腦桌內面上找到「我的容電腦」圖標,右擊選擇「屬性」按鈕,如下圖所示:

❻ 如何 查看COM、USB 埠連接了什麼設備

一般上你在設備管理器,看看是否有感嘆或者問號的設置,來判斷這些設備是否連接成功的。

❼ 在linux系統里,如何檢查新插入的USB設備是否被系統識別

方法一:在/etc/init.d/rcS中添加mount -t usbfs none /proc/bus/usb.
方法二:在shell中輸入mount -t usbfs /proc/bus/usb /proc/bus/usb.
前提是在編譯內核時選中usb device filesystem。
#cat /proc/bus/usb /device
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 1, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0001 Rev= 2.06
S: Manufacturer=Linux 2.6.32.2-ltls ohci_hcd
S: Proct=S3C24XX OHCI
S: SerialNumber=s3c24xx
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 4
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 1.25
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms
T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 7 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=160a ProdID=3184 Rev= 2.05
S: Manufacturer=VIA Networking Technologies, Inc.
S: Proct=VNT USB-802.11 Wireless LAN Adapter
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=vntwusb
E: Ad=81(I) Atr=03(Int.) MxPS= 32 Ivl=1ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

❽ usb設備是如何判斷自己連接的是電源還是電腦的

usb設備插座里4條線,其中供電2線、數據2線、缺一不可使插入設備工作。『設備是如何判斷自己連接的是電源還是電腦的?』缺電源設備不能運行、缺數據它不可能讀/寫。當然僅僅用USB口充電另當別論。只要在U口讀/寫數據必須4線正常!缺一不可。 當usb設備插入4線U口座位它有數據線聯通、當usb設備插入2線U口座位(僅僅是充電沒有通訊)電腦和U口晶元是智能的會判斷自己連接的是電源U口還是電腦的U口。
測U口電壓是一項放出非常危險的動作!表筆弄不好就和地短接!造成短路,因為U口的外殼(插入部分鐵套是接地的)和測試表筆、5+實在里的太近,緊小心慢小心還是碰著咯...測試前把表筆尖部露出,其它部分套絕緣...

❾ C語言怎麼實現USB設備的檢查,檢查到那些USB信息

數據接收存儲技術革新是信號採集處理領域內的一個重要課題。利用這種技術,可以把信號的實時採集和精確處理在時間上分為兩個階段,有利於獲得令人更滿意的處理結果。在無線數傳接收設備中應用數據接收存儲方法時,除了要滿足數據傳輸速率和差錯控制方面的要求外,還需要考慮如何使設備易於攜帶、介面簡單、使用方便。
傳統外設介面技術不但數據傳輸速率較低,獨佔中斷、I/O地址、DMA通道等計算機系統關鍵資源,容易造成資源沖突問題,而且使用時繁雜的安裝配置手續也給終端用戶帶來了諸多不便。近年來,USB介面技術迅速發展,新型計算機紛紛對其提供支持。USB2.0是USB技術發展的最新成果,利用USB2.0介面技術開發計算機外設,不但可以借用其差錯控制機制[1][6]減輕開發人員的負擔、獲得高速數據傳輸能力(480Mb/s),而且可以實現便捷的機箱外即插即用特性,方便終端用戶的使用。
1 無線數傳接設備總體構成
無線數傳接收設備是某靶場測量系統的一個重要組成部分。如圖1所示,該設備由遙測接收機利用天線接收經過調制的無線電波信號,解調後形成傳輸速率為4Mb/s的RS-422電平差分串列數據流。以幀同步字打頭的有效數據幀周期性地出現在這些串列數據中。數據轉存系統從中提取出有效的數據幀,並在幀同步字後插入利用GPS接收機生成的本地時間信息,用於記錄該幀數據被接收到的時間,然後送給主機硬體保存。
在無線數傳接收設備中,數據轉存系統是實現數據接收存儲的關鍵子系統。下面將詳細介紹該系統的硬體實現及工作過程。

2 數據轉存系統基本構成及硬體實現
數據轉存系統主要由FPGA模塊、DSP模塊、USB2.0介面晶元構成,各個模塊之間的相互關系如圖2所示示。圖中,4Mb/s的串列數據輸入信號SDI已由RS-422差分電平轉換為CMOS電平。為突出重點,不太重要的信號連線未在圖中繪出。下面分別介紹這幾個模塊的主要功能。
2.1 FPGA模塊實現及春功能
FPGA模塊在Altera公司ACEX系列的EP1K30TI144-2晶元中實現。其中主要的功能子模塊有:位同步邏輯、幀同步邏輯、授時時鍾和解碼邏輯。位同步邏輯主要由數字鎖相環構成,用於從串列數據輸入信號SDI中恢復出位時鍾信號。幀同步邏輯從位同步邏輯的輸出信號提取幀同步脈沖。兩者為DSP利用其同步串列口接收串列數據作好准備。這樣,利用一對差分信號線就可以接收同步串列數據,簡化了印製電路板的外部介面。授時時鍾在DSP和GSP接收機的協助下生成精度為0.1ms的授時信息。解碼邏輯用於實現系統互聯。
2.2 DSP模塊實現及其功能
DSP模塊是數據轉存系統的主控模塊,在T1公司16位定點DSP晶元TMS320F206[4]中實現。在DSP的外部數據空間還配置了32KX16的高速SRAM,可以緩存80餘幀數據,用於提高系統的差錯控制能力。DSP利用同步串列口接收FPGA送來的同步串列數據,利用非同步串口接收GPS接收機送來時間信息(用於初始化FPGA授時時鍾),利用外部匯流排介面訪問FPGA授時時鍾、外部SRAM、ISP1581的片內寄存器。可以看出DSP模塊主要用於完成數據幀的接收、重組以及轉存調度等任務。

ISP1581晶元是PHILIPS公司推出的高速USB2.0設備控制器,實現了USB2.0/1.1物理層、協議層,完全符合USB2.0規范,即支持高速(480Mb/s)操作,又支持全速(12Mb/s)操作。ISP1581沒有內嵌微處理器,但對微處理器操作了靈活的介面。在上電時,通過配置BUS——CONF、DAO、MODE1、MODE0、DA1引腳電平可以適應絕大多數的微處理器介面類型。例如,通過BUS_CONF/DA0引腳,匯流排配置可以選擇普通處理器模塊(Generic Phocessor mode)中分割匯流排模式(Split Bus Mode);在普通處理器模式下,通過MODE0/DA1引腳可以選擇讀寫選通為8051風格或者Motorola風格。
在數據轉存系統中,ISP1581用於處理主機的高速數據傳輸。它工作在普通處理器介面模式下,採用8051風格的讀寫選通信號,由DSP晶元TMS320F206控制。兩者在選定工作方式下的信號連線如圖3所示,圖中未畫出的信號引腳可以懸空,供電引腳的連接方式在參考資料[2]第46頁有簡明描述。在FPGA解碼邏輯的作用下,ISP1581的片內寄存器被映射在DSP的片外數據空間中。DSP通過8位地址線選擇要訪問的寄存器,在讀寫選通信號的控制下,利用16位數據線與選定的寄存器交換數據。在訪問ISP1581單位元組寄存器時,數據匯流排高位元組內容無關緊要。ISP1581通過中斷引腳INT向DSP報告發生的匯流排事件,利用D+、D-引腳完成與主機的數據交換。
3 數據轉存系統的工作過程
系統加電後,當FPGA配置過程結束時,如果有串列數據輸入,位同步邏輯和幀同步邏輯便啟動同步過程。同時,DSP片內FLASH中復位中斷服務程序c_int0()[4]被立即執行,在建立好C語言的工作環境下,它會調用主函數main()。在main()中,需要安排好一系列有先後順序的初始化工作。其中,ISP1581的初始化過程比較復雜,需要考慮設備採用的供電方式(這里為自供電[6]方式)、插接主機和系統上電的先後次序,並需要與USB匯流排枚舉[1][6]過程相結合。
在FPGA中的位同步邏輯和幀同步邏輯均進入同步狀態,且DSP主控模塊配合主機完成初始化任務後,即可啟動數據的傳輸過程。下面介紹一下ISP1581的初始化過程及DSP控制的數據幀的接收機轉存流程。
3.1 ISP1581的初始化
在初始化過程中,首先需要設置影響ISP1581自身工作方式的一些寄存器,然後與主機端USB系統配合進行,應答來自主機端的設備請求。當數據轉存系統板作為USB 2.0設備通過連接器連到主機USB根集線器上的一個埠時,主機便可檢測到這一連接,接著給該埠加電,檢測設備並激活該埠,向USB設備發送復位信號。設備收到這一復位信號後,即進入預設狀態,此後就能夠通過預設通信通道響應主機端送來的設備請求。主機通過描述符請求(GET_DESCRIPTOR)獲得設備端的詳細信息,通過設置地址請求(SET_ADDRESS)設置設備地址,通過設置配置請求(SET_CONFIGURATION)選定合適的設備配置。在設備成功響應了這些設備請求之後,就可以與主機通信了。

在響應主機請求的過程中,DSP需要配置ISP1581的端點以實現不同類型的傳輸通道。根據數據傳輸速率的要求,除了預設的控制通道外,系統中實現了一個批傳輸(bulk)[1]類型的輸入通道。這樣,ISP1581就可以像FIFO一樣方便地從數據轉存系統向主機傳輸數據,而且具有差錯控制能力,簡化了設備端軟體設計的復雜性。
3.2 數據幀的接收轉存過程
系統正常工作時,需要與主機端程序相互配合。主要端需要開發者實現的程序包括設備驅動程序和應用程序。在Windows 2000操作系統下,USB設備驅動程序為WDM模型的驅動程序,開發環境DriverStudio為WDM型驅動程序提供了框架結構,使得驅動開發變得非常容易(參見參考文獻[5]第八、九、十章)。驅動程序接收應用程序的請求,利用USB匯流排驅動程序(US-BD)和主機控制器驅動程序(HCD)通過主機控制器安排USB匯流排事務,設備端則根據這些事務調度相應的數據幀的傳輸。關於主機埠如何安排匯流排事務可以查閱參考文獻[1]。以下著重介紹設備端數據的調度過程。
數據幀的接收轉存過程主要由DSP負責,DSP在外部SRAM中建立了一個數據幀的隊列,如圖4所示。系統主要工作在中斷驅動模式下,與同步串列口相關的中斷服務程序負責建立隊列的尾部,對應於ISP1581中斷引腳INT的中斷服務程序負責建立隊列的頭部。
當以幀同步字打頭的一幀數據以串列位流的形式到來時,FPGA產生的幀同步脈沖可以直接啟動DSP同步串列口接收數據,該同步脈沖同時以中斷方式通知DSP為一幀數據的接收做好准備。DSP接到通知後,首先檢查外部SRAM中是否有足夠的空間容納一幀數據。如果沒有空間,則丟棄當前數據幀(根據設計,這種情況是很少見的);如果有空間,則為當前數據幀保留足夠的空間。接著在幀起始位置填寫幀步字,讀取授時時鍾的當前值並填寫在幀同步字後。這樣,一個新的數據幀(圖4中數據幀F_N)就建立了,但是並沒有加入到隊列中,而是要等待來自同步串列口的後繼數據嵌入該幀中後再加入到隊列中。
同步串列口的接收緩沖區在接收到若干字(由初始化時的設置決定)後,會向DSP提出中斷請求。在中斷服務程序中,DSP讀取接收緩沖區中的內容,並將其填入上述新開辟的幀F_N中。在一幀數據接收完畢後,就將該幀添加到隊列的尾部,表示該幀數據已經准備好(圖4中數據幀F_R),可以通過ISP1581送給主機硬體保存。

DSP在查詢到隊列中有已經准備好的數據幀存在時,就設置ISP1581的端點索引寄存器(Endpoint Index Register)使其指向初始化時配置的批傳輸輸入端點,然後將隊列首幀數據通過ISP1581的數據埠寄存器(Data Port Register)填寫在端點緩沖區中。在端點緩沖區被填滿後,它就自動生效。在不能填滿端點緩沖區的情況下,可以通過設置控制功能寄存器(Control Function Register)的VENDP位[2]強制該端點緩沖區生效。端點緩沖區生效後,在USB匯流排上下一IN令牌到來時,該端點緩沖區中的數據就通過USB匯流排傳輸到主機中。主機成功接收到數據後,會給ISP1581以ACK應答。能夠通過INT引腳報告給DSP,DSP就可以繼續往端點中填寫該幀其餘數據。
在隊列首幀數據被成功轉移到主機後,DSP就丟棄首幀數據。如果隊列在還有數據幀,則將次首幀作為首幀,繼續前述傳輸過程;如果沒有要傳輸的數據幀,則為隊列首幀指針Head_Ptr賦空值(NULL),等待新的數據幀的到來。
USB2.0是計算機外設介面技術發展的最新成功,具有廣闊的應用前景。本文介紹了PHILIPS公司USB2.0介面晶元ISP1581在無線數據接收設備中的應用。高性能、便攜化的無線數據傳接收設備。其在靶場實彈試驗中受到了用戶的好評。

PC機的RS-232C串列口是使用最多的介面之一。因此,4串口、8串口等以增加串口數量為目的的ISA匯流排卡產品大量問世。一般串口應用只是使用了RXD和TXD兩條傳輸線和地線所構成的串口的最基本的應用條件,而本文介紹一個利用PC機的RS-232串口加上若干電路來實現多串口需求的介面電路。
1.PC機串口的RTS和DTR及擴展電路
RTS和DTR是PC機中8250晶元的MODEM控制寄存器的兩個輸出引角D1和D0位,口地址為COM1的是3FCH,口地址為COM2的是2FCH。我們可以利用對MODEM控制寄存器3FCH或2FCH的寫操作對其進行控制。從而利用該操作和擴展電路實現對TXD和RXD進行多線擴展,圖1是其擴展電路。
在圖1所示的PC機串口擴展電路中,74LS161是二進制計數器,1腳是清0端,2腳是計數端,計數脈沖為負脈沖信號,4051是八選一雙向數字/模擬電子開關電路,其中一片用於正向輸出,一片用於反向輸出。該擴展電路工作原理是通過控制PC機串口的DTR輸出的高低電平來形成74LS161的P2腳計數端的負脈沖信號,使161的輸出端P14(QA)、P13(QB)、P12(QC)、P11(QD)腳依次在0000到1111十六個狀態中變化,本電路僅使用了QA、QB、QC三個輸出來形成對4051的ABC控制,最終使得4051(1)的輸入端TXD依次通過與TX1~TX8導通而得到輸出信號,4051(2)的輸出端RXD與RX1~RX8依次導通形成輸入信號。由於RXD和TXD的導通是一一對應的,因此串口通信就可以依次通過與多達8個帶有三線基本串口的外部設備進行通信傳輸以實現數據傳送。PC機端的電平轉換電路是將RS232電平轉換為TTL電平,外設端的電平轉換電路是將TTL電平轉換為RS232電平。由於這種轉換有許多電路可以實現,因而,這里不再介紹。
2.電路使用程序
對PC機串口COM1的編程如下:
……
… ;對COM1口的波特率等設置;
MOV DX,3FCH
MOV AL,XXXXXX01B
OUT DX,AL;D1生成RTS負脈沖,對74LS161輸出端清0
MOV AL,XXXXXX11B;
OUT DX,AL ;4051的RX1和TX1導通
CALL COM ;調用通信子程序,與第一個外部設備通信;
MOV CX,7 ;設置循環計數器;
NEXT:MOV DX ,3FCH
MOV AL,XXXXXX10B
OUT DX ,AL ;D0位生成DTR的負脈沖,形成161的P2腳計數脈沖
MOV AL,XXXXXX11B
OUT DX,AL ;RX2和TX2導通
CALL COM ;調用通信子程序,與第二個外部設備通信
LOOP NEXT ;循環與另外6個外部設備通信

… ;通信子程序略
3.使用說明
由於該擴展的多路介面在通信時共用一個子程序,因此在與某一路導通時,系統只能與這一路的外部設備進行通信聯絡。
如果工作現場需要立即和某一路通信,則需要對3FCH的D1位執行兩個寫操作並在RTS腳形成負脈沖,以對7416I清0後,再連接執行若干次對DTR的兩次寫操作。例如想對第4路外設通信,則需要執行完成對74LS161清0後,再連續三次對3FCH的D0位進行兩個寫操作以形成DTR腳的負脈沖,然後即可調用通信子程序。
如需使用PC機的COM2串口,只需將程序中的3F8H~3FDH全部換成2F8H~2FDH即可。
如果使用十六選一雙向數字/模擬電子開關電路,可將74LS161的QA、QB、QC、QD四個輸出端接至電子開關的四個控制端A、B、C、D,這樣就可以達到一個PC機的RS232口與16個帶有串口的外設的數據通信。

閱讀全文

與c判斷usb設備是否連接相關的資料

熱點內容
黑龍江特種設備檢驗研究院 瀏覽:210
機械化養護中心 瀏覽:838
上海特種設備管理 瀏覽:48
機械師改槍 瀏覽:181
機械化剪紙 瀏覽:757
美燃環保設備 瀏覽:809
濟南北斗星數控設備有限公司 瀏覽:838
自動噴塗機械手 瀏覽:457
中小型農業機械加工項目建議書 瀏覽:251
不銹鋼加工設備市轉讓 瀏覽:441
水稻生產全程機械化 瀏覽:110
扳手機械原理 瀏覽:61
凱格精密機械有限公司 瀏覽:61
廣毅機電設備 瀏覽:805
重慶三陽辦公設備有限公司 瀏覽:494
華技達自動化設備 瀏覽:631
東莞石碣自動化設備廠 瀏覽:131
機械制圖陳列櫃 瀏覽:246
鄭州奧鑫游樂設備公司 瀏覽:733
美邦環保設備有限公司 瀏覽:386