999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于LabVIEW的通用且可定制的數(shù)據(jù)采集處理軟件設(shè)計(jì)

2018-11-28 09:07:30
計(jì)算機(jī)測(cè)量與控制 2018年11期
關(guān)鍵詞:用戶(hù)

(昆明船舶設(shè)備研究試驗(yàn)中心,昆明 650051)

0 引言

數(shù)據(jù)采集系統(tǒng)包括硬件采集設(shè)備及配套軟件,硬件采集設(shè)備用于模擬信號(hào)到數(shù)字信號(hào)的轉(zhuǎn)換,配套軟件一般稱(chēng)為“數(shù)據(jù)采集與處理軟件”,負(fù)責(zé)硬件設(shè)備的配置、控制及對(duì)轉(zhuǎn)換后數(shù)字信號(hào)的處理及終端顯示等。硬件采集設(shè)備的實(shí)現(xiàn)一般使用FPGA(field programmable gate array,現(xiàn)場(chǎng)可編程邏輯門(mén)陣列)+ADC(analog digital convert,模-數(shù)轉(zhuǎn)換器)的硬件平臺(tái)自主開(kāi)發(fā),或直接選用市場(chǎng)通用產(chǎn)品。在市場(chǎng)產(chǎn)品中,美國(guó)NI(National Instruments)公司開(kāi)發(fā)的DAQ系列硬件采集設(shè)備采用模塊化設(shè)計(jì),用戶(hù)可針對(duì)不同項(xiàng)目自由選擇組合功能、性能各異的硬件模塊實(shí)現(xiàn)一套功能完整的硬件采集設(shè)備,使得在開(kāi)發(fā)數(shù)據(jù)采集系統(tǒng)時(shí),節(jié)約硬件開(kāi)發(fā)時(shí)間,用戶(hù)只需著重考慮軟件部分的設(shè)計(jì)工作。

LabVIEW(Laboratory Virtual Instrument Engineering Work bench)是NI公司針對(duì)于該公司硬件采集產(chǎn)品配套開(kāi)發(fā)的一種程序設(shè)計(jì)語(yǔ)言[2],LabVIEW編程語(yǔ)言可與NI公司的硬件采集設(shè)備無(wú)縫連接,實(shí)現(xiàn)采集硬件的實(shí)時(shí)配置、實(shí)時(shí)控制[3],同時(shí)LabVIEW具備高度封裝底層邏輯、圖形化編程方式、以數(shù)據(jù)流為導(dǎo)向、可實(shí)時(shí)插入過(guò)程監(jiān)視探針等特點(diǎn),使得LabVIEW在測(cè)量與控制系統(tǒng)的開(kāi)發(fā)中有著得天獨(dú)厚的優(yōu)勢(shì)[4]。

本文以實(shí)際項(xiàng)目為例,項(xiàng)目中硬件采集設(shè)備均使用市場(chǎng)上成熟的NI公司DAQ系列產(chǎn)品,項(xiàng)目開(kāi)發(fā)的主要工作是軟件部分的開(kāi)發(fā),本文具體闡述一種以L(fǎng)abVIEW編程語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)的數(shù)據(jù)采集處理軟件的設(shè)計(jì)方法,該軟件的新穎之處在于既能滿(mǎn)足多個(gè)項(xiàng)目通用的數(shù)據(jù)采集功能,又能針對(duì)不同項(xiàng)目提供定制化的數(shù)據(jù)處理手段及針對(duì)性的終端顯示界面。

1 總體設(shè)計(jì)

對(duì)于不同的數(shù)據(jù)采集項(xiàng)目,有著形態(tài)各異的前端傳感器,一般情況下,針對(duì)不同項(xiàng)目的需求,需要定制化設(shè)計(jì)數(shù)據(jù)采集系統(tǒng)[5]。如下圖所示,圖1中標(biāo)示3個(gè)獨(dú)立的項(xiàng)目的開(kāi)發(fā)內(nèi)容,在軟件開(kāi)發(fā)部分,存在大量的重復(fù)工作,對(duì)于任意的一個(gè)數(shù)據(jù)采集軟件,均需要開(kāi)發(fā)用戶(hù)界面、采集硬件控制、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理等功能,其中數(shù)據(jù)處理功能需要針對(duì)項(xiàng)目定制開(kāi)發(fā)[6],例如溫度采集、聲信號(hào)采集、磁信號(hào)采集,軟件界面均需要顯示實(shí)時(shí)采集波形、頻譜等基礎(chǔ)數(shù)據(jù),而數(shù)據(jù)處理功能模塊就不能共用,溫、聲、磁有各自截然不同的數(shù)據(jù)處理方法。

