• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于WinUSB與SHT75的溫濕度數(shù)據(jù)采集與控制系統(tǒng)設(shè)計仿真

    2013-10-17 13:28:42
    制造業(yè)自動化 2013年15期
    關(guān)鍵詞:描述符固件驅(qū)動程序

    彭 偉

    PENG Wei

    (武漢城市職業(yè)學(xué)院 電子信息工程學(xué)院,武漢 430064)

    0 引言

    每年有超過20億的新安裝器件,可連接多種類型的設(shè)備,能夠自動進(jìn)行配置,連接簡單且支持熱插撥,多數(shù)時候不需要提供獨(dú)立的電源,具有高傳輸速率,高可靠性等,上述諸多優(yōu)點(diǎn)使USB成為了最成功的PC機(jī)接口。微軟為大量USB類設(shè)備提供類驅(qū)動程序,且一直在改進(jìn)和增加類驅(qū)動程序的數(shù)量,對于USB設(shè)備獨(dú)立硬件供應(yīng)商(IHV),Windows驅(qū)動程序基礎(chǔ)(Windows Driver Foundation,WDF)已成為USB驅(qū)動程序開發(fā)的首選模型,它提供3個選項(xiàng)來訪問USB設(shè)備:1)使用UMDF實(shí)現(xiàn)用戶模式驅(qū)動程序;2)使用KMDF實(shí)現(xiàn)內(nèi)核模式驅(qū)動程序;3)將Winusb.sys作為設(shè)備功能驅(qū)動程序安裝,并提供WinUSB API供應(yīng)用程序訪問設(shè)備。本文將基于WinUSB通用驅(qū)動程序及Microchip公司USB接口系統(tǒng)固件框架,以PIC微控制器與SHT75傳感器為核心,上位機(jī)選用C#開發(fā)平臺,開發(fā)實(shí)現(xiàn)基于WinUSB的溫濕度數(shù)據(jù)采集與控制系統(tǒng)并進(jìn)行仿真。

    1 WinUSB通用驅(qū)動程序框架

    Windows驅(qū)動程序包括總線驅(qū)動程序(bus driver)、功能驅(qū)動程序(function driver)、過濾驅(qū)動程序(filter driver),圖1給出了Windows USB驅(qū)動程序堆棧體系結(jié)構(gòu)框圖,圖中出現(xiàn)了微軟推出的USB設(shè)備通用驅(qū)動程序WinUSB,它基于Windows Driver Frameworks (WDF)開發(fā),由內(nèi)核模式驅(qū)動程序(Winusb.sys)與用戶模式DLL(winusb.dll)共兩個基本組件構(gòu)成。WinUSB(Winusb.sys)可作為單一USB設(shè)備或復(fù)合設(shè)備功能驅(qū)動程序安裝在設(shè)備內(nèi)核模式堆棧中。用戶程序通過調(diào)用WinUSB用戶模式動態(tài)鏈接庫winusb.dll公開的函數(shù)與USB設(shè)備通信。圖1展示了包含3個Winusb.sys實(shí)例的USB驅(qū)動程序堆棧,實(shí)例1注冊設(shè)備接口A,支持用戶模式驅(qū)動程序(Usboem.dll),實(shí)例2注冊設(shè)備接口B,支持通過系統(tǒng)服務(wù)(SVCHOST)與winusb.dll進(jìn)行通信的掃描儀用戶模式程序(Usbscan.exe),實(shí)例3注冊設(shè)備接口C,支持固件升級程序(Usbfw.exe)。實(shí)例2、3基于USB通用父驅(qū)動程序usbccgp.sys,為復(fù)合設(shè)備提供服務(wù)。所有用戶程序均通過加載winusb.dll,調(diào)用DLL所提供的函數(shù)與USB驅(qū)動程序棧通訊。

    通過WinUSB驅(qū)動程序與設(shè)備通訊,用戶程序不需要構(gòu)造設(shè)備I/O控制請求來執(zhí)行標(biāo)準(zhǔn)的USB操作(如配置設(shè)備、發(fā)送控制請求以及與設(shè)備互傳數(shù)據(jù))等,用戶程序調(diào)用winusb.dll提供的函數(shù)時,winusb.dll將使用應(yīng)用程序提供的數(shù)據(jù)構(gòu)建適當(dāng)?shù)腎OCTL調(diào)用DeviceIoControl,將請求發(fā)送至Winusb.sys處理,請求完成時WinUSB將Winusb.sys返回的信息回傳到調(diào)用進(jìn)程,調(diào)用失敗或掛起時將返回零值,調(diào)用GetLastError可獲取詳細(xì)的錯誤消息。

    圖1 Windows USB驅(qū)動程序堆棧體系結(jié)構(gòu)及含多個Winusb.sys實(shí)例的USB驅(qū)動程序堆棧

    Winusb.sys還是UMDF功能驅(qū)動程序與關(guān)聯(lián)的設(shè)備之間鏈接的關(guān)鍵部分,Winusb.sys作為上層過濾驅(qū)動程序安裝在設(shè)備的內(nèi)核模式堆棧中,應(yīng)用程序通過與設(shè)備的UMDF用戶模式驅(qū)動程序通信來發(fā)送讀、寫或設(shè)備I/O控制請求,驅(qū)動程序則與框架交互,后者將請求傳遞到Winusb.sys,Winusb.sys處理該請求并將其傳遞到協(xié)議驅(qū)動程序,最后傳遞到設(shè)備,任何響應(yīng)均通過反向路徑返回。

    2 WinUSB驅(qū)動包構(gòu)成及其INF文件解析

    WinUSB作為設(shè)備功能驅(qū)動程序安裝時,其驅(qū)動程序包共有4項(xiàng)內(nèi)容:1)WinUSB輔助安裝程序(Co-installer)Winusbcoinstaller.dll;2)KMDF輔助安裝程序WdfcoinstallerXXX.dll;3)將Winusb.sys安裝為設(shè)備功能驅(qū)動程序的INF文件;4)簽名的數(shù)據(jù)包目錄文件(Signed Catalog File)。KMDF和WinUSB輔助安裝程序須從同一版本的WDK獲取,WDF輔助安裝程序文件須從最新版本的WDK安裝目錄獲取,以便該驅(qū)動程序支持所有最新的Windows版本。

    WinUSB驅(qū)動包中的INF文件將Winusb.sys安裝為設(shè)備的功能驅(qū)動程序,為操作系統(tǒng)匹配驅(qū)動程序與設(shè)備提供重要信息。INF文件中與上、下位機(jī)USB接口軟件開發(fā)關(guān)系最為密切的信息包括:1)USB固件內(nèi)設(shè)備描述符定義的VID/PID。例如本文INF文件中[Manufacturer]區(qū)有:%USBMyDevice.DeviceDesc% = USB_Install,USBVID_00AA&PID_00BB,它將設(shè)備VID/PID設(shè)為0x00AA/00BB。2)設(shè)備接口類(Device Interface Class)GUID。上位機(jī)用戶程序使用該GUID枚舉WinUSB設(shè)備接口,新項(xiàng)目中的GUID可由guidgen.exe生成,INF文件[USB_Install.HW]區(qū)通過AddReg指示符在注冊表中的DeviceInterfaceGUIDs鍵下存儲一個或多個設(shè)備接口類GUID,例如本文所編寫的INF文件中有:HKR,,DeviceInterfaceGUIDs,0x10000,"{B6B014A8-8CDE-4112-9474-F15486E401BE}"。Winusb.sys每次加載時都會根據(jù)注冊表中的DeviceInterfaceGUIDs項(xiàng)指定的設(shè)備接口類注冊一個設(shè)備接口實(shí)例。INF文件[Version]區(qū)還有一個ClassGUID條目,例如本文中該條目定義為:ClassGUID={36FC9E60-C465-11CF-8056-444553540000},它是設(shè)備安裝類(Device Setup Class)GUID,INF文件的ClassInstall32指示符將在注冊表中創(chuàng)建:…CurrentControlSetControlClass{36FC9E60-C465-11CF-8056-444553540000},并導(dǎo)入INF文件內(nèi)的相關(guān)子鍵值,用于標(biāo)識該設(shè)備類安裝程序。

    Winusb.sys安裝為內(nèi)核功能驅(qū)動程序時使用[DDInstall.Services]的AddService=WinUSB,…實(shí)現(xiàn),ServiceType設(shè)為SERVICE_KERNEL_DRIVER,ServiceBinary設(shè)為Winusb.sys。安裝為設(shè)備上層過濾驅(qū)動程時,需通過[DDInstall.HW]的AddReg指示符在注冊表中創(chuàng)建上層過濾驅(qū)動條目“UpperFilters”。

    Windows 8之前的操作系統(tǒng)將Winusb.sys作為功能驅(qū)動程序加載時需提供定制的INF文件,該文件指定了設(shè)備特定的硬件ID,同時包括內(nèi)置Winusb.inf的部分,這些部分是實(shí)例化服務(wù)、復(fù)制內(nèi)置二進(jìn)制文件以及注冊設(shè)備接口GUID所必需的。

    3 基于C#與WinUSB的上位機(jī)接口程序設(shè)計

    為探測下位機(jī)USB設(shè)備是否接入主機(jī),可調(diào)用RegisterDeviceNotification注冊設(shè)備通知消息,在設(shè)備移除或接入時通知窗體WndProc進(jìn)程,該進(jìn)程檢測到有設(shè)備接入主機(jī)時進(jìn)一步獲取“設(shè)備路徑”。

    Winusb.sys被加載時,它根據(jù)注冊表中DeviceInterfaceGUIDs鍵下該設(shè)備接口類注冊一個設(shè)備接口。用戶模式程序調(diào)用SetupDiGetClassDevs可枚舉該設(shè)備接口類設(shè)備并返回該類的“設(shè)備信息集”句柄,循環(huán)調(diào)用SetupDiEnumDeviceInterfaces可逐一枚舉設(shè)備信息集中的設(shè)備接口,提取索引指定的設(shè)備接口詳細(xì)信息時可調(diào)用SetupDiGetDeviceInterfaceDetail,所獲取的信息通過SP_DEVICE_INTERFACE_DETAIL_DATA結(jié)構(gòu)返回。由于該結(jié)構(gòu)大小無法提前獲取,故需連續(xù)兩次調(diào)用該函數(shù),第二次調(diào)用時接口詳細(xì)信息將填充到根據(jù)第一次調(diào)用返回值所確定大小的該緩沖區(qū),通過緩沖內(nèi)該結(jié)構(gòu)的DevicePath成員中可獲得“設(shè)備路徑”。本文有:DevicePath="\\?\usb#vid_00aa&pid_0 0bb#2&2260b228&0&e1#{b6b014a8-8cde-4112-9474-f15486e401be}”。當(dāng)檢測到設(shè)備路徑中含有“Vid_00AA&Pid_00BB”時即表示搜索成功,否則繼續(xù)枚舉下一接口。

    Windows API提供的CreateFile函數(shù)可創(chuàng)建、打開文件、目錄、物理盤、卷、COM端口、設(shè)備(包括USB設(shè)備)、服務(wù)、通訊資源、命名管道或控制臺等,返回用于訪問相應(yīng)對象的句柄。CreateFile的第一個參數(shù)lpFileName是將要創(chuàng)建或打開的對象名稱,Unicode允許該參數(shù)最多為32000個字符,該類型長字符串所使用的前綴標(biāo)識為“\?”,C語言表示的DevicePath中長串標(biāo)識符“\\?\”后面分別是USB設(shè)備實(shí)例“USBVid_00AA&Pid_00BB2&2260b228&0&E1”和設(shè)備接口GUID。將設(shè)備路徑DevicePath賦給CreateFile函數(shù)的lpFileName參數(shù)即可獲取設(shè)備句柄,所獲取的設(shè)備句柄傳給WinUSB函數(shù)WinUsb_Initialize,可獲取WinUSB句柄。有了WinUSB句柄,即可進(jìn)一步調(diào)用Winusb.dll提供的其他大量WinUSB API實(shí)現(xiàn)對USB設(shè)備的訪問。

    C#中調(diào)用WinUSB函數(shù),需要通過DllImport引入DLL文件并聲明函數(shù),例如:

    [DllImport("winusb.dll",SetLastError = true)]

    internal static extern Boolean WinUsb_Initialize(…);

    所設(shè)計的系統(tǒng)中,讀傳感器溫濕度數(shù)據(jù)及控制繼電器開關(guān)的自定義命令字節(jié)分別為0x81、0x82,向USB設(shè)備發(fā)送命令字節(jié)的函數(shù)為WinUsb_WritePipe(寫管道),該函數(shù)前兩個參數(shù)分別為WinUSB接口句柄InterfaceHandle和管道號PipeID,其中PipeID由1個方向位+7個地址位構(gòu)成,對應(yīng)于下位機(jī)USB固件中端點(diǎn)描述符內(nèi)的bEndpointAddress字段,寫管道函數(shù)的其他參數(shù)分別為:數(shù)據(jù)緩沖區(qū)指針、緩沖區(qū)大小、實(shí)際傳輸字節(jié)數(shù)及可選的Overlapped參數(shù)。本文將Overlapped設(shè)為IntPtr.Zero,使寫管道函數(shù)向PipeID(0x01)管道完成一字節(jié)控制命令輸出并返回后,才開始讀取USB設(shè)備返回的傳感器數(shù)據(jù),調(diào)用WinUSB讀管道數(shù)據(jù)函數(shù)WinUsb_ReadPipe“同步讀取”USB設(shè)備返回的溫濕度數(shù)據(jù)時,上位機(jī)用戶程序可能因USB接口斷開、返回數(shù)據(jù)量大等原因?qū)е鲁绦虮蛔枞?。為避免這一問題,可使用Delegate代理實(shí)現(xiàn)對USB設(shè)備所返回數(shù)據(jù)的“異步讀取”,定義的代理對應(yīng)于讀管道函數(shù)WinUsb_ReadPipe,調(diào)用BeginInvoke方法時除了給出讀管道函數(shù)所需要必須的參數(shù)以外,另附加的兩個參數(shù)為:1)new AsyncCallback(GetBulkDat);2)ReadDelegate。前者指明代理調(diào)用WinUsb_ReadPipe返回時的異步回調(diào)函數(shù)為GetBulkDat,后者為當(dāng)前代理對象實(shí)例,當(dāng)GetBulkDat被回調(diào)時,ReadDelegate作為IAsyncResult類型的參數(shù)傳給該回調(diào)函數(shù),AsyncState屬性獲得代理對象,并執(zhí)行EndInvoke等待BeginInvoke調(diào)用的方法結(jié)束。如果IsCompleted屬性值為真則表示從USB設(shè)備通過批量(Bulk)傳輸讀取的數(shù)據(jù)已裝填到指定緩沖。

    瑞士SENSIRION傳感器公司推出的數(shù)字式溫濕度傳感器SHT75實(shí)現(xiàn)了數(shù)字式輸出、免調(diào)試、免標(biāo)定、免外圍電路及全互換功能。為方便用戶開發(fā)應(yīng)用溫濕度傳感器SHT75,SENSIRION提供了SHT75的8051 C程序范例,可以非常方便的移植為PIC微控制器C程序,PIC從傳感器讀取4字節(jié)數(shù)據(jù)后,根據(jù)函數(shù):Calc_STH75與Calc_Dew_point可分別計算溫濕度及露點(diǎn)值。由于這兩個函數(shù)內(nèi)浮點(diǎn)計算量大,本文將它們移至上位機(jī)C#程序中,PIC微控制器則僅負(fù)責(zé)從傳感器讀取四字節(jié)溫濕度原始數(shù)據(jù),通過USB接口直接傳輸給上位機(jī),上位機(jī)C#程序再通過這四字節(jié)原始數(shù)據(jù)調(diào)用上述兩個函數(shù)計算出相應(yīng)結(jié)果,這樣處理可提高傳輸速度并減輕下位機(jī)微控制器負(fù)荷。C#函數(shù)GetBulkDat通過緩沖中的四字節(jié)數(shù)據(jù)完成浮點(diǎn)計算后,仍然需要通過代理在主窗體中刷新顯示,因?yàn)樵摵瘮?shù)與主窗體不在同一線程運(yùn)行。

    回調(diào)函數(shù)讀取數(shù)據(jù)管道結(jié)束并通過顯示代理完成窗體信息刷新顯示后,接著再次通過寫管道函數(shù)WinUsb_WritePipe發(fā)出讀取SHT75傳感器數(shù)據(jù)的命令字節(jié)0x81,實(shí)現(xiàn)對溫濕度數(shù)據(jù)的實(shí)時連續(xù)采集。繼電器控制與之類似,唯一差別是刷新顯示下位機(jī)返回的繼電器狀態(tài)后并不繼續(xù)調(diào)用WinUsb_WritePipe發(fā)出控制繼電器的命令字節(jié)0x82,而是等待上位機(jī)用戶的下一個操作。

    4 下位機(jī)Microchip USB協(xié)議棧及用戶I/O設(shè)計

    為便于工程技術(shù)人員開發(fā)應(yīng)用PIC USB微控制器,Microchip公司提供了PIC微控制器USB協(xié)議棧固件框架,可處理大量USB通訊任務(wù),所提供的面向不同客戶群的演示項(xiàng)目均采用協(xié)作式多任務(wù)環(huán)境(禁止出現(xiàn)阻塞),內(nèi)置USB模塊的PIC18F4550微控制器具有獨(dú)立的中斷邏輯結(jié)構(gòu),協(xié)議??蚣芎诵奈募sb_device.c提供主狀態(tài)機(jī)函數(shù)USBDeviceTasks,對USB中斷進(jìn)行檢測并進(jìn)入相應(yīng)的處理程序。

    固件框架同時提供了處理用戶I/O操作的演示函數(shù)ProcessIO,由固件程序內(nèi)的主函數(shù)調(diào)用。本文程序設(shè)計的ProcessIO函數(shù)負(fù)責(zé)讀取上位機(jī)命令,根據(jù)所接收到的上位機(jī)命令字節(jié)0x81與0x82分別實(shí)時回傳SHT75傳感器溫濕度數(shù)據(jù)(4字節(jié))及控制繼電器開關(guān)并同時返回繼電器狀態(tài)。

    固件框架中的描述符文件usb_descriptors.c給出了VID/PID定義,描述符中設(shè)置設(shè)備類編碼為0x0000(bDeviceClass/bDeviceSubClass),表示一個配置內(nèi)的每個接口均獨(dú)立指定了其自身的類信息及各種接口操作,接口類編碼0xFFFF(bInterfaceClass/bInterfaceSubClass)則表示接口類由廠商指定。端點(diǎn)描述符中的端點(diǎn)屬性(EndpointAttributes)全部設(shè)為_BULK(批量傳輸端點(diǎn))。PIC固件程序分別定義的數(shù)據(jù)收/發(fā)緩沖為INPacket與OutPacket,與上位機(jī)C#程序定義的緩沖OUTBuffer與INBuffer對應(yīng)。在指定端點(diǎn)非忙時,固件可通過USBGenWrite、USBGenRead分別發(fā)送與接收數(shù)據(jù)包,二者最終均調(diào)用USBTransfer OnePacket(ep,dir,data,len),該函數(shù)為協(xié)議棧提供的通用單包傳輸函數(shù)。

    5 溫濕度數(shù)據(jù)采集與控制系統(tǒng)仿真運(yùn)行測試

    Labcenter公司的實(shí)物電路仿真軟件Proteus具有對微控制器及其外圍電路組成的綜合應(yīng)用系統(tǒng)的交互仿真功能,仿真USB接口需要安裝虛擬USB驅(qū)動程序(Virtual USB Drivers)并添加USBCONN組件。圖2給出了以PIC18F4550微控制器及溫濕度傳感器SHT75為核心的USB接口應(yīng)用系統(tǒng)仿真電路。

    圖2 USB接口溫濕度檢測與控制系統(tǒng)仿真測試電路

    PROTEUS提供的USB虛擬分析器可跟蹤設(shè)備與上位機(jī)用戶軟件及驅(qū)動程序的所有交互信息,包括IRP請求(包括IOCTL與MJ_PNP)、USB事務(wù)(包括SETUP、IN、OUT)、USB寄存器(包括UCON、UIR、USTAT、BDnSTAT、BDnCNT、BDnADRL/H等)。測試運(yùn)行USB接口應(yīng)用系統(tǒng)時,借助USB虛擬分析器可觀察到主機(jī)給USB設(shè)備上電、主機(jī)復(fù)位設(shè)備(RESET)、USB總線驅(qū)動程序通過URB(USB請求包)請求USB設(shè)備描述符前8字節(jié)、主機(jī)再次復(fù)位設(shè)備(RESET)、USB總線驅(qū)動程序通過URB執(zhí)行控制傳輸,將USB默認(rèn)地址0x00重設(shè)為操作系統(tǒng)分配的地址,及USB總線驅(qū)動程序通過URB連續(xù)發(fā)送提取描述符請求,依次取得完整的設(shè)備描述符、配置描述符(包括接口描述符、端點(diǎn)描述符)、字符串描述符。PnP事件觸發(fā)即插即用管理器(PnP Manager)向WDM驅(qū)動程序發(fā)送主功能(Major Function)碼IRP_MJ_PNP,進(jìn)入相應(yīng)的派遣函數(shù),查詢設(shè)備ID、執(zhí)行設(shè)備啟動等。

    打開上位機(jī)C#軟件時將自動搜索WinUSB設(shè)備,成功搜索到USB設(shè)備后,每當(dāng)C#調(diào)用WinUSB的讀、寫管道函數(shù)與USB設(shè)備交換數(shù)據(jù)時,將分別訪問對應(yīng)的端點(diǎn)(EP1_IN或EP1_OUT)緩沖,運(yùn)行過程中均可通過USB虛擬分析器觀察到:IOCTL: BULK_OR_INTERRUPT_TRANSFER,展開該層時可觀察到相應(yīng)的IN事務(wù)或OUT事務(wù)。

    圖3 溫濕度數(shù)據(jù)采集與控制系統(tǒng)上位機(jī)C#程序

    6 結(jié)束語

    由于WinUSB的通用性與易用性,大量廠商開始基于WinUSB開發(fā)USB接口程序,盡管當(dāng)前版本的WinUSB驅(qū)動尚存在若干限制,例如一次僅允許一個應(yīng)用程序與設(shè)備通信且不支持在同步端點(diǎn)之間傳輸流數(shù)據(jù)。本文通過研究微軟WinUSB通用驅(qū)動程序框架及WinUSB驅(qū)動包構(gòu)成及其INF文件關(guān)鍵條目、Microchip USB接口系統(tǒng)固件框架,基于C#軟件開發(fā)平臺設(shè)計了以PIC18F455微控制器及SHT75傳感器為核心的溫濕度數(shù)據(jù)采集與控制系統(tǒng),通過了仿真運(yùn)行及實(shí)物測試,為基于WinUSB的接口系統(tǒng)開發(fā)提供了重要參考。為更快速的開發(fā)WinUSB的上位機(jī)用戶程序,基于微軟VS2012+WDK8.0的開發(fā)環(huán)境除了提供USB KMDF與UMDF驅(qū)動程序開發(fā)模板以外,還提供了基于WinUSB的應(yīng)用程序開發(fā)模板,通過該模板能夠自動生成通用代碼框架,包括自動生成INF文件。另外,微軟的Windows 8已經(jīng)不再要求為WinUSB提供定制的INF文件,這無疑將使得基于WinUSB的系統(tǒng)開發(fā)變得更加便捷高效。

    [1] 曾希強(qiáng).Linux下基于libusb的USB設(shè)備驅(qū)動程序設(shè)計與實(shí)現(xiàn)[J].信息與電腦,2009(7):101-103.

    [2] 彭定軍,陳安,高健.嵌入式Linux下基于libusb的USB驅(qū)動開發(fā)[J].技術(shù)與市場,2008(11):4-5.

    [3] 安愛美,徐建建.基于WDF的USB驅(qū)動程序設(shè)計[J].自動化與儀表,2012(1):57-60.

    [4] 錢宇紅. USB 數(shù)據(jù)傳輸卡WDF 驅(qū)動程序開發(fā)[J].計算機(jī)應(yīng)用與軟件,2012(6):225-227.

    [5] 鄒敬軒,蔡皖東.基于WDF過濾驅(qū)動的USB存儲設(shè)備監(jiān)控系統(tǒng)[J].計算機(jī)工程與科學(xué),2010(3):42-44,71.

    [6] 朱誠,左輝.利用KMDF 驅(qū)動程序?qū)崿F(xiàn)USB 設(shè)備的功耗控制[J].計算機(jī)應(yīng)用與軟件,2012(12):252-254,321.

    [7] 牛繼來,王海霞.基于WDM 的USB驅(qū)動程序研究與設(shè)計[J].計算機(jī)與數(shù)字工程,2007(12):127-129,139.

    [8] 張智邦,鮑蘇蘇,金敏.基于WDM 模型USB 驅(qū)動程序的設(shè)計與研究[J].計算機(jī)系統(tǒng)應(yīng)用,2011(11):185-188.

    [9] 謝晶石.PIC單片機(jī)USB接口應(yīng)用設(shè)計[J].數(shù)字技術(shù)與應(yīng)用,2011(8):146-148.

    [10] 覃冬華.基于Visual C# 的USB 接口通信程序設(shè)[J].數(shù)字技術(shù)與應(yīng)用,2010(8):90-91.

    [11] 胡鍵勛.基于Visual C++編寫USB接口溫度采集設(shè)計[J].現(xiàn)代計算機(jī),2010(4):148-150.

    [12] 李偉,張東亮,楊麗麗.利用Visual C++實(shí)現(xiàn)USB設(shè)備與PC機(jī)通信[J].儀器儀表用戶,2007(6):87-89.

    [13] Microchip Libraries for Applications [OL].[201211]:http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en547784.

    [14] USB Driver Stack Architecture[OL].[201303]:http://msdn.microsoft.com/zh-cn/library/windows/hardware/hh406256#usb_2.0_driver_stack.

    猜你喜歡
    描述符固件驅(qū)動程序
    基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
    Linux單線程并發(fā)服務(wù)器探索
    利用CNN的無人機(jī)遙感影像特征描述符學(xué)習(xí)
    基于固件的遠(yuǎn)程身份認(rèn)證
    提取ROM固件中的APP
    電腦愛好者(2015年7期)2015-04-09 08:54:02
    一種通過USB接口的可靠固件升級技術(shù)
    奧林巴斯XZ—2新固件升級
    中國攝影(2014年1期)2014-02-24 01:50:23
    基于PDIUSBD12的USB接口設(shè)計應(yīng)用研究
    驅(qū)動程序更新與推薦
    驅(qū)動程序更新與推薦
    久久综合国产亚洲精品| 日韩欧美一区视频在线观看| 午夜福利视频精品| 菩萨蛮人人尽说江南好唐韦庄| 亚洲av电影在线进入| 亚洲精品成人av观看孕妇| 欧美国产精品一级二级三级| 男女之事视频高清在线观看 | 色综合欧美亚洲国产小说| 精品免费久久久久久久清纯 | 在线观看免费视频网站a站| 不卡av一区二区三区| 亚洲av电影在线观看一区二区三区| 大香蕉久久成人网| 深夜精品福利| 日日啪夜夜爽| 老司机影院成人| 激情五月婷婷亚洲| 亚洲av中文av极速乱| 另类亚洲欧美激情| 999精品在线视频| av国产久精品久网站免费入址| 中文精品一卡2卡3卡4更新| 丝袜人妻中文字幕| 日韩,欧美,国产一区二区三区| 黑人巨大精品欧美一区二区蜜桃| 人妻人人澡人人爽人人| 一边亲一边摸免费视频| 亚洲美女黄色视频免费看| 日韩熟女老妇一区二区性免费视频| 亚洲欧美色中文字幕在线| 亚洲五月色婷婷综合| 人人澡人人妻人| 日本wwww免费看| 人成视频在线观看免费观看| 中文字幕人妻丝袜一区二区 | 国产精品 国内视频| 亚洲精品美女久久久久99蜜臀 | 国产黄色视频一区二区在线观看| 欧美精品av麻豆av| av福利片在线| 亚洲欧美精品自产自拍| 高清在线视频一区二区三区| 亚洲四区av| 久久久精品94久久精品| 欧美日韩视频精品一区| 大陆偷拍与自拍| 国产色婷婷99| 国产一级毛片在线| 老司机影院成人| 天堂8中文在线网| 久久久久国产一级毛片高清牌| 十八禁人妻一区二区| 19禁男女啪啪无遮挡网站| 精品人妻一区二区三区麻豆| 97人妻天天添夜夜摸| 国产av国产精品国产| 亚洲一级一片aⅴ在线观看| 欧美xxⅹ黑人| 男女床上黄色一级片免费看| 女人高潮潮喷娇喘18禁视频| 男人爽女人下面视频在线观看| 亚洲情色 制服丝袜| 人人妻人人澡人人看| 日韩一本色道免费dvd| 黑丝袜美女国产一区| 国产又色又爽无遮挡免| 丁香六月天网| 亚洲精品在线美女| 2018国产大陆天天弄谢| 在线观看免费日韩欧美大片| 亚洲精品久久久久久婷婷小说| 久热这里只有精品99| 黑人巨大精品欧美一区二区蜜桃| 国产成人啪精品午夜网站| 欧美日韩成人在线一区二区| 满18在线观看网站| 人成视频在线观看免费观看| 欧美激情极品国产一区二区三区| 亚洲人成网站在线观看播放| 亚洲第一av免费看| 久久精品久久久久久久性| 午夜福利影视在线免费观看| 色视频在线一区二区三区| av天堂久久9| 丰满乱子伦码专区| 国产精品秋霞免费鲁丝片| 亚洲一卡2卡3卡4卡5卡精品中文| 午夜福利网站1000一区二区三区| 国产免费福利视频在线观看| 91精品三级在线观看| 国产日韩欧美亚洲二区| 久久久久国产精品人妻一区二区| netflix在线观看网站| 国产亚洲最大av| 日韩一区二区视频免费看| 免费黄色在线免费观看| netflix在线观看网站| 国产一区二区 视频在线| 99热网站在线观看| 最近最新中文字幕大全免费视频 | 九九爱精品视频在线观看| 老司机亚洲免费影院| 啦啦啦中文免费视频观看日本| 国产av国产精品国产| 国产精品欧美亚洲77777| 久久人妻熟女aⅴ| 一本一本久久a久久精品综合妖精| 久久精品aⅴ一区二区三区四区| 狠狠精品人妻久久久久久综合| a 毛片基地| 亚洲精品国产av成人精品| 久久韩国三级中文字幕| 国产视频首页在线观看| 伦理电影免费视频| 大片电影免费在线观看免费| 欧美日韩一级在线毛片| 婷婷色麻豆天堂久久| 亚洲av日韩在线播放| 黑丝袜美女国产一区| a级片在线免费高清观看视频| 97在线人人人人妻| 国产爽快片一区二区三区| 天堂俺去俺来也www色官网| 色视频在线一区二区三区| 亚洲免费av在线视频| 日本av免费视频播放| 欧美xxⅹ黑人| 满18在线观看网站| 成人亚洲欧美一区二区av| 亚洲精华国产精华液的使用体验| 亚洲国产精品国产精品| 丝袜在线中文字幕| 欧美 亚洲 国产 日韩一| av卡一久久| 啦啦啦视频在线资源免费观看| 激情五月婷婷亚洲| 久久久久视频综合| 国产97色在线日韩免费| 人人妻人人澡人人看| 这个男人来自地球电影免费观看 | 啦啦啦在线观看免费高清www| 日韩制服骚丝袜av| 菩萨蛮人人尽说江南好唐韦庄| 精品一区二区三区四区五区乱码 | av视频免费观看在线观看| 韩国精品一区二区三区| 欧美日韩av久久| 9热在线视频观看99| 亚洲综合精品二区| 亚洲国产最新在线播放| 日本爱情动作片www.在线观看| 国产亚洲欧美精品永久| 成人黄色视频免费在线看| 只有这里有精品99| 99香蕉大伊视频| 国产精品成人在线| 久久人妻熟女aⅴ| 美女脱内裤让男人舔精品视频| 色94色欧美一区二区| 亚洲成色77777| 成人毛片60女人毛片免费| 99精国产麻豆久久婷婷| 亚洲成人av在线免费| 纵有疾风起免费观看全集完整版| 看免费成人av毛片| 99久久人妻综合| 中文字幕制服av| 久久久久久免费高清国产稀缺| netflix在线观看网站| 亚洲欧美清纯卡通| 国产成人免费无遮挡视频| 精品一区二区三区av网在线观看 | 男女下面插进去视频免费观看| 久久精品国产亚洲av高清一级| 看免费成人av毛片| 欧美黑人欧美精品刺激| 亚洲av日韩精品久久久久久密 | 亚洲精品国产区一区二| 久久人人爽人人片av| 少妇 在线观看| 97精品久久久久久久久久精品| 人人妻人人澡人人爽人人夜夜| 国产亚洲av片在线观看秒播厂| 国产成人系列免费观看| 搡老岳熟女国产| 国产淫语在线视频| 欧美av亚洲av综合av国产av | 制服诱惑二区| 别揉我奶头~嗯~啊~动态视频 | 亚洲国产最新在线播放| 我要看黄色一级片免费的| 国产精品久久久久久精品电影小说| 99热全是精品| 亚洲国产成人一精品久久久| 久久精品国产a三级三级三级| 飞空精品影院首页| 久久热在线av| 黄片无遮挡物在线观看| 成人亚洲精品一区在线观看| 精品亚洲成a人片在线观看| 99久久综合免费| 亚洲伊人久久精品综合| 亚洲国产欧美一区二区综合| 80岁老熟妇乱子伦牲交| 亚洲欧美一区二区三区国产| 男女边吃奶边做爰视频| 亚洲精品日韩在线中文字幕| 美女午夜性视频免费| 下体分泌物呈黄色| av国产精品久久久久影院| 各种免费的搞黄视频| 亚洲国产av新网站| 国产精品成人在线| 亚洲国产av新网站| 一本—道久久a久久精品蜜桃钙片| 欧美精品av麻豆av| 久久热在线av| av卡一久久| 亚洲综合精品二区| 中文乱码字字幕精品一区二区三区| 9191精品国产免费久久| av不卡在线播放| 一二三四在线观看免费中文在| 国产亚洲av片在线观看秒播厂| 久热这里只有精品99| 日韩一区二区视频免费看| 亚洲精华国产精华液的使用体验| 久久久久精品人妻al黑| 午夜福利免费观看在线| 满18在线观看网站| 18在线观看网站| 国产精品成人在线| 十分钟在线观看高清视频www| 成人影院久久| 色播在线永久视频| 一边摸一边抽搐一进一出视频| 亚洲精品中文字幕在线视频| 亚洲图色成人| 80岁老熟妇乱子伦牲交| 国产又色又爽无遮挡免| 女性生殖器流出的白浆| 香蕉丝袜av| 一区二区三区精品91| 日韩一卡2卡3卡4卡2021年| 大片电影免费在线观看免费| 亚洲婷婷狠狠爱综合网| 国产精品99久久99久久久不卡 | 欧美日韩亚洲综合一区二区三区_| 制服丝袜香蕉在线| 最新的欧美精品一区二区| 国产欧美日韩综合在线一区二区| 精品久久久久久电影网| 亚洲欧洲精品一区二区精品久久久 | 精品一区二区三区av网在线观看 | 国产一区二区 视频在线| 国产精品人妻久久久影院| 午夜日本视频在线| 国产成人精品在线电影| 日韩欧美一区视频在线观看| 国产成人系列免费观看| 热re99久久精品国产66热6| 久久精品亚洲熟妇少妇任你| 久久国产亚洲av麻豆专区| 欧美少妇被猛烈插入视频| 色吧在线观看| 国产精品国产三级专区第一集| 高清黄色对白视频在线免费看| 亚洲人成77777在线视频| 久久久久精品人妻al黑| 秋霞伦理黄片| 天天影视国产精品| 亚洲成人一二三区av| 在线亚洲精品国产二区图片欧美| 国产精品国产av在线观看| 久久久久久久久久久免费av| 超色免费av| 午夜激情久久久久久久| av在线播放精品| 丝袜脚勾引网站| 日日啪夜夜爽| 国产一卡二卡三卡精品 | 一级片免费观看大全| 人人妻人人澡人人看| 美女扒开内裤让男人捅视频| 久久青草综合色| 国产黄色视频一区二区在线观看| 亚洲专区中文字幕在线 | 69精品国产乱码久久久| 777米奇影视久久| av卡一久久| 久久久久网色| 午夜精品国产一区二区电影| 免费看不卡的av| 亚洲欧美一区二区三区黑人| 少妇人妻 视频| 亚洲欧洲精品一区二区精品久久久 | 国产成人啪精品午夜网站| 国产在视频线精品| 亚洲av在线观看美女高潮| www.av在线官网国产| 亚洲一区二区三区欧美精品| 99久久精品国产亚洲精品| 搡老乐熟女国产| 人妻人人澡人人爽人人| 午夜精品国产一区二区电影| h视频一区二区三区| 狠狠婷婷综合久久久久久88av| 观看av在线不卡| 国产成人啪精品午夜网站| 无限看片的www在线观看| 亚洲国产精品国产精品| 欧美激情极品国产一区二区三区| 日本午夜av视频| 天美传媒精品一区二区| 99热全是精品| tube8黄色片| 女性生殖器流出的白浆| 麻豆av在线久日| 七月丁香在线播放| 亚洲国产精品一区三区| 女性被躁到高潮视频| 国产乱人偷精品视频| 欧美日本中文国产一区发布| 纵有疾风起免费观看全集完整版| 男人操女人黄网站| 欧美精品av麻豆av| 老司机影院成人| 涩涩av久久男人的天堂| 九草在线视频观看| 国产精品 国内视频| 成人毛片60女人毛片免费| 又大又黄又爽视频免费| av天堂久久9| netflix在线观看网站| 一边摸一边做爽爽视频免费| 伊人久久国产一区二区| 欧美成人精品欧美一级黄| 亚洲熟女毛片儿| 性色av一级| 久久久久国产精品人妻一区二区| 男人爽女人下面视频在线观看| 99九九在线精品视频| 91精品国产国语对白视频| 观看美女的网站| 国产成人免费无遮挡视频| 91精品伊人久久大香线蕉| 女人爽到高潮嗷嗷叫在线视频| 亚洲自偷自拍图片 自拍| 热99国产精品久久久久久7| av电影中文网址| 一级毛片我不卡| av不卡在线播放| 最近手机中文字幕大全| 国产免费又黄又爽又色| 精品国产一区二区三区久久久樱花| 性少妇av在线| 黑人欧美特级aaaaaa片| 免费黄网站久久成人精品| 在线看a的网站| 国产成人欧美在线观看 | 国产精品av久久久久免费| 人人妻人人澡人人看| 国精品久久久久久国模美| 狠狠精品人妻久久久久久综合| 亚洲av电影在线进入| 爱豆传媒免费全集在线观看| 一本大道久久a久久精品| 日日啪夜夜爽| 狠狠婷婷综合久久久久久88av| 一级毛片电影观看| 成年人午夜在线观看视频| 国产日韩欧美在线精品| 国产高清不卡午夜福利| 最近最新中文字幕免费大全7| 王馨瑶露胸无遮挡在线观看| 新久久久久国产一级毛片| 肉色欧美久久久久久久蜜桃| 国产成人欧美在线观看 | 亚洲欧美精品自产自拍| 亚洲欧美成人综合另类久久久| 中文字幕高清在线视频| 亚洲国产精品国产精品| 色网站视频免费| 最新在线观看一区二区三区 | 欧美亚洲 丝袜 人妻 在线| 伦理电影免费视频| 精品少妇一区二区三区视频日本电影 | 纯流量卡能插随身wifi吗| 男女床上黄色一级片免费看| 少妇人妻 视频| 毛片一级片免费看久久久久| 国产成人欧美| 亚洲成av片中文字幕在线观看| 久久性视频一级片| 国产精品一区二区在线不卡| 热re99久久精品国产66热6| 波野结衣二区三区在线| 国产成人欧美在线观看 | 欧美精品一区二区大全| 亚洲精品乱久久久久久| 夜夜骑夜夜射夜夜干| 美女中出高潮动态图| 最新的欧美精品一区二区| 欧美日韩视频高清一区二区三区二| 飞空精品影院首页| 久久久久久久久久久免费av| e午夜精品久久久久久久| 久久精品国产综合久久久| 亚洲欧美色中文字幕在线| 高清黄色对白视频在线免费看| 2018国产大陆天天弄谢| 久久精品久久久久久久性| www.av在线官网国产| 中文字幕色久视频| 国产精品一区二区精品视频观看| 宅男免费午夜| 精品一区二区免费观看| 国产精品久久久久久精品电影小说| 午夜福利,免费看| 亚洲国产av影院在线观看| 老司机亚洲免费影院| 欧美激情 高清一区二区三区| 黄片无遮挡物在线观看| 国产精品熟女久久久久浪| 蜜桃在线观看..| 观看av在线不卡| 亚洲精品日本国产第一区| 在线精品无人区一区二区三| 国产麻豆69| 亚洲精品日本国产第一区| a级片在线免费高清观看视频| 少妇人妻 视频| av女优亚洲男人天堂| 国产在线视频一区二区| 狂野欧美激情性xxxx| 国产亚洲一区二区精品| 在线天堂最新版资源| 成人18禁高潮啪啪吃奶动态图| 男人舔女人的私密视频| 国产女主播在线喷水免费视频网站| 观看美女的网站| 日韩 欧美 亚洲 中文字幕| 国产精品成人在线| 国产精品久久久久成人av| 老司机影院毛片| a级片在线免费高清观看视频| 十八禁人妻一区二区| 亚洲综合色网址| 不卡av一区二区三区| 欧美老熟妇乱子伦牲交| 成年女人毛片免费观看观看9 | av在线观看视频网站免费| 99九九在线精品视频| 99国产精品免费福利视频| 丰满乱子伦码专区| 久久婷婷青草| 在线观看三级黄色| 国产色婷婷99| 桃花免费在线播放| 亚洲五月色婷婷综合| 肉色欧美久久久久久久蜜桃| 亚洲色图综合在线观看| 亚洲第一青青草原| 又粗又硬又长又爽又黄的视频| av在线app专区| 日本av免费视频播放| 精品国产超薄肉色丝袜足j| 欧美精品人与动牲交sv欧美| av国产久精品久网站免费入址| 亚洲国产日韩一区二区| 91老司机精品| 热99久久久久精品小说推荐| 男女国产视频网站| 精品一区二区三卡| 777米奇影视久久| 国产成人系列免费观看| 亚洲色图 男人天堂 中文字幕| xxxhd国产人妻xxx| 一级爰片在线观看| 菩萨蛮人人尽说江南好唐韦庄| 青春草国产在线视频| 欧美精品人与动牲交sv欧美| 一本大道久久a久久精品| 人人妻人人澡人人爽人人夜夜| 国产激情久久老熟女| 少妇精品久久久久久久| e午夜精品久久久久久久| 久久久久久久国产电影| 欧美日韩福利视频一区二区| 国产乱来视频区| 亚洲激情五月婷婷啪啪| 一区二区三区乱码不卡18| 欧美黄色片欧美黄色片| 国产人伦9x9x在线观看| 成人午夜精彩视频在线观看| av网站在线播放免费| 91成人精品电影| 免费不卡黄色视频| 嫩草影视91久久| 国产麻豆69| 熟妇人妻不卡中文字幕| 亚洲天堂av无毛| 性色av一级| 亚洲精品aⅴ在线观看| 亚洲精品国产av成人精品| 黄色视频不卡| 国产视频首页在线观看| 午夜影院在线不卡| 日韩伦理黄色片| 国产精品一二三区在线看| 亚洲一区二区三区欧美精品| 中文乱码字字幕精品一区二区三区| 日韩熟女老妇一区二区性免费视频| 久久久久人妻精品一区果冻| 波多野结衣av一区二区av| av免费观看日本| 国产精品免费视频内射| 国产有黄有色有爽视频| 我的亚洲天堂| 午夜免费男女啪啪视频观看| 欧美国产精品一级二级三级| 精品一品国产午夜福利视频| 一本色道久久久久久精品综合| 精品亚洲成a人片在线观看| 国产精品亚洲av一区麻豆 | 18在线观看网站| 亚洲欧美日韩另类电影网站| 一级,二级,三级黄色视频| 美女国产高潮福利片在线看| 免费女性裸体啪啪无遮挡网站| 高清不卡的av网站| 80岁老熟妇乱子伦牲交| 久久久久视频综合| 国产精品麻豆人妻色哟哟久久| 日韩一卡2卡3卡4卡2021年| 日日啪夜夜爽| 人人妻人人澡人人看| 亚洲成人一二三区av| 国产黄色免费在线视频| 曰老女人黄片| 久久免费观看电影| 建设人人有责人人尽责人人享有的| 久久久久久久久久久久大奶| 老司机亚洲免费影院| 国产伦人伦偷精品视频| 国产在视频线精品| 亚洲av日韩在线播放| 曰老女人黄片| 日韩av不卡免费在线播放| 麻豆乱淫一区二区| 一区二区三区精品91| 热re99久久精品国产66热6| 哪个播放器可以免费观看大片| 黄色 视频免费看| 亚洲色图 男人天堂 中文字幕| 热re99久久精品国产66热6| 日本色播在线视频| 亚洲精品国产av蜜桃| 一区二区av电影网| 国产爽快片一区二区三区| 久久性视频一级片| 亚洲欧美一区二区三区国产| 中文字幕人妻丝袜制服| 国产99久久九九免费精品| 亚洲久久久国产精品| 国产一区二区 视频在线| 国产精品久久久人人做人人爽| 又粗又硬又长又爽又黄的视频| 国产日韩欧美亚洲二区| 亚洲美女视频黄频| 久久人人97超碰香蕉20202| 欧美日韩视频精品一区| 韩国高清视频一区二区三区| 亚洲av国产av综合av卡| 午夜激情av网站| 国产成人精品久久二区二区91 | 老司机在亚洲福利影院| 精品国产露脸久久av麻豆| 丝袜美足系列| 国产精品一区二区在线观看99| 中文字幕高清在线视频| 波野结衣二区三区在线| 我要看黄色一级片免费的| 最近最新中文字幕大全免费视频 | 女性被躁到高潮视频| 国产成人精品久久久久久| 成年人午夜在线观看视频| 免费观看av网站的网址| 亚洲四区av| 国产免费福利视频在线观看| 免费日韩欧美在线观看| av.在线天堂| 老司机深夜福利视频在线观看 | 久久热在线av| 国产又色又爽无遮挡免| 两个人看的免费小视频| 国产伦理片在线播放av一区| av天堂久久9| 午夜福利,免费看| 天堂8中文在线网| 男女床上黄色一级片免费看| 91老司机精品| 捣出白浆h1v1| 一区二区三区四区激情视频| 大陆偷拍与自拍| 亚洲综合精品二区| 免费观看人在逋| 国产精品久久久久成人av| 天堂中文最新版在线下载| 日本欧美国产在线视频| 最近最新中文字幕大全免费视频 | 黄色毛片三级朝国网站| 欧美日本中文国产一区发布| 啦啦啦中文免费视频观看日本|