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

    用于遠(yuǎn)程廣播監(jiān)測(cè)的組合USB設(shè)備接口設(shè)計(jì)

    2017-02-09 03:12:21焦杰王英濤
    關(guān)鍵詞:描述符驅(qū)動(dòng)程序端點(diǎn)

    焦杰,王英濤

    (1.吉林省廣播電視研究所,長(zhǎng)春130041;2.吉林省廣播電視技術(shù)中心臺(tái))

    ?

    用于遠(yuǎn)程廣播監(jiān)測(cè)的組合USB設(shè)備接口設(shè)計(jì)

    焦杰1,王英濤2

    (1.吉林省廣播電視研究所,長(zhǎng)春130041;2.吉林省廣播電視技術(shù)中心臺(tái))

    介紹了一種應(yīng)用在遠(yuǎn)程廣播無(wú)人監(jiān)測(cè)點(diǎn)的組合USB設(shè)備,使用一片STM32F407單片機(jī)的單個(gè)OTG_FS同時(shí)設(shè)計(jì)出兩個(gè)設(shè)備接口,其中一個(gè)是監(jiān)測(cè)專(zhuān)用的自定義USB設(shè)備,另一個(gè)是標(biāo)準(zhǔn)HID設(shè)備。整個(gè)系統(tǒng)除了具備廣播信號(hào)監(jiān)測(cè)接收功能之外,還帶有計(jì)算機(jī)運(yùn)行監(jiān)控看門(mén)狗、遠(yuǎn)程電源遙控器和一個(gè)遠(yuǎn)程USB鍵盤(pán)。對(duì)于64位Windows不允許安裝未簽名的自定義設(shè)備驅(qū)動(dòng)程序問(wèn)題,采取了WinUSB方案解決。

    廣播監(jiān)測(cè);USB;組合設(shè)備;WinUSB;STM32F407

    引 言

    在廣播電視監(jiān)管工作中,需要設(shè)置一些遠(yuǎn)程的無(wú)人監(jiān)測(cè)站,用于收測(cè)當(dāng)?shù)氐膹V播無(wú)線(xiàn)電信號(hào),并對(duì)節(jié)目的內(nèi)容進(jìn)行自動(dòng)語(yǔ)音分析,然后利用網(wǎng)絡(luò)把監(jiān)測(cè)信息回傳到監(jiān)測(cè)中心。系統(tǒng)主要由信號(hào)接收監(jiān)測(cè)主機(jī)、監(jiān)測(cè)計(jì)算機(jī)和網(wǎng)絡(luò)設(shè)備組成。為保證系統(tǒng)長(zhǎng)期穩(wěn)定運(yùn)行,還需要具備系統(tǒng)看門(mén)狗、遠(yuǎn)程電源遙控、遠(yuǎn)程HID鍵盤(pán)等附加功能。監(jiān)測(cè)主機(jī)使用一片STM32F407單片機(jī),利用OTG_FS接口設(shè)計(jì)出一種具備信號(hào)監(jiān)測(cè)、系統(tǒng)看門(mén)狗、遠(yuǎn)程鍵盤(pán)等多種功能的組合USB設(shè)備,在實(shí)際應(yīng)用中取得了良好的效果。

    為了直截了當(dāng)?shù)亟鉀Q困擾USB相關(guān)研發(fā)過(guò)程中的幾個(gè)實(shí)際問(wèn)題,本文用實(shí)例講述研究過(guò)程中涉及的主要技術(shù)點(diǎn)。

    ① 如何設(shè)計(jì)多功能的USB組合設(shè)備: 在一片STM32F407的OTG_FS接口上實(shí)現(xiàn)兩個(gè)USB設(shè)備,一個(gè)是自定義的廣播監(jiān)測(cè)接收設(shè)備,另一個(gè)是HID鍵盤(pán)設(shè)備。

    ② 怎樣解決64位Windows系統(tǒng)的驅(qū)動(dòng)程序: 64位Windows不允許安裝未簽名的驅(qū)動(dòng)程序,限制了自定義USB設(shè)備的應(yīng)用。針對(duì)這一問(wèn)題,本文介紹一種采用WinUSB的解決方案,可以實(shí)現(xiàn)從Windows XP SP2到Windows 10,無(wú)論32位還是64位系統(tǒng)全兼容。

    ③ 實(shí)現(xiàn)Windows系統(tǒng)中應(yīng)用程序: 設(shè)計(jì)應(yīng)用程序與自定義USB設(shè)備通信、控制設(shè)備,并傳輸大量的廣播節(jié)目聲音數(shù)據(jù)。

    ④ 系統(tǒng)管理與遠(yuǎn)程HID鍵盤(pán): 利用USB通信實(shí)現(xiàn)系統(tǒng)運(yùn)行看門(mén)狗,并結(jié)合網(wǎng)絡(luò)實(shí)現(xiàn)遠(yuǎn)程電源遙控和遠(yuǎn)程HID鍵盤(pán)功能。

    1 系統(tǒng)總體結(jié)構(gòu)

    整個(gè)監(jiān)測(cè)前端由信號(hào)接收監(jiān)測(cè)主機(jī)、監(jiān)測(cè)計(jì)算機(jī)和網(wǎng)絡(luò)設(shè)備三大部分組成,其中的信號(hào)接收監(jiān)測(cè)主機(jī)也兼用作遠(yuǎn)程電源遙控器、遠(yuǎn)程USB鍵盤(pán)和系統(tǒng)運(yùn)行看門(mén)狗。遠(yuǎn)程廣播監(jiān)測(cè)前端結(jié)構(gòu)框圖如圖1所示。

    圖1 遠(yuǎn)程廣播監(jiān)測(cè)前端結(jié)構(gòu)框圖

    信號(hào)接收監(jiān)測(cè)主機(jī)中的接收電路完成廣播信號(hào)的接收,編碼后的聲音數(shù)據(jù)由STM32F407單片機(jī)利用USB接口送給監(jiān)測(cè)計(jì)算機(jī)。監(jiān)測(cè)主機(jī)具有網(wǎng)絡(luò)接口,可以接收監(jiān)測(cè)中心的電源遙控命令,遠(yuǎn)程開(kāi)啟或關(guān)閉計(jì)算機(jī),甚至可以遠(yuǎn)程關(guān)閉網(wǎng)絡(luò)設(shè)備的電源。

    監(jiān)測(cè)計(jì)算機(jī)需要定期向單片機(jī)的USB控制接口發(fā)送握手命令,如果單片機(jī)在較長(zhǎng)的時(shí)間內(nèi)不能收到USB握手信息,那么就認(rèn)為監(jiān)測(cè)計(jì)算機(jī)發(fā)生故障,利用電源控制電路關(guān)閉計(jì)算機(jī)電源,過(guò)一段時(shí)間再自動(dòng)打開(kāi),實(shí)現(xiàn)自動(dòng)重啟計(jì)算機(jī)。

    單片機(jī)在一個(gè)OTG_FS接口上組合了兩個(gè)USB設(shè)備:一個(gè)具有聲音數(shù)據(jù)接口及控制接口的自定義設(shè)備和一個(gè)HID遠(yuǎn)程鍵盤(pán)。當(dāng)監(jiān)測(cè)計(jì)算機(jī)發(fā)生特殊故障,不能進(jìn)入系統(tǒng)時(shí),利用這個(gè)遠(yuǎn)程鍵盤(pán)可以幫助遠(yuǎn)程排除故障。

    單片機(jī)采用USB接口與計(jì)算機(jī)通信的電路非常簡(jiǎn)單,只需把STM32F407的OTG_FS引腳經(jīng)匹配電阻聯(lián)接到計(jì)算機(jī)的USB口即可。單片機(jī)USB接口部分電路圖如圖2所示。

    圖2 單片機(jī)USB接口部分電路圖

    2 具有多個(gè)功能的USB組合設(shè)備

    可以在一個(gè)USB接口上實(shí)現(xiàn)多個(gè)USB設(shè)備,最常見(jiàn)的是那種只有一個(gè)USB插頭的無(wú)線(xiàn)鍵盤(pán)鼠標(biāo)組合。有兩種方法能夠在一個(gè)USB接口上實(shí)現(xiàn)多個(gè)設(shè)備:一種是復(fù)合設(shè)備(Compound Device),另一種是組合設(shè)備(Composite Device)。復(fù)合設(shè)備就是把幾個(gè)獨(dú)立的USB設(shè)備用HUB連接在一起,每個(gè)設(shè)備有各自獨(dú)立的設(shè)備ID。而組合設(shè)備是在一個(gè)設(shè)備上實(shí)現(xiàn)多個(gè)接口,它們共用同一個(gè)設(shè)備ID。復(fù)合設(shè)備中有HUB,具有繼續(xù)向下級(jí)連其他設(shè)備的潛力,但是這種設(shè)計(jì)比較復(fù)雜,占用資源較多。相比之下,如果想要實(shí)現(xiàn)同樣的功能,設(shè)計(jì)組合設(shè)備會(huì)更為簡(jiǎn)單方便。

    2.1 實(shí)現(xiàn)USB組合設(shè)備框架

    因?yàn)閁SB設(shè)備比較復(fù)雜,所以從零開(kāi)始設(shè)計(jì)絕對(duì)不是個(gè)好主意,利用現(xiàn)成的例子進(jìn)行改造會(huì)方便得多。在STM32F407單片機(jī)固件庫(kù)中,有一個(gè)USB FS Examples USB_Device_Examples HID例子,可以在它的基礎(chǔ)之上修改得到所需要的USB功能。其中有兩個(gè)關(guān)鍵問(wèn)題:需要知道在哪里改和明白應(yīng)該改成什么。

    首先需要修改那些描述符,實(shí)現(xiàn)設(shè)備的基本框架。因?yàn)樵O(shè)備描述符部分只需要改PID和VID,比較容易,所以主要的工作內(nèi)容是修改配置描述符、接口描述符和端點(diǎn)描述符。例子程序把這幾個(gè)描述符按順序排列在USBD_HID_CfgDesc數(shù)組中。原來(lái)描述符結(jié)構(gòu)需要修改成新結(jié)構(gòu),如圖3所示。

    圖3 描述符結(jié)構(gòu)的修改

    2.1.1 修改USB設(shè)備ID

    所有PNP設(shè)備都必須具有設(shè)備ID,修改usbd_desc.c中的USBD_VID和USBD_PID,改成不會(huì)與其他設(shè)備沖突的數(shù)值,這兩個(gè)數(shù)值還要寫(xiě)到安裝驅(qū)動(dòng)程序所需的那個(gè)INF文件中。

    2.1.2 設(shè)計(jì)通信端點(diǎn)

    在usbd_conf.h中添加聲音及其他端點(diǎn)號(hào),并設(shè)定端點(diǎn)包長(zhǎng)度。因?yàn)樵祭邮荋ID鼠標(biāo),所以只有HID_IN_EP一個(gè)IN端點(diǎn)。改成鍵盤(pán)需要增加一個(gè)OUT端點(diǎn)HID_OUT_EP,它可以接收到鍵盤(pán)上指示燈的狀態(tài)信息。為了能傳輸大量的聲音數(shù)據(jù),需要再新加兩個(gè)IN端點(diǎn)VENDOR_IN_EP_AUDIO1和VENDOR_IN_EP_AUDIO2,并多加一個(gè)OUT端點(diǎn)VENDOR_OUT_EP,用于向自定義設(shè)備寫(xiě)出數(shù)據(jù)。因?yàn)殒I盤(pán)的數(shù)據(jù)包比鼠標(biāo)大,所以需要改大HID端點(diǎn)包長(zhǎng)度為64。

    2.1.3 配置端點(diǎn)FIFO

    使用STM32F407單片機(jī)的OTG_FS進(jìn)行設(shè)計(jì),需要修改usb_conf.h,為各端點(diǎn)重新分配FIFO長(zhǎng)度。必須注意在原始例子默認(rèn)狀態(tài)下,只有EP0和EP1是可用的,其他端點(diǎn)因沒(méi)有分配過(guò)FIFO所以還不能用。需要用哪個(gè)端點(diǎn)就必須給它分配FIFO,特別要注意STM32F407的FIFO總共有320字節(jié),各端點(diǎn)FIFO加起來(lái)的總數(shù)量不可以超過(guò)這個(gè)總長(zhǎng)度。

    2.1.4 修改配置描述符

    在usbd_hid_core.c設(shè)計(jì)配置描述符,也就是修改USBD_HID_CfgDesc數(shù)組,把bNumInterfaces從1改成2,表示有HID鍵盤(pán)和自定義設(shè)備共計(jì)兩個(gè)接口。再把接口描述符的bNumEndpoints從1改成2,表示這個(gè)HID鍵盤(pán)接口上有兩個(gè)端點(diǎn);nInterfaceProtocol從2改成1表示把鼠標(biāo)改成鍵盤(pán)。

    在原來(lái)HID端點(diǎn)描述符之后,仿照原來(lái)的IN端點(diǎn)添加一個(gè)新的HID_OUT_EP端點(diǎn)描述符。注意鍵盤(pán)鼠標(biāo)端點(diǎn)的bmAttributes是3,表示采用中斷傳輸模式。

    2.1.5 添加自定義設(shè)備的描述符

    在HID端點(diǎn)描述符之后添加自定義設(shè)備的接口描述符,可以復(fù)制前面的HID接口描述符,在其基礎(chǔ)上進(jìn)行修改:

    ① bInterfaceNumber是順序號(hào),在前面的HID接口描述符里是0,所以輪到這個(gè)需要用1。注意這個(gè)值與后面驅(qū)動(dòng)程序安裝有關(guān),在后面介紹WinUSB驅(qū)動(dòng)程序安裝時(shí)會(huì)再次看到它的作用。

    ② bNumEndpoints是端點(diǎn)數(shù)量,自定義的監(jiān)測(cè)設(shè)備有3個(gè)端點(diǎn)(bInterfaceClass、bInterfaceSubClass、nInterfaceProtocol),改成0xff、0x00、0x00表示自定義的設(shè)備。在接口描述符后面,依次羅列這三個(gè)端點(diǎn)描述符,仿照HID端點(diǎn)描述符填寫(xiě)即可。

    2.1.6 修改HID報(bào)告描述符

    HID鍵盤(pán)還需要一個(gè)報(bào)告描述符,因?yàn)檫@個(gè)鍵盤(pán)不需要支持特殊的按鍵和指示燈,所以可以隨便找一個(gè)現(xiàn)成的例子。替換原來(lái)的鼠標(biāo)報(bào)告描述符HID_MOUSE_ReportDesc,并注意修改程序中所有涉及到報(bào)告描述符的長(zhǎng)度數(shù)值。

    2.2 實(shí)現(xiàn)USB組合設(shè)備的固件接口程序

    把修改數(shù)據(jù)之后形成的組合設(shè)備框架編譯寫(xiě)入STM32F407,接到計(jì)算機(jī)上就可以看到在設(shè)備管理器窗口中會(huì)多出來(lái)三個(gè)設(shè)備:USB Composite Device、HID鍵盤(pán)和沒(méi)有驅(qū)動(dòng)程序的未知設(shè)備。

    2.2.1 新添加端點(diǎn)的打開(kāi)與關(guān)閉

    在usbd_hid_core.c中添加新端點(diǎn)的打開(kāi)與關(guān)閉消息調(diào)用程序代碼。USBD_HID_Init函數(shù)中,原來(lái)有一個(gè)DCD_EP_Open,它只打開(kāi)了鼠標(biāo)的IN端口。仿照樣子添加打開(kāi)新定義的HID_OUT_EP、VENDOR_OUT_EP、VENDOR_IN_EP_AUDIO1和 VENDOR_IN_EP_AUDIO2端口。在USBD_HID_DeInit函數(shù)中添加DCD_EP_Close,把這幾個(gè)新端口關(guān)閉。

    2.2.2 非0端點(diǎn)數(shù)據(jù)收發(fā)

    非0端點(diǎn)可以進(jìn)行中斷傳輸或塊傳輸,在usbd_hid_core.c中添加自定義設(shè)備與計(jì)算機(jī)軟件塊傳輸?shù)慕涌诔绦虼a,固件庫(kù)采用函數(shù)回調(diào)的方式來(lái)添加這些功能。在數(shù)據(jù)結(jié)構(gòu)USBD_HID_cb中有一個(gè)DataOut,在那里設(shè)置一個(gè)回調(diào)函數(shù)USBD_VENDOR_DataOut (void *pdev, uint8_t epnum)。當(dāng)計(jì)算機(jī)發(fā)送數(shù)據(jù)到設(shè)備的非0端點(diǎn)時(shí),會(huì)觸發(fā)這個(gè)函數(shù)回調(diào),并傳入?yún)?shù)epnum表明數(shù)據(jù)要發(fā)送到哪個(gè)端點(diǎn),用USBD_GetRxCount庫(kù)函數(shù)可以取得本次單片機(jī)收到的數(shù)據(jù)字節(jié)數(shù)。

    在數(shù)據(jù)結(jié)構(gòu)USBD_HID_cb中有一個(gè)SOF和一個(gè)DataIn,在那里設(shè)置兩個(gè)回調(diào)函數(shù),即USBD_VENDOR_SOF(void *pdev)和USBD_VENDOR_DataIn (void *pdev, uint8_t epnum)。USB總線(xiàn)的SOF信號(hào)會(huì)引起周期性地回調(diào)USBD_VENDOR_SOF,可以把這個(gè)函數(shù)回調(diào)作為可以向計(jì)算機(jī)上傳數(shù)據(jù)的啟動(dòng)信號(hào)。每當(dāng)設(shè)備向計(jì)算機(jī)發(fā)完一組數(shù)據(jù)之后,都將回調(diào)USBD_HID_DataIn函數(shù)。因此配合運(yùn)用SOF回調(diào)結(jié)合USBD_HID_DataIn函數(shù),在它們的處理函數(shù)中再使用DCD_EP_Tx庫(kù)函數(shù),可以高速向計(jì)算機(jī)發(fā)送大批量的數(shù)據(jù)。非零端點(diǎn)數(shù)據(jù)發(fā)送中斷回調(diào)與主程序聯(lián)動(dòng)流程圖如圖4所示。

    圖4 非零端點(diǎn)數(shù)據(jù)發(fā)送中斷回調(diào)與主程序聯(lián)動(dòng)流程圖

    利用“正發(fā)送標(biāo)志”來(lái)協(xié)調(diào)運(yùn)用這兩個(gè)回調(diào)函數(shù),可以快速傳輸大量的聲音數(shù)據(jù)。

    2.2.3 專(zhuān)用控制端點(diǎn)0的數(shù)據(jù)收發(fā)

    端點(diǎn)0是特殊的控制端點(diǎn),在usbd_req.c中,有一個(gè)USBD_StdDevReq函數(shù),每個(gè)對(duì)設(shè)備EP0的控制傳輸都會(huì)調(diào)用這里。USB_SETUP_REQ 結(jié)構(gòu)保存著從計(jì)算機(jī)發(fā)來(lái)的控制數(shù)據(jù)。對(duì)于查詢(xún)少量數(shù)據(jù)信息的命令,可以直接調(diào)用USBD_CtlSendData庫(kù)函數(shù)傳送一些數(shù)據(jù)應(yīng)答到計(jì)算機(jī)。而對(duì)于執(zhí)行較慢的設(shè)置,有必要聯(lián)合運(yùn)用主程序main函數(shù)設(shè)計(jì)成異步工作方式。圖5是單片機(jī)異步控制、主程序聯(lián)動(dòng)工作流程圖。

    圖5 端點(diǎn)0異步控制中斷回調(diào)與主程序聯(lián)動(dòng)流程圖

    上位計(jì)算機(jī)把一個(gè)慢速異步設(shè)置分解成“設(shè)置”和“查詢(xún)”兩個(gè)步驟,先通知單片機(jī)進(jìn)行設(shè)置,之后需要定期查詢(xún)?cè)O(shè)置被執(zhí)行的結(jié)果。單片機(jī)收到“設(shè)置”命令之后,緩存設(shè)置參數(shù)退出EP0控制傳輸處理子程序;然后主程序取得緩存的參數(shù)執(zhí)行這個(gè)設(shè)置,把設(shè)置結(jié)論緩存起來(lái)供上位計(jì)算機(jī)進(jìn)行查詢(xún)。整個(gè)“設(shè)置”與“查詢(xún)”兩個(gè)任務(wù)過(guò)程的協(xié)調(diào)核心數(shù)據(jù)是“執(zhí)行狀態(tài)標(biāo)志”變量,0表示空閑沒(méi)有任務(wù);1表示已收到任務(wù)命令但還未執(zhí)行;2表示任務(wù)已開(kāi)始執(zhí)行;3表示任務(wù)已經(jīng)執(zhí)行完畢可查詢(xún)到執(zhí)行結(jié)果。

    2.2.4 HID鍵盤(pán)收發(fā)數(shù)據(jù)

    前面在定義端點(diǎn)時(shí),HID鍵盤(pán)使用兩個(gè)中斷類(lèi)型端點(diǎn)HID_IN_EP和HID_OUT_EP收發(fā)數(shù)據(jù)。利用HID_IN_EP端點(diǎn),可以把從網(wǎng)絡(luò)遠(yuǎn)程傳來(lái)的數(shù)據(jù)轉(zhuǎn)成鍵盤(pán)按鍵信息。

    一條按鍵信息有8個(gè)字節(jié):

    第一字節(jié)為SHIFT、CTRL等特殊控制鍵的位組合,每位代表一個(gè)按鍵;

    第二字節(jié)為保留字節(jié);

    后面字節(jié)為每一個(gè)字節(jié)都可以填入鍵盤(pán)掃描碼,支持6個(gè)鍵同時(shí)按下。

    主程序可以調(diào)用DCD_EP_Tx庫(kù)函數(shù)向計(jì)算機(jī)發(fā)送鍵盤(pán)信息,一次鍵盤(pán)信息由一個(gè)按鍵通碼和一個(gè)斷碼組成。用于系統(tǒng)維護(hù)的遠(yuǎn)程鍵盤(pán)不需要支持同時(shí)多按鍵功能,也不需要特殊控制鍵。如果想要按一下回車(chē)鍵,那么發(fā)送通碼數(shù)據(jù)是{0,0,0x28,0,0,0,0,0},斷碼是8個(gè)0。

    3 驅(qū)動(dòng)程序問(wèn)題

    在Windows系統(tǒng)中,組合USB設(shè)備的這個(gè)HID鍵盤(pán)不需要額外的驅(qū)動(dòng)程序,而自定義的USB設(shè)備必須安裝驅(qū)動(dòng)程序。64位系統(tǒng)對(duì)驅(qū)動(dòng)程序的要求較為嚴(yán)格,只有經(jīng)過(guò)數(shù)字簽名的驅(qū)動(dòng)程序才可以正常安裝。本文介紹使用系統(tǒng)自帶的WinUSB驅(qū)動(dòng)程序可以滿(mǎn)足自定義USB設(shè)備的需要。

    3.1 WinUSB簡(jiǎn)介

    WinUSB是Windows系統(tǒng)自帶的USB驅(qū)動(dòng)程序,用它可以讓自定義的USB設(shè)備在XP、Vista、Win7、Win8、Win10上得到全面的支持,不論是32位還是64位,都能兼容。驅(qū)動(dòng)開(kāi)發(fā)工作僅僅是再提供一個(gè)INF文件去安裝自定義的USB設(shè)備。

    3.2 WinUSB驅(qū)動(dòng)程序安裝

    在MSDN,有一篇名為《WinUSB (Winusb.sys) 安裝》[3]的文章,里面可以找到安裝過(guò)程的介紹。除非有特殊的問(wèn)題要查找,否則不需要細(xì)看那些內(nèi)容,直接從“編寫(xiě)適用于WinUSB安裝的自定義INF”那段復(fù)制INF例子內(nèi)容,在其基礎(chǔ)上修改成自己的安裝程序。

    對(duì)于普通的USB設(shè)備,只需找到%DeviceName% =USB_Install, USBVID_0547&PID_1002那行,改成前面在usbd_desc.c中的USBD_VID和USBD_PID就可以了。然而對(duì)于本文介紹的這種組合USB設(shè)備,還需要在PID的后面增加接口序號(hào)。在前面介紹接口描述符時(shí),自定義設(shè)備的接口號(hào)是1,所以設(shè)備名要寫(xiě)成:USBVID_0547&PID_1002&MI_01。

    INF文件中還有一節(jié):

    [Dev_AddReg]

    HKR,,DeviceInterfaceGUIDs,0x10000,"{9f543223-cede-4fa3-b376-a25ce9a30e74}"

    需要注意這行與應(yīng)用程序枚舉驅(qū)動(dòng)程序有關(guān),這個(gè)GUID在本文后面設(shè)計(jì)應(yīng)用程序時(shí)會(huì)用到。

    4 Windows應(yīng)用程序接口設(shè)計(jì)

    應(yīng)用程序必須調(diào)用Winusb.dll與自定義的USB設(shè)備通信,其接口說(shuō)明在參考文獻(xiàn)[4]中有介紹,應(yīng)用程序接口設(shè)計(jì)在參考文獻(xiàn)[5]中有較詳細(xì)的介紹,并提供了代碼。這里不重復(fù)介紹其內(nèi)容,只對(duì)容易出現(xiàn)的問(wèn)題提供解決方法。

    4.1 準(zhǔn)備Winusb.dll的接口H文件

    為了讓?xiě)?yīng)用程序代碼適用于多種編譯環(huán)境,建議采用動(dòng)態(tài)加載Winusb.dll的方法來(lái)控制自定義的USB設(shè)備。對(duì)應(yīng)的接口H文件Winusb.h可以在WDK中找到。

    4.2 枚舉自定義的組合USB設(shè)備

    在MSDN中介紹了用SetupDiGetClassDevs和SetupDiEnumDeviceInterfaces這兩個(gè)API來(lái)枚舉USB設(shè)備,需要注意輸入的GUID參數(shù)。本文在前面介紹INF文件提到過(guò)這行:

    圖6 用控制線(xiàn)程強(qiáng)制退出數(shù)據(jù)讀阻塞的流程

    HKR,,DeviceInterfaceGUIDs,0x10000,"{9f543223-cede-4fa3-b376-a25ce9a30e74}"

    必須用這里的GUID進(jìn)行枚舉,才能正確找到這個(gè)自定義設(shè)備。在枚舉成功之后,用Setup DiGet Device Interface Detail取得設(shè)備驅(qū)動(dòng)的設(shè)備路徑實(shí)例,應(yīng)用程序可以利用WM_DEVICECHANGE消息,在處理函數(shù)中枚舉設(shè)備在線(xiàn)情況,可以對(duì)USB的熱插拔進(jìn)行及時(shí)處理。

    4.3 打開(kāi)與關(guān)閉設(shè)備驅(qū)動(dòng)

    用API函數(shù)CreateFile打開(kāi)設(shè)備,可以得到自定義設(shè)備的文件句柄。為了使用WinUSB,要求這個(gè)API的參數(shù)必須設(shè)置FILE_FLAG_OVERLAPPED標(biāo)志。

    在WinUSB.dll中,所有函數(shù)都用WinUsb_開(kāi)頭。WinUsb_Initialize利用設(shè)備的文件句柄創(chuàng)建一個(gè)WinUSB接口句柄,如果出錯(cuò),很可能是枚舉時(shí)用錯(cuò)了GUID。成功創(chuàng)建之后就可以調(diào)用WinUSB的其他函數(shù)與單片機(jī)通信了。在程序退出或設(shè)備撤出時(shí),必須調(diào)用CloseHandle關(guān)閉設(shè)備,用WinUsb_Free關(guān)閉WinUSB接口句柄。

    4.4 控制端點(diǎn)EP0通信

    本文在前面介紹單片機(jī)的控制端點(diǎn)EP0時(shí),提到過(guò)USB_SETUP_REQ 結(jié)構(gòu)。在WinUsb中有一個(gè)對(duì)應(yīng)的WINUSB_SETUP_PACKET數(shù)據(jù)結(jié)構(gòu),它們是同樣的數(shù)據(jù)結(jié)構(gòu)。也就是說(shuō),應(yīng)用程序調(diào)用WinUsb_ControlTransfer時(shí),會(huì)把WINUSB_SETUP_PACKET參數(shù)原樣送給單片機(jī),然后單片機(jī)用USBD_CtlSendData庫(kù)函數(shù)應(yīng)答的數(shù)據(jù)會(huì)填充到WinUsb_ControlTransfer的Buffer參數(shù)里返回給應(yīng)用程序。

    4.5 非0端點(diǎn)塊傳輸通信

    應(yīng)用程序調(diào)用WinUsb_WritePipe向單片機(jī)寫(xiě)入塊數(shù)據(jù),會(huì)觸發(fā)單片機(jī)中USBD_HID_cb結(jié)構(gòu)上那個(gè)DataOut函數(shù)回調(diào)接收數(shù)據(jù)。單片機(jī)用DCD_EP_Tx庫(kù)函數(shù)發(fā)出的數(shù)據(jù)可以在應(yīng)用程序中調(diào)用WinUsb_ReadPipe讀取。

    通常為簡(jiǎn)化程序設(shè)計(jì),所以設(shè)置WinUsb_WritePipe和WinUsb_ReadPipe的Overlapped參數(shù)為NULL。在此情況下,這兩個(gè)函數(shù)都是阻塞的,如果出現(xiàn)某種情況,單片機(jī)不能提供足夠的數(shù)據(jù)供計(jì)算機(jī)讀取,或者不能接收計(jì)算機(jī)發(fā)出的數(shù)據(jù),都會(huì)導(dǎo)致計(jì)算機(jī)程序鎖死在那里,不能繼續(xù)向下執(zhí)行。圖6描述了一個(gè)在數(shù)據(jù)讀取阻塞時(shí),利用控制線(xiàn)程強(qiáng)制退出阻塞狀態(tài)的流程。因此有必要利用多任務(wù)把數(shù)據(jù)管道讀或?qū)懙墓δ塥?dú)立到另一個(gè)線(xiàn)程中,主程序線(xiàn)程利用控制端點(diǎn)EP0來(lái)控制單片機(jī)那里對(duì)數(shù)據(jù)的接收和發(fā)送,在特殊情況下可以通知單片機(jī)強(qiáng)制接收并丟棄數(shù)據(jù),或者胡亂發(fā)送一些填充數(shù)據(jù),這樣就可以跳出WinUsb_WritePipe和WinUsb_ReadPipe的阻塞狀態(tài)。

    5 系統(tǒng)管理與遠(yuǎn)程HID鍵盤(pán)

    對(duì)整個(gè)監(jiān)測(cè)系統(tǒng)的管理就是看門(mén)狗與遠(yuǎn)程遙控管理,遠(yuǎn)程控制功能有計(jì)算機(jī)遠(yuǎn)程遙控軟件和網(wǎng)絡(luò)遠(yuǎn)程遙控硬件兩個(gè)組成部分。

    5.1 遠(yuǎn)程電源管理器

    計(jì)算機(jī)系統(tǒng)運(yùn)行正常是所有計(jì)算機(jī)遠(yuǎn)程遙控軟件可以正常使用的根本前提。一旦Windows系統(tǒng)死機(jī)或者進(jìn)不去了,那么再優(yōu)秀的遙控軟件也都無(wú)計(jì)可施。在這種情況下,解決的辦法就只剩下計(jì)算機(jī)斷電重啟了。

    使用STM32F407固件庫(kù)中的LwIP設(shè)計(jì)一個(gè)網(wǎng)絡(luò)WEB服務(wù)器程序,實(shí)現(xiàn)遠(yuǎn)程在頁(yè)面上遙控單片機(jī)的一個(gè)I/O口電平,只需將這個(gè)I/O口連接到一個(gè)由三極管控制的繼電器上,就能實(shí)現(xiàn)對(duì)計(jì)算機(jī)電源的遙控功能。

    用類(lèi)似的方法可以設(shè)計(jì)網(wǎng)絡(luò)設(shè)備的遠(yuǎn)程遙控電路。然而當(dāng)網(wǎng)絡(luò)設(shè)備斷電之后,整個(gè)前端就無(wú)法再繼續(xù)遙控了,因此單片機(jī)對(duì)網(wǎng)絡(luò)的控制邏輯是斷電后延時(shí)幾分鐘再自動(dòng)加電。

    5.2 計(jì)算機(jī)系統(tǒng)運(yùn)行看門(mén)狗

    系統(tǒng)中有兩大看門(mén)狗,一個(gè)是計(jì)算機(jī)運(yùn)行看門(mén)狗,另一個(gè)是網(wǎng)絡(luò)運(yùn)行看門(mén)狗。計(jì)算機(jī)必須定期通過(guò)USB向單片機(jī)的VENDOR_OUT_EP端點(diǎn)發(fā)出喂狗命令,否則單片機(jī)就會(huì)認(rèn)為計(jì)算機(jī)發(fā)生故障而自動(dòng)關(guān)閉計(jì)算機(jī)電源,過(guò)幾分鐘自動(dòng)通電再讓它重啟動(dòng)。

    在單片機(jī)中記錄著監(jiān)測(cè)中心服務(wù)器的IP地址,并且會(huì)定期主動(dòng)聯(lián)接服務(wù)器的一個(gè)特定TCP端口。一旦單片機(jī)長(zhǎng)時(shí)間始終無(wú)法與服務(wù)器聯(lián)接,就認(rèn)為網(wǎng)絡(luò)設(shè)備發(fā)生故障,將自動(dòng)對(duì)網(wǎng)絡(luò)設(shè)備斷電,然后延遲一段時(shí)間再上電,實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備遇到故障時(shí)的復(fù)位重新啟動(dòng)。

    5.3 遠(yuǎn)程HID鍵盤(pán)

    有時(shí)計(jì)算機(jī)會(huì)卡在系統(tǒng)啟動(dòng)期間,需要現(xiàn)場(chǎng)操作鍵盤(pán)解決。例如64位WIN7有時(shí)發(fā)生故障會(huì)卡在“系統(tǒng)修復(fù)”界面,在這種情況下,如果沒(méi)人去按一下鍵盤(pán)回車(chē)鍵,那么就不能繼續(xù)啟動(dòng)運(yùn)行。這種系統(tǒng)故障發(fā)生時(shí),因?yàn)橄到y(tǒng)沒(méi)起來(lái),遠(yuǎn)程軟件還沒(méi)啟動(dòng),所以任何軟件辦法都失靈,只有

    依靠設(shè)計(jì)在組合USB設(shè)備中的HID鍵盤(pán)來(lái)執(zhí)行遠(yuǎn)程系統(tǒng)修復(fù)了。在監(jiān)測(cè)中心利用網(wǎng)絡(luò)遠(yuǎn)程登陸單片機(jī)的WEB服務(wù)器,在頁(yè)面上點(diǎn)擊“發(fā)送回車(chē)鍵”按鈕,單片機(jī)就可以把一個(gè)回車(chē)按鍵信息的一個(gè)通碼附加上一個(gè)斷碼從USB輸入計(jì)算機(jī),就像在那個(gè)監(jiān)測(cè)點(diǎn)現(xiàn)場(chǎng)直接鍵入回車(chē)信息一樣。有了這樣一種遠(yuǎn)程鍵盤(pán),即使遠(yuǎn)程無(wú)人前端進(jìn)入不了系統(tǒng),或者沒(méi)有遠(yuǎn)程遙控軟件,也可維護(hù)計(jì)算機(jī)了。

    結(jié) 語(yǔ)

    [1] 張秀娟,梁波.多功能USB組合設(shè)備的結(jié)構(gòu)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011(11).

    [2] Microsoft提供的USB驅(qū)動(dòng)程序[EB/OL].[2016-05-30].https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff538853(v=vs.85).aspx.

    [3] WinUSB (Winusb.sys)安裝[EB/OL].[2016-05-30].https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff540283.

    [4] WinUSB Functions[EB/OL].[2016-05-30].https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff540046 (v=vs.85). aspx#winusb.

    [5] 編寫(xiě)基于WinUSB模板的Windows 桌面應(yīng)用[EB/OL].[2016-05-30].https://msdn.microsoft.com/zh-cn/library/windows/hardware/dn376872(v=vs.85).aspx.

    [6] STMicroelectronics.STM32F405xx/07xx advanced ARM-based 32-bit MCUs Reference manual,2013.

    焦杰(工程師),主要研究方向?yàn)閺V播電視信號(hào)監(jiān)測(cè)與控制技術(shù);王英濤(高級(jí)工程師),主要從事調(diào)頻廣播和無(wú)線(xiàn)電視信號(hào)播出工作。

    (責(zé)任編輯:楊迪娜 收修改稿日期:2016-09-30)

    Design of USB Composite Device Interface for Remote Broadcast Monitoring

    Jiao Jie1,Wang Yingtao2

    (1.Radio&Television Research Institute of Jilin Province,Changchun 130041,China;2.Radio&Television Technology Center Station of Jilin Province)

    In the paper,a USB composite device for broadcasting remote monitoring based on a STM32F407 microcontroller is introduced.Two device interfaces are designed by one OTG_FS circuit interface.The one is the custom USB device,the other one is the standard HID device.In addition to the radio signal receiving and monitoring,some other functions are designed,such as a power controller and a USB keyboard both from the remote network,and a watchdog of computer system is designed.For 64-bit Windows does not allow the installation of the unsigned custom device driver issues,the paper introduces WinUSB to solve it.

    broadcasting monitoring;USB;composite device;WinUSB;STM32F407

    TP37

    A

    猜你喜歡
    描述符驅(qū)動(dòng)程序端點(diǎn)
    非特征端點(diǎn)條件下PM函數(shù)的迭代根
    基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
    不等式求解過(guò)程中端點(diǎn)的確定
    Linux單線(xiàn)程并發(fā)服務(wù)器探索
    參數(shù)型Marcinkiewicz積分算子及其交換子的加權(quán)端點(diǎn)估計(jì)
    利用CNN的無(wú)人機(jī)遙感影像特征描述符學(xué)習(xí)
    基丁能雖匹配延拓法LMD端點(diǎn)效應(yīng)處理
    基于PDIUSBD12的USB接口設(shè)計(jì)應(yīng)用研究
    驅(qū)動(dòng)程序更新與推薦
    驅(qū)動(dòng)程序更新與推薦
    亚洲五月色婷婷综合| 男女国产视频网站| 我的老师免费观看完整版| 日日摸夜夜添夜夜添av毛片| 免费黄频网站在线观看国产| 在线亚洲精品国产二区图片欧美 | 国产免费福利视频在线观看| 亚洲精品自拍成人| 国产免费福利视频在线观看| 久久99一区二区三区| 九九在线视频观看精品| 夫妻性生交免费视频一级片| 国产精品.久久久| 日韩成人伦理影院| 亚洲三级黄色毛片| 欧美97在线视频| 久久国产精品男人的天堂亚洲 | 亚洲综合色惰| 人人妻人人澡人人爽人人夜夜| 日韩电影二区| 国产高清三级在线| 国产亚洲av片在线观看秒播厂| 熟妇人妻不卡中文字幕| 久久久久久久国产电影| 丝袜在线中文字幕| 丝袜在线中文字幕| 亚洲国产欧美日韩在线播放| 久久久久久久大尺度免费视频| 国产精品一二三区在线看| 丰满饥渴人妻一区二区三| 一边摸一边做爽爽视频免费| 欧美xxxx性猛交bbbb| 99热这里只有是精品在线观看| 午夜激情av网站| 亚洲欧美一区二区三区国产| 在线免费观看不下载黄p国产| 日本黄色片子视频| 丰满饥渴人妻一区二区三| 亚洲精品成人av观看孕妇| 久久99热6这里只有精品| 青春草国产在线视频| 建设人人有责人人尽责人人享有的| 中文字幕制服av| 韩国高清视频一区二区三区| 久久国内精品自在自线图片| 校园人妻丝袜中文字幕| 综合色丁香网| 大片免费播放器 马上看| 91精品伊人久久大香线蕉| 一区二区三区免费毛片| 一级毛片我不卡| 国内精品宾馆在线| 国产精品嫩草影院av在线观看| 国产精品熟女久久久久浪| 亚洲国产精品成人久久小说| 亚洲欧美中文字幕日韩二区| 国产黄色视频一区二区在线观看| 亚洲五月色婷婷综合| 久久99热6这里只有精品| 另类精品久久| 丝袜在线中文字幕| 国产色爽女视频免费观看| 亚洲国产精品国产精品| 极品少妇高潮喷水抽搐| 天天影视国产精品| 美女中出高潮动态图| 午夜视频国产福利| 80岁老熟妇乱子伦牲交| 人妻 亚洲 视频| 日韩在线高清观看一区二区三区| 在线精品无人区一区二区三| av有码第一页| 永久网站在线| 男女边摸边吃奶| 亚洲精品视频女| 超色免费av| 视频区图区小说| 一本色道久久久久久精品综合| 欧美精品国产亚洲| 夫妻午夜视频| 久久午夜综合久久蜜桃| 在线观看免费高清a一片| 人妻人人澡人人爽人人| 在线 av 中文字幕| 韩国av在线不卡| 亚洲国产欧美日韩在线播放| 91成人精品电影| tube8黄色片| 少妇的逼水好多| 国产精品99久久久久久久久| 人体艺术视频欧美日本| 人妻夜夜爽99麻豆av| 亚洲av国产av综合av卡| 男人操女人黄网站| 色婷婷av一区二区三区视频| 精品久久蜜臀av无| 亚洲精品国产色婷婷电影| 在线观看免费视频网站a站| 一级片'在线观看视频| 性色avwww在线观看| 亚洲人与动物交配视频| 高清视频免费观看一区二区| 精品人妻一区二区三区麻豆| 免费黄频网站在线观看国产| 国产午夜精品一二区理论片| 久久久久国产网址| 美女脱内裤让男人舔精品视频| 22中文网久久字幕| 亚洲色图 男人天堂 中文字幕 | 人体艺术视频欧美日本| 久久热精品热| 成人国产麻豆网| 高清av免费在线| 久久综合国产亚洲精品| 国语对白做爰xxxⅹ性视频网站| 欧美日韩av久久| 成人二区视频| 在线观看人妻少妇| 成人午夜精彩视频在线观看| 中国美白少妇内射xxxbb| 国产成人精品在线电影| 亚洲av日韩在线播放| 黄片无遮挡物在线观看| 女人精品久久久久毛片| 国产精品欧美亚洲77777| 成人漫画全彩无遮挡| av国产久精品久网站免费入址| 曰老女人黄片| 韩国av在线不卡| 黑人巨大精品欧美一区二区蜜桃 | 女的被弄到高潮叫床怎么办| 日日啪夜夜爽| 在线观看免费视频网站a站| 尾随美女入室| 国产免费现黄频在线看| a级毛片在线看网站| 成人国产麻豆网| 男女国产视频网站| 亚洲国产最新在线播放| 在现免费观看毛片| 国产亚洲一区二区精品| 欧美成人午夜免费资源| 18+在线观看网站| 黄色一级大片看看| 天堂中文最新版在线下载| 成人手机av| 日韩制服骚丝袜av| 国产片内射在线| 91精品国产国语对白视频| a 毛片基地| 国产爽快片一区二区三区| 午夜影院在线不卡| 国产伦理片在线播放av一区| 日本黄色日本黄色录像| 亚洲av欧美aⅴ国产| 精品国产乱码久久久久久小说| 精品久久国产蜜桃| 黄色毛片三级朝国网站| 国产精品熟女久久久久浪| 晚上一个人看的免费电影| 国产精品麻豆人妻色哟哟久久| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 亚洲av中文av极速乱| 国产伦精品一区二区三区视频9| 精品久久国产蜜桃| 国模一区二区三区四区视频| 国产 精品1| 高清毛片免费看| 80岁老熟妇乱子伦牲交| 成人亚洲精品一区在线观看| 美女大奶头黄色视频| 国产精品秋霞免费鲁丝片| 男女国产视频网站| 国产在视频线精品| 晚上一个人看的免费电影| 一区二区日韩欧美中文字幕 | 国产日韩欧美亚洲二区| 亚洲精品一二三| 日本-黄色视频高清免费观看| 久久精品国产自在天天线| 国产精品一区二区在线不卡| 国模一区二区三区四区视频| 天堂俺去俺来也www色官网| 天天影视国产精品| 国产欧美亚洲国产| 三级国产精品欧美在线观看| 欧美日韩视频精品一区| 18禁裸乳无遮挡动漫免费视频| 久久青草综合色| 欧美日韩av久久| 国产亚洲精品第一综合不卡 | 久久av网站| 亚洲精品aⅴ在线观看| 精品国产一区二区久久| 丰满乱子伦码专区| 美女国产高潮福利片在线看| 亚洲精品乱码久久久v下载方式| 精品人妻在线不人妻| 国产男女超爽视频在线观看| 人体艺术视频欧美日本| 91国产中文字幕| 又粗又硬又长又爽又黄的视频| 亚洲成人手机| 欧美丝袜亚洲另类| 一区二区日韩欧美中文字幕 | 中文字幕人妻熟人妻熟丝袜美| a级片在线免费高清观看视频| 精品熟女少妇av免费看| 视频区图区小说| 日韩成人av中文字幕在线观看| 国产 精品1| 久久久久久久久久久丰满| 黄色配什么色好看| 男女边摸边吃奶| 成人国语在线视频| 久久97久久精品| 91精品国产九色| 午夜免费男女啪啪视频观看| 国产免费一级a男人的天堂| 观看av在线不卡| 精品久久久久久久久av| 99久久综合免费| 亚洲成人一二三区av| 久久久精品免费免费高清| 波野结衣二区三区在线| 欧美日韩精品成人综合77777| xxx大片免费视频| 91久久精品国产一区二区成人| 三级国产精品片| 国产淫语在线视频| 国产av精品麻豆| 欧美人与性动交α欧美精品济南到 | 日产精品乱码卡一卡2卡三| 草草在线视频免费看| 国产精品女同一区二区软件| 简卡轻食公司| 亚洲国产毛片av蜜桃av| 成人亚洲欧美一区二区av| 黄片无遮挡物在线观看| 中文字幕最新亚洲高清| 精品一区二区三区视频在线| 丝瓜视频免费看黄片| 黄色配什么色好看| 久久99蜜桃精品久久| 国产亚洲最大av| 国产 精品1| 国产日韩欧美在线精品| 精品国产露脸久久av麻豆| 日本色播在线视频| 一级二级三级毛片免费看| 日韩 亚洲 欧美在线| 国产淫语在线视频| 国产成人精品久久久久久| 黑人高潮一二区| 99九九在线精品视频| 在线亚洲精品国产二区图片欧美 | 久久久精品94久久精品| 亚洲国产精品成人久久小说| 国产色婷婷99| 夜夜看夜夜爽夜夜摸| 亚洲国产av新网站| 日日摸夜夜添夜夜爱| 婷婷成人精品国产| 国产伦理片在线播放av一区| 亚洲精品,欧美精品| 国产精品女同一区二区软件| 少妇人妻精品综合一区二区| av专区在线播放| 男女啪啪激烈高潮av片| 多毛熟女@视频| 少妇人妻精品综合一区二区| 久久久久久久亚洲中文字幕| 性高湖久久久久久久久免费观看| 大香蕉久久成人网| 青春草亚洲视频在线观看| 最近手机中文字幕大全| 老熟女久久久| 精品国产露脸久久av麻豆| 中国三级夫妇交换| 好男人视频免费观看在线| 国产亚洲精品第一综合不卡 | 国产av码专区亚洲av| 国产成人免费观看mmmm| 精品卡一卡二卡四卡免费| 18禁观看日本| 成人免费观看视频高清| av福利片在线| 亚洲av电影在线观看一区二区三区| 狂野欧美激情性bbbbbb| 精品一品国产午夜福利视频| 欧美精品人与动牲交sv欧美| 亚洲欧洲日产国产| a 毛片基地| 热99久久久久精品小说推荐| 亚洲一区二区三区欧美精品| 国产男女内射视频| 日韩 亚洲 欧美在线| 18+在线观看网站| 午夜av观看不卡| 啦啦啦中文免费视频观看日本| 久久精品久久久久久久性| 国产毛片在线视频| av播播在线观看一区| 国产高清有码在线观看视频| 久热久热在线精品观看| 久久精品人人爽人人爽视色| 亚洲国产精品专区欧美| 亚洲国产最新在线播放| 久久国产精品男人的天堂亚洲 | 91午夜精品亚洲一区二区三区| 欧美国产精品一级二级三级| 99热6这里只有精品| h视频一区二区三区| 91国产中文字幕| 王馨瑶露胸无遮挡在线观看| 黄色欧美视频在线观看| 最新的欧美精品一区二区| 欧美性感艳星| 国产精品蜜桃在线观看| 免费看不卡的av| 亚洲国产av新网站| videossex国产| 欧美一级a爱片免费观看看| 久久热精品热| 免费大片18禁| 亚洲国产欧美日韩在线播放| .国产精品久久| 日韩中文字幕视频在线看片| 国产精品熟女久久久久浪| 青春草视频在线免费观看| 纵有疾风起免费观看全集完整版| 国产男人的电影天堂91| 韩国av在线不卡| 亚洲中文av在线| 成人国语在线视频| 国产精品99久久99久久久不卡 | 少妇高潮的动态图| 少妇人妻 视频| 亚洲婷婷狠狠爱综合网| tube8黄色片| 精品人妻偷拍中文字幕| 久久影院123| 国产69精品久久久久777片| 黄色配什么色好看| 十分钟在线观看高清视频www| 在线 av 中文字幕| 亚洲丝袜综合中文字幕| 亚洲精品日韩在线中文字幕| av在线播放精品| 丁香六月天网| 母亲3免费完整高清在线观看 | 亚洲av综合色区一区| 看十八女毛片水多多多| 亚洲综合色网址| 日韩一区二区三区影片| 女人久久www免费人成看片| 国产欧美另类精品又又久久亚洲欧美| 水蜜桃什么品种好| 国产毛片在线视频| 3wmmmm亚洲av在线观看| 我要看黄色一级片免费的| 久热这里只有精品99| 91国产中文字幕| 18禁在线无遮挡免费观看视频| 午夜福利视频在线观看免费| 永久免费av网站大全| 国产成人av激情在线播放 | 亚洲成人av在线免费| 久久久久视频综合| 亚洲欧美中文字幕日韩二区| 人妻一区二区av| 99热网站在线观看| 简卡轻食公司| 国产成人精品福利久久| 亚洲一级一片aⅴ在线观看| 国产视频内射| 亚洲av二区三区四区| 亚洲精品乱久久久久久| 熟女人妻精品中文字幕| 国产在线视频一区二区| 成人国产av品久久久| 午夜av观看不卡| 男男h啪啪无遮挡| 久久毛片免费看一区二区三区| 精品国产乱码久久久久久小说| videossex国产| kizo精华| 国产精品秋霞免费鲁丝片| 男人爽女人下面视频在线观看| 国产探花极品一区二区| 成人国产av品久久久| 国产精品免费大片| 国产无遮挡羞羞视频在线观看| 国产精品.久久久| 一边亲一边摸免费视频| 亚洲国产欧美日韩在线播放| 肉色欧美久久久久久久蜜桃| 久久综合国产亚洲精品| 在线观看人妻少妇| 久久99蜜桃精品久久| 99九九在线精品视频| 亚洲精华国产精华液的使用体验| 国产伦精品一区二区三区视频9| 少妇 在线观看| 色网站视频免费| 亚洲国产精品一区三区| 国产日韩欧美亚洲二区| 亚洲精品久久久久久婷婷小说| 一级毛片我不卡| 亚洲久久久国产精品| 国产一区亚洲一区在线观看| 久久99热6这里只有精品| 你懂的网址亚洲精品在线观看| 欧美日韩视频高清一区二区三区二| 一个人免费看片子| 欧美人与性动交α欧美精品济南到 | 亚洲国产最新在线播放| 99久久精品一区二区三区| 亚洲欧洲国产日韩| 久久精品夜色国产| 久久女婷五月综合色啪小说| 少妇的逼好多水| 在线亚洲精品国产二区图片欧美 | 大香蕉97超碰在线| 国产成人freesex在线| 啦啦啦在线观看免费高清www| 在线亚洲精品国产二区图片欧美 | 亚洲高清免费不卡视频| 欧美变态另类bdsm刘玥| 菩萨蛮人人尽说江南好唐韦庄| 国产乱来视频区| 亚洲人成77777在线视频| 青春草亚洲视频在线观看| 老女人水多毛片| 国产一区二区三区av在线| 99久久精品国产国产毛片| 91精品三级在线观看| xxx大片免费视频| 女的被弄到高潮叫床怎么办| 欧美精品人与动牲交sv欧美| 美女内射精品一级片tv| 欧美老熟妇乱子伦牲交| 黑人高潮一二区| 免费黄网站久久成人精品| 2022亚洲国产成人精品| av电影中文网址| 看免费成人av毛片| 国产视频首页在线观看| videos熟女内射| 如日韩欧美国产精品一区二区三区 | a级毛片免费高清观看在线播放| 欧美亚洲日本最大视频资源| 这个男人来自地球电影免费观看 | 在线观看人妻少妇| 日本wwww免费看| 亚洲精品一区蜜桃| 有码 亚洲区| 色5月婷婷丁香| 91久久精品国产一区二区成人| 99视频精品全部免费 在线| 亚洲国产色片| 在线观看免费日韩欧美大片 | 99热网站在线观看| 日韩一区二区视频免费看| 在线观看美女被高潮喷水网站| 国产免费现黄频在线看| 美女国产高潮福利片在线看| 久久99蜜桃精品久久| 九九爱精品视频在线观看| av又黄又爽大尺度在线免费看| 少妇的逼水好多| 亚洲,一卡二卡三卡| 国产精品久久久久久久电影| 狂野欧美白嫩少妇大欣赏| 亚洲色图 男人天堂 中文字幕 | 国产精品人妻久久久影院| 国产又色又爽无遮挡免| 在线观看免费高清a一片| av.在线天堂| 秋霞在线观看毛片| 人人妻人人澡人人看| 国产高清三级在线| 成人漫画全彩无遮挡| 亚洲成色77777| av女优亚洲男人天堂| 成人黄色视频免费在线看| 精品亚洲乱码少妇综合久久| 国产亚洲欧美精品永久| 国产欧美日韩精品亚洲av| 一本久久精品| 高清毛片免费观看视频网站 | 美女福利国产在线| 欧美精品一区二区大全| 女人被躁到高潮嗷嗷叫费观| 成年女人毛片免费观看观看9 | 黄色视频,在线免费观看| 国产精品国产高清国产av | 国产成人啪精品午夜网站| 老司机亚洲免费影院| 纯流量卡能插随身wifi吗| 天天躁狠狠躁夜夜躁狠狠躁| 18在线观看网站| 美女国产高潮福利片在线看| 露出奶头的视频| 热99re8久久精品国产| 午夜两性在线视频| 欧美精品一区二区免费开放| 黑人巨大精品欧美一区二区mp4| 亚洲精华国产精华精| 欧美国产精品va在线观看不卡| 国内毛片毛片毛片毛片毛片| 免费在线观看视频国产中文字幕亚洲| 久久人妻福利社区极品人妻图片| 欧美乱码精品一区二区三区| 精品久久久久久久毛片微露脸| 午夜福利影视在线免费观看| 欧美日韩亚洲综合一区二区三区_| 99国产精品一区二区三区| 色精品久久人妻99蜜桃| 国产精品免费视频内射| 亚洲人成电影观看| 另类精品久久| 无人区码免费观看不卡 | 高清毛片免费观看视频网站 | 大型av网站在线播放| 9热在线视频观看99| 免费少妇av软件| 黄色丝袜av网址大全| 高清视频免费观看一区二区| 黄色毛片三级朝国网站| 日本a在线网址| 亚洲欧美精品综合一区二区三区| 又大又爽又粗| 欧美 日韩 精品 国产| 18禁美女被吸乳视频| 久久 成人 亚洲| 亚洲午夜精品一区,二区,三区| 丝袜在线中文字幕| 欧美激情高清一区二区三区| 淫妇啪啪啪对白视频| 午夜福利一区二区在线看| 国产成人免费观看mmmm| 999久久久精品免费观看国产| 国产精品自产拍在线观看55亚洲 | 色精品久久人妻99蜜桃| 又黄又粗又硬又大视频| 视频区欧美日本亚洲| 午夜免费鲁丝| 欧美激情 高清一区二区三区| 欧美日韩亚洲国产一区二区在线观看 | 老司机亚洲免费影院| 亚洲视频免费观看视频| 欧美日韩一级在线毛片| 超碰97精品在线观看| 国产精品自产拍在线观看55亚洲 | 久久九九热精品免费| 久久久久久免费高清国产稀缺| 最黄视频免费看| 精品亚洲成国产av| 夫妻午夜视频| 国产在线视频一区二区| 美国免费a级毛片| 亚洲国产欧美一区二区综合| 女人被躁到高潮嗷嗷叫费观| 首页视频小说图片口味搜索| 国产一卡二卡三卡精品| 91精品国产国语对白视频| 男女之事视频高清在线观看| 在线观看免费视频日本深夜| 操出白浆在线播放| 丁香欧美五月| 精品第一国产精品| 午夜福利在线免费观看网站| 手机成人av网站| 别揉我奶头~嗯~啊~动态视频| 国产在线观看jvid| 一级毛片女人18水好多| 大型av网站在线播放| 国产深夜福利视频在线观看| 国产精品欧美亚洲77777| 成人亚洲精品一区在线观看| 亚洲欧美日韩另类电影网站| 两人在一起打扑克的视频| 国产精品免费一区二区三区在线 | 亚洲欧美激情在线| 大码成人一级视频| 国产午夜精品久久久久久| 黄色视频在线播放观看不卡| 日本wwww免费看| 国产91精品成人一区二区三区 | 99riav亚洲国产免费| 国产野战对白在线观看| 黄片播放在线免费| 满18在线观看网站| 亚洲全国av大片| 国产片内射在线| 欧美日韩亚洲综合一区二区三区_| 国产成人欧美| 国产精品久久电影中文字幕 | 色精品久久人妻99蜜桃| 国产野战对白在线观看| 亚洲色图综合在线观看| a级毛片在线看网站| 午夜福利视频在线观看免费| 窝窝影院91人妻| 一级,二级,三级黄色视频| 新久久久久国产一级毛片| 色视频在线一区二区三区| 69av精品久久久久久 | 国产精品久久电影中文字幕 | 超色免费av| 国产在线观看jvid| 色综合婷婷激情| 青草久久国产| 国产精品香港三级国产av潘金莲|