圖1 不同項(xiàng)目的數(shù)據(jù)采集系統(tǒng)

為了提高軟件開(kāi)發(fā)效率,整合各數(shù)據(jù)采集軟件可共用的通用功能(如圖1中的用戶(hù)界面、硬件控制、數(shù)據(jù)存儲(chǔ)),設(shè)計(jì)一個(gè)適用于大部分前端傳感器的“通用采集平臺(tái)”,負(fù)責(zé)通用的數(shù)據(jù)采集功能。對(duì)于不能通用的定制化代碼(例如圖1中針對(duì)“項(xiàng)目C”定制開(kāi)發(fā)的“數(shù)據(jù)處理C”模塊),采用一種靈活的“插件”編程風(fēng)格,將定制化代碼設(shè)計(jì)成一種必須依托于“通用采集平臺(tái)”才能運(yùn)行的“插件”,“插件”可以按需求動(dòng)態(tài)加載到通用采集平臺(tái)中,這樣即實(shí)現(xiàn)了通用的數(shù)據(jù)采集功能,又滿(mǎn)足了針對(duì)特定項(xiàng)目的定制化開(kāi)發(fā),這種設(shè)計(jì)方法如圖2所示。

圖2 通用數(shù)據(jù)采集平臺(tái)+插件的設(shè)計(jì)方式

圖2中,傳感器為任意的模擬量傳感器,NI-DAQ-X為NI公司的各型DAQ硬件采集設(shè)備。數(shù)據(jù)采集與處理軟件分為“通用采集平臺(tái)”及“定制化插件”兩部分,其中“通用采集平臺(tái)”一次開(kāi)發(fā)成型后,對(duì)于不同的項(xiàng)目,只需進(jìn)行極少的改動(dòng)、甚至無(wú)需改動(dòng)就可以使用,負(fù)責(zé)通用的數(shù)據(jù)采集功能;“定制化插件”需要根據(jù)項(xiàng)目定制化開(kāi)發(fā),滿(mǎn)足特定項(xiàng)目的軟件功能需求。例如“定制化插件”內(nèi)的“插件C”就是針對(duì)“項(xiàng)目C”定制化開(kāi)發(fā)的。簡(jiǎn)單來(lái)說(shuō)“通用采集平臺(tái)”實(shí)現(xiàn)了“數(shù)據(jù)采集與處理軟件”的“采集”功能,而“定制化插件”則負(fù)責(zé)實(shí)現(xiàn)“處理”功能。

“通用采集平臺(tái)”實(shí)現(xiàn)了適用于大部分模擬信號(hào)采集項(xiàng)目的基本數(shù)據(jù)采集功能,包括采集硬件配置、用戶(hù)操作響應(yīng)、信號(hào)采集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)回放、圖形顯示界面等功能,具體實(shí)現(xiàn)上,本項(xiàng)目采用基于消息隊(duì)列的生產(chǎn)者消費(fèi)者編程框架[7],該框架的多線(xiàn)程編程方式使得數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)、圖形顯示等模塊化功能處于不同的線(xiàn)程并行運(yùn)行,保證數(shù)據(jù)采集的實(shí)時(shí)性要求,限于篇幅,“通用采集平臺(tái)”的實(shí)現(xiàn)方法不作為本文重點(diǎn),不再贅述。

2 軟件定制化設(shè)計(jì)

2.1 總體方案

“通用采集平臺(tái)”實(shí)現(xiàn)了各項(xiàng)目的通用采集需求,對(duì)于不同項(xiàng)目的特殊需求,開(kāi)發(fā)針對(duì)性的定制化“插件”,同時(shí)在“通用采集平臺(tái)”上搭建一個(gè)通用接口,可調(diào)用所有的定制化“插件”,而且這種調(diào)用必須要能“動(dòng)態(tài)”實(shí)現(xiàn),“動(dòng)態(tài)”的意義在于針對(duì)不同項(xiàng)目調(diào)用加載不同“插件”,其他無(wú)關(guān)“插件”并不加載入內(nèi)存[8],更不會(huì)調(diào)用,避免隨著“插件”數(shù)量的增加軟件性能降低及內(nèi)存溢出。如圖3所示為接口設(shè)計(jì)的原理框圖,包括項(xiàng)目信息檢索、UI菜單初始化、用戶(hù)操作響應(yīng)、“插件”動(dòng)態(tài)調(diào)用、消息隊(duì)列初始化等幾部分邏輯代碼功能塊。

圖3 接口實(shí)現(xiàn)原理框圖

總體上,“通用采集平臺(tái)”負(fù)責(zé)數(shù)據(jù)的采集,采集后的數(shù)據(jù)通過(guò)隊(duì)列的方式,傳輸?shù)脚c項(xiàng)目對(duì)應(yīng)的“插件”中,具體數(shù)據(jù)傳輸?shù)侥膫€(gè)項(xiàng)目、哪個(gè)“插件”,由用戶(hù)操作菜單選項(xiàng)指定,“插件”的工作方式由具體代碼決定,既可以是只在后臺(tái)運(yùn)行的某種數(shù)據(jù)處理方法,也可以是在前臺(tái)運(yùn)行可與用戶(hù)交互的窗口。

2.2 項(xiàng)目信息檢索

軟件啟動(dòng)時(shí),首先檢索項(xiàng)目信息,包括項(xiàng)目名與對(duì)應(yīng)“插件”資源位置等。具體實(shí)現(xiàn)方法上,將各項(xiàng)目的定制化代碼存放在特定文件夾(本項(xiàng)目使用“Dynamic vi”文件夾),文件夾下以項(xiàng)目名(例如“ProjectA”、“ProjectB”……)創(chuàng)建子文件夾存儲(chǔ)項(xiàng)目相關(guān)定制化代碼vi文件(LabVIEW的源代碼文件的后綴名為.vi,指代源代碼文件),項(xiàng)目名文件夾下的所有vi文件的集合既是對(duì)應(yīng)該項(xiàng)目的“插件”。“插件”的入口vi文件以“項(xiàng)目名-Main.vi”命名,文檔結(jié)構(gòu)如圖4所示。

圖4 項(xiàng)目文件結(jié)構(gòu)圖

程序初始化時(shí),遍歷整個(gè)“Dynamic vi”文件夾,得到所有項(xiàng)目名及“插件”資源位置,遍歷算法的具體實(shí)現(xiàn)如圖5所示。值得一提的是,圖5中為了查找“Dynamic vi”的路徑,基路徑使用的是函數(shù)——“本vi路徑”提供的相對(duì)路徑,而沒(méi)有使用絕對(duì)路徑,這樣的好處在于代碼移植到其他計(jì)算機(jī)或文件夾下無(wú)需更改[9]。另外,在得到遍歷的項(xiàng)目名之后,對(duì)應(yīng)每一個(gè)項(xiàng)目名均創(chuàng)建了一個(gè)“通知器”,“通知器”可以簡(jiǎn)單的理解為容量只有1的隊(duì)列,且數(shù)據(jù)為損耗式入隊(duì)(Lossy Enqueue),隊(duì)列滿(mǎn)時(shí),不管隊(duì)列已有數(shù)據(jù)是否被讀取,強(qiáng)制將已有數(shù)據(jù)清除并將新數(shù)據(jù)入隊(duì),這種數(shù)據(jù)入隊(duì)的方式好處是不會(huì)發(fā)生數(shù)據(jù)阻塞,保證線(xiàn)程之間的獨(dú)立性,本文中“通知器”與“隊(duì)列”意義相同,該“通知器”的使用在下文詳述。

圖5 遍歷算法及隊(duì)列初始化

2.3 UI菜單初始化

軟件啟動(dòng)時(shí),默認(rèn)運(yùn)行在通用采集狀態(tài)下,需要針對(duì)項(xiàng)目定制化分析時(shí),需要用戶(hù)指定用于哪個(gè)項(xiàng)目,也就是告知程序調(diào)用哪個(gè)“插件”。本項(xiàng)目通過(guò)UI(User Interface,用戶(hù)界面)菜單選項(xiàng)的方式提供給用戶(hù)操作接口[10],菜單的初始化是在程序啟動(dòng)時(shí)動(dòng)態(tài)完成的,菜單選項(xiàng)對(duì)應(yīng)項(xiàng)目名,項(xiàng)目名的來(lái)源由上文所述的遍歷檢索Dynamic vi文件夾得到。如圖6所示為軟件運(yùn)行時(shí)用戶(hù)點(diǎn)擊菜單選擇項(xiàng)目的效果截圖,當(dāng)用戶(hù)點(diǎn)擊“定制化分析”菜單選項(xiàng)下面的“ProjectA”時(shí),后臺(tái)程序就會(huì)調(diào)用項(xiàng)目對(duì)應(yīng)的“插件A”,準(zhǔn)確來(lái)說(shuō)是調(diào)用入口vi文件“ProjectA-Main.vi”,之后彈出該vi的前面板,也就實(shí)現(xiàn)了“ProjectA”的定制化分析及顯示功能。

圖6 點(diǎn)擊UI界面菜單選項(xiàng)效果截圖

2.4 動(dòng)態(tài)調(diào)用

軟件主UI使用菜單選項(xiàng)提供給了用戶(hù)操作接口,真正的設(shè)計(jì)重點(diǎn)在于后臺(tái)接收到用戶(hù)點(diǎn)擊菜單選項(xiàng)后如何實(shí)現(xiàn)“插件”的動(dòng)態(tài)調(diào)用,具體實(shí)現(xiàn)方法上,使用“vi服務(wù)器”的動(dòng)態(tài)加載技術(shù)。“vi服務(wù)器”可實(shí)現(xiàn)前面板對(duì)象、vi和LabVIEW環(huán)境的動(dòng)態(tài)控制,vi服務(wù)器的本質(zhì)是一套LabVIEW運(yùn)行環(huán)境的底層管理函數(shù),如圖7所示為動(dòng)態(tài)調(diào)用vi的關(guān)鍵代碼。

圖7 動(dòng)態(tài)調(diào)用代碼實(shí)現(xiàn)

首先以用戶(hù)操作傳入的“項(xiàng)目名”為變量查找項(xiàng)目對(duì)應(yīng)的插件資源位置,之后使用系統(tǒng)自帶的“動(dòng)態(tài)調(diào)用函數(shù)”調(diào)用該“插件”的入口vi文件。調(diào)用入口vi文件時(shí),需要明確指定該vi的輸入變量“Notifier IN”,該變量是一個(gè)“通知器”的引用變量,表明了該vi從哪一個(gè)“通知器”讀取數(shù)據(jù)。程序初始化時(shí)會(huì)為每一個(gè)項(xiàng)目一一對(duì)應(yīng)創(chuàng)建與之相對(duì)應(yīng)的“通知器”,項(xiàng)目名即為“通知器”名,此處調(diào)用時(shí),使用用戶(hù)操作傳入的“項(xiàng)目名”獲取對(duì)應(yīng)“通知器”的引用,再將該引用賦值給“Notifier IN”變量,也就指明了被動(dòng)態(tài)調(diào)用的vi從哪一個(gè)“通知器”讀取數(shù)據(jù)。

“Notifier IN”變量的使用,根本上解決了“通用采集平臺(tái)”與“插件”之間數(shù)據(jù)交互的統(tǒng)一接口的問(wèn)題,在“插件”代碼編寫(xiě)時(shí),預(yù)留“Notifier IN”輸入變量,此時(shí)該“插件”只知道從該變量對(duì)應(yīng)的“通知器”中去讀取數(shù)據(jù),而不知道具體是哪個(gè),用戶(hù)操作選擇特定項(xiàng)目時(shí),“Notifier IN”變量被賦值為與項(xiàng)目對(duì)應(yīng)的“通知器”引用,“插件”這時(shí)才確切知道從哪里讀數(shù)據(jù)。在“通用采集平臺(tái)”中,默認(rèn)工作模式下,“通知器”并不工作,用戶(hù)操作選擇特定項(xiàng)目時(shí),“通用采集平臺(tái)”才啟用項(xiàng)目對(duì)應(yīng)的“通知器”并向其中寫(xiě)數(shù)據(jù),損耗性入隊(duì)(Lossy Enqueue)的寫(xiě)數(shù)據(jù)方式保證了“通用采集平臺(tái)”與“插件”的獨(dú)立性,就算“插件”異常也不影響“通用采集平臺(tái)”的正常工作,否則可能發(fā)生消息堵塞。可見(jiàn),“插件”與“通用采集平臺(tái)”之間是相互獨(dú)立的,“通用采集平臺(tái)”可獨(dú)立運(yùn)行在默認(rèn)的通用采集模式下,而“插件”必須依托于“通用采集平臺(tái)”才能正常工作,他們之間在用戶(hù)操作時(shí)才建立起聯(lián)系。

2.5 硬件動(dòng)態(tài)配置

另一個(gè)需要考慮的問(wèn)題是對(duì)不同項(xiàng)目使用硬件采集設(shè)備的實(shí)時(shí)動(dòng)態(tài)配置。由于NI公司提供了功能強(qiáng)大的硬件驅(qū)動(dòng),在LabVIEW軟件端實(shí)現(xiàn)硬件的控制較為簡(jiǎn)便,驅(qū)動(dòng)提供了LabVIEW自動(dòng)識(shí)別系統(tǒng)中已連接設(shè)備的功能,還提供了詳盡的硬件操作接口,例如“打開(kāi)硬件資源”、“讀取數(shù)據(jù)”、“重啟設(shè)備”等。具體軟件設(shè)計(jì)上,設(shè)計(jì)獨(dú)立的模態(tài)窗口用于用戶(hù)操作配置硬件,采集開(kāi)始前用戶(hù)必須自行配置硬件參數(shù),例如“采樣率”、“采樣電壓范圍”、“存盤(pán)路徑”等必要參數(shù),配置信息具有自動(dòng)存儲(chǔ)功能,下次啟動(dòng)軟件時(shí)默認(rèn)參數(shù)為上一次配置參數(shù),如圖8為硬件配置窗口,包括數(shù)據(jù)輸入配置選項(xiàng)及數(shù)據(jù)輸出配置選項(xiàng),當(dāng)系統(tǒng)沒(méi)有連接實(shí)際硬件設(shè)備時(shí),可配置為虛擬硬件,用于軟硬件調(diào)試。

圖8 硬件配置窗口

3 效果評(píng)估

本文所述的軟件設(shè)計(jì)方法,主要是為了解決代碼的復(fù)用性問(wèn)題,提高項(xiàng)目開(kāi)發(fā)效率。對(duì)于文本編程序言,可以通過(guò)評(píng)估復(fù)用代碼的行數(shù)在總代碼行數(shù)中的占比來(lái)衡量代碼的復(fù)用性。

對(duì)于LabVIEW這種圖形化編程語(yǔ)言,很難嚴(yán)格的量化代碼量,一種方法是將vi數(shù)量理解為代碼量,不過(guò),每個(gè)vi的功能不盡相同,規(guī)模也各不相同,單個(gè)用戶(hù)vi的規(guī)模并沒(méi)有定性規(guī)定,完全隨工程師的個(gè)人編程習(xí)慣,就算對(duì)于同一個(gè)工程師編寫(xiě)的程序,這種方法也只是一種大概的估算;另外還可用vi的nodes來(lái)評(píng)估代碼規(guī)模,nodes可以簡(jiǎn)單理解為L(zhǎng)abVIEW代碼中的輸入輸出節(jié)點(diǎn)的總數(shù)量,節(jié)點(diǎn)的概念可簡(jiǎn)單理解為輸入輸出接口,例如簡(jiǎn)單的加法運(yùn)算包括2個(gè)輸入節(jié)點(diǎn),1個(gè)輸出節(jié)點(diǎn),LabVIEW中自帶的底層vi的節(jié)點(diǎn)數(shù)是固定的,而大部分用戶(hù)vi可分解為各種底層vi,這種方法相對(duì)更客觀。

如圖9所示,從左到右分別是項(xiàng)目主vi(Main.vi,簡(jiǎn)稱(chēng)Main)、“插件A”的入口vi(ProjectA-Main.vi,簡(jiǎn)稱(chēng)PA)、“插件B”的入口vi(ProjecB-Main.vi,簡(jiǎn)稱(chēng)PB)的子vi調(diào)用數(shù)和總nodes。其中“插件A”的代碼較復(fù)雜,“插件B”的代碼相對(duì)簡(jiǎn)單,Main是“通用采集平臺(tái)”的主vi,簡(jiǎn)單認(rèn)為“通用采集平臺(tái)”的所有代碼均是可復(fù)用的。

圖9 調(diào)用子vi及nodes統(tǒng)計(jì)

在表1中,簡(jiǎn)明展示了Main、PA、PB調(diào)用的子vi、庫(kù)函數(shù)vi的數(shù)量,及Total Nodes(總節(jié)點(diǎn)數(shù)),這些統(tǒng)計(jì)量一定程度反應(yīng)了各自vi的代碼量,而Main的代碼量占某個(gè)總代碼量的比例,也一定程度上反應(yīng)了代碼的復(fù)用程度(占比越高,說(shuō)明可復(fù)用的Main占項(xiàng)目代碼量較多,代碼復(fù)用性越好)。

表1 Main、PA、PB估算代碼量及占比

4 結(jié)論

本文提出了一種以“通用采集平臺(tái)”為基礎(chǔ)、采用插件式編程模式實(shí)現(xiàn)針對(duì)項(xiàng)目定制化的“數(shù)據(jù)采集與處理軟件”的設(shè)計(jì)方法,并給出了重要的代碼的實(shí)現(xiàn)方法。使用該方法實(shí)現(xiàn)的“數(shù)據(jù)采集與處理軟件”既有通用化采集軟件的實(shí)用性,又可滿(mǎn)足了特定任務(wù)的定制化需求。在項(xiàng)目開(kāi)發(fā)上,由于“通用采集平臺(tái)”的通用化設(shè)計(jì),極大的提高了代碼的復(fù)用性,使得該設(shè)計(jì)模式具有較大的實(shí)用價(jià)值。

猜你喜歡
用戶(hù)
雅閣國(guó)內(nèi)用戶(hù)交付突破300萬(wàn)輛
您撥打的用戶(hù)已戀愛(ài),請(qǐng)稍后再哭
關(guān)注用戶(hù)
關(guān)注用戶(hù)
兩新黨建新媒體用戶(hù)與全網(wǎng)新媒體用戶(hù)之間有何差別
關(guān)注用戶(hù)
關(guān)注用戶(hù)
挖掘用戶(hù)需求尖端科技應(yīng)用
Camera360:拍出5億用戶(hù)
100萬(wàn)用戶(hù)
主站蜘蛛池模板: 国产香蕉在线| 91午夜福利在线观看精品| 国产一区二区视频在线| 色婷婷成人| 亚洲国产精品VA在线看黑人| 国产高潮流白浆视频| 制服丝袜无码每日更新| 伊人久久久久久久久久| 欧美中文字幕一区| 中文字幕啪啪| 久久96热在精品国产高清| 一级在线毛片| 国产在线日本| 欧美一区二区三区国产精品| 中文国产成人精品久久| 久久精品这里只有国产中文精品| 乱色熟女综合一区二区| 国产欧美性爱网| 亚洲不卡影院| 中文成人无码国产亚洲| 国产男女免费完整版视频| 欧美激情综合一区二区| 国产剧情伊人| 区国产精品搜索视频| 亚洲国产精品VA在线看黑人| 色丁丁毛片在线观看| 毛片在线看网站| 2020国产免费久久精品99| 国产精品亚洲欧美日韩久久| 91青青草视频| 国产美女主播一级成人毛片| 亚洲视频免费在线| 毛片一区二区在线看| 在线观看精品国产入口| 婷婷成人综合| 波多野结衣一区二区三区四区| 久久永久免费人妻精品| 亚洲中文久久精品无玛| 亚洲视频在线网| 色综合国产| 一本一道波多野结衣一区二区| 亚洲最新网址| 青青青国产精品国产精品美女| 久久夜色精品国产嚕嚕亚洲av| 午夜国产大片免费观看| 一级全免费视频播放| 久久99热66这里只有精品一| 亚洲中文字幕久久精品无码一区| 黄色网址免费在线| 久久一本精品久久久ー99| 欧美爱爱网| 亚洲日本一本dvd高清| 精品无码一区二区三区在线视频| 五月激激激综合网色播免费| 国产中文一区二区苍井空| 亚洲欧洲天堂色AV| 亚洲精品福利视频| 日韩第八页| 宅男噜噜噜66国产在线观看| www亚洲精品| 亚洲第一极品精品无码| 成人在线观看一区| 99精品久久精品| 三级国产在线观看| 欧美三级自拍| 亚洲性影院| 人妻夜夜爽天天爽| 国产噜噜噜视频在线观看| 国产男女免费完整版视频| 国内精品视频| 国产精品第5页| 色综合婷婷| 亚洲人成亚洲精品| 伊人久久大香线蕉成人综合网| 色悠久久久| 欧美影院久久| 日本伊人色综合网| 特级欧美视频aaaaaa| 狠狠干综合| 欧美一级视频免费| 国产成人精品2021欧美日韩| 在线看免费无码av天堂的|