亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于樹莓派的開關(guān)量數(shù)據(jù)采集系統(tǒng)設(shè)計與實(shí)現(xiàn)

        2024-09-14 00:00:00白永強(qiáng)張正娟孫琦
        電腦知識與技術(shù) 2024年23期

        摘要:基于樹莓派功能強(qiáng)大、接口豐富的特點(diǎn),利用樹莓派的多路GPIO接口,在Qt開發(fā)環(huán)境中設(shè)計并實(shí)現(xiàn)了一種可靠性高、實(shí)用性強(qiáng)、使用方便的開關(guān)量數(shù)據(jù)采集系統(tǒng)。本文簡要介紹了樹莓派及其GPIO接口、訪問GPIO接口使用的wiringPi庫等內(nèi)容,從系統(tǒng)硬件設(shè)計原理、接口定義、軟件組成結(jié)構(gòu)、數(shù)據(jù)幀結(jié)構(gòu)以及實(shí)現(xiàn)中的關(guān)鍵代碼模塊等幾個方面進(jìn)行了詳細(xì)的闡述。

        關(guān)鍵詞:樹莓派;GPIO;wiringPi;指定源組播;開關(guān)量數(shù)據(jù)采集系統(tǒng)

        中圖分類號:TP399 文獻(xiàn)標(biāo)識碼:A

        文章編號:1009-3044(2024)23-0005-05

        開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID)

        0 引言

        航天發(fā)射場一體化指揮決策系統(tǒng)(以下簡稱一體化指揮決策系統(tǒng))是基于航天發(fā)射綜合測試信息,具備信息獲取、傳輸、處理,以及對航天發(fā)射任務(wù)態(tài)勢進(jìn)行分析判斷、指揮決策和綜合保障等功能的信息系統(tǒng),是航天發(fā)射任務(wù)實(shí)施的神經(jīng)中樞[1]。近年來,一體化指揮決策系統(tǒng)的軟硬件進(jìn)行了全面的自主可控改造。改造過程中,不僅要滿足當(dāng)前在用的航天發(fā)射任務(wù)的需求,考慮到未來航天發(fā)射任務(wù)的需求,還需要適應(yīng)一些老舊型號任務(wù)的需求,確保在某個老舊型號任務(wù)啟動時,系統(tǒng)能夠正常使用。

        在某型號航天發(fā)射任務(wù)中,使用Intel + Windows平臺下安裝在工控機(jī)上的開關(guān)量采集卡實(shí)現(xiàn)測試數(shù)據(jù)的采集,但目前開關(guān)量采集卡無法適配自主可控的軟硬件環(huán)境。樹莓派(Raspberry Pi) 是一種單板機(jī)電腦,其GPIO(General Purpose I/O Ports) 接口能夠替代開關(guān)量采集卡的功能。因此,在航天發(fā)射任務(wù)的軟硬件自主可控環(huán)境中,研制基于樹莓派的開關(guān)量采集系統(tǒng)(以下簡稱開關(guān)量采集系統(tǒng)),實(shí)現(xiàn)開關(guān)量數(shù)據(jù)的采集是一種行之有效的解決方案。

        1 樹莓派及其相關(guān)軟硬件簡介

        1.1 樹莓派簡介

        樹莓派由英國慈善組織Raspberry Pi基金會開發(fā),是基于ARM控制器和Linux系統(tǒng)的單板機(jī)電腦,于2012年3月正式發(fā)售。其大小和一張信用卡相同,具備計算機(jī)主機(jī)的所有功能,支持多種開發(fā)語言,主流的有C語言和Python語言。樹莓派包含多類接口,如USB、RJ45、HDMI和GPIO等[2]。自問世以來,樹莓派主要經(jīng)歷了B+、3B、3B+、4B、5B等型號的演變。圖1展示了樹莓派4B的外觀布局圖。

        1.2 樹莓派的GPIO接口簡介

        樹莓派的GPIO是一種數(shù)字輸入/輸出接口,可用于控制和監(jiān)測電子元件。輸入引腳可用于讀取傳感器或按鍵等外部設(shè)備輸入的信號,輸出引腳可用于向外部設(shè)備(如LED等)輸出電流或電壓。樹莓派4B有40個GPIO引腳,它們被分成兩排,并從編號1到40進(jìn)行標(biāo)號。表1為樹莓派4B的GPIO引腳對照表[3],其中2個引腳提供5V的輸出電壓,2個引腳提供3.3V的輸出電壓,8個接地為0V,其他28個端口可以提供輸入輸出功能。

        樹莓派的GPIO引腳編號分為3種:

        第1種編號是物理引腳BOARD編號,這種編號方式與樹莓派電路板上的物理引腳一一對應(yīng),其優(yōu)勢在于在電路板升級更新后,不需要重復(fù)編寫代碼,也無須考慮樹莓派版本的問題;

        第2種編碼為BCM(Broadcom SOC Channel) 編號,BCM編號是SOC芯片上GPIO控制器內(nèi)部使用的編號,側(cè)重CPU寄存器;

        第3種編號為wiringPi編號,側(cè)重實(shí)現(xiàn)邏輯,其優(yōu)點(diǎn)是方便編程。

        本系統(tǒng)的研制使用了wiringPi編號方式。

        1.3 wiringPi庫簡介

        開關(guān)量數(shù)據(jù)采集系統(tǒng)的研制在Linux操作系統(tǒng)中的Qt平臺下使用了wiringPi庫。wiringPi是一個強(qiáng)大而靈活的C語言庫,提供了簡化的樹莓派GPIO訪問接口,允許開發(fā)者配置和使用樹莓派的GPIO引腳。通過幾個簡單的函數(shù)調(diào)用,可以設(shè)置引腳模式(輸入或輸出)、讀取或?qū)懭胍_狀態(tài),以及處理中斷等。wiringPi使用底層的BCM2835芯片庫,提供對樹莓派GPIO的低級別訪問,因此能夠?qū)崿F(xiàn)高精度的計時和快速的響應(yīng)速度。

        wiringPi需要在系統(tǒng)中安裝,下載地址為:https://project-downloads.drogon.net/wiringpi-latest.deb。在Linux操作系統(tǒng)中使用 sudo dpkg -i wiringpi-latest.deb 命令進(jìn)行安裝。

        在Qt開發(fā)環(huán)境中使用wiringPi庫前,需要包含wiringPi.h文件。主要用到以下函數(shù):

        1) 初始化:int wiringPiSetup();

        2) 設(shè)置針腳輸入/輸出模式:void pinMode(int pin, int mode);

        3) 設(shè)置針腳信號為上拉/下拉:void pullUpDnControl(int pin, int pud);

        4) 信號上升沿/下降沿/上升或下降觸發(fā)工作函數(shù):wiringPiISR(int pin, int edgetype, void (*function)(void));

        5) 向針腳寫入高/低電平:void digitalWrite(int pin, int value);

        6) 讀取針腳電平:int digitalRead(int pin)。

        2 開關(guān)量采集系統(tǒng)的設(shè)計

        針對某型號航天發(fā)射任務(wù),火箭系統(tǒng)通過48孔航空插座向一體化指揮決策系統(tǒng)發(fā)送22路開關(guān)量數(shù)據(jù)。系統(tǒng)利用樹莓派具有多路GPIO輸入/輸出的特點(diǎn),實(shí)現(xiàn)對開關(guān)量信號的實(shí)時采集,并將其轉(zhuǎn)換為一體化指揮決策系統(tǒng)內(nèi)部數(shù)據(jù)收發(fā)所需的網(wǎng)絡(luò)幀結(jié)構(gòu)。為保證運(yùn)行的可靠性,系統(tǒng)使用兩塊樹莓派以主/備方式工作。主備同時采集開關(guān)量數(shù)據(jù),但僅有主用設(shè)備向外發(fā)送數(shù)據(jù)。當(dāng)主用設(shè)備出現(xiàn)故障時,啟動備用設(shè)備。主備切換通過心跳機(jī)制實(shí)現(xiàn)。

        2.1 硬件設(shè)計原理

        開關(guān)量數(shù)據(jù)采集系統(tǒng)的硬件連接電路原理如圖2所示。開關(guān)量信號發(fā)生端有多路開關(guān),所有開關(guān)的公共端接+3.3V電源,另一端分兩路通過防逆流二極管分別接至兩塊樹莓派的GPIO端口。每塊樹莓派通過GPIO輸出連接發(fā)光二極管,用于提供工作狀態(tài)指示。為了實(shí)現(xiàn)安全關(guān)機(jī),系統(tǒng)使用關(guān)機(jī)按鍵連接兩塊樹莓派的GPIO端口以輸入關(guān)機(jī)信號。系統(tǒng)為樹莓派提供+5V電源,為開關(guān)量信號發(fā)送端提供+3.3V電源。系統(tǒng)加電即樹莓派開機(jī)。

        開關(guān)量數(shù)據(jù)采集系統(tǒng)實(shí)現(xiàn)以下功能:

        1) 開關(guān)量信號采集。系統(tǒng)采集信號共22路,兩塊樹莓派以主備方式同時采集,但只有主機(jī)向外發(fā)送采集結(jié)果數(shù)據(jù)。為了防止兩塊樹莓派之間信號相互干擾,每一路開關(guān)信號分支都增加防逆流二極管,保證信號單向傳輸。樹莓派所有采集端子的初始狀態(tài)為低電平,當(dāng)信號發(fā)送端開關(guān)閉合后,采集端子采集到高電平,此時應(yīng)用程序處理并向外發(fā)送采集到的數(shù)據(jù)。

        2) 心跳監(jiān)測。為了保證系統(tǒng)的可靠性,通過使用兩塊樹莓派同時采集數(shù)據(jù),并使用心跳線通信。主機(jī)定時向備機(jī)發(fā)送心跳信號(即定時置高低電平),當(dāng)備機(jī)監(jiān)測不到主機(jī)心跳時,備機(jī)切換為主機(jī),承擔(dān)主機(jī)工作。主機(jī)向外發(fā)送采集數(shù)據(jù),備機(jī)不向外發(fā)送。

        3) 工作狀態(tài)指示。兩塊樹莓派各有一個端子連接發(fā)光二極管,以閃爍狀態(tài)指示系統(tǒng)工作狀態(tài)。主機(jī)閃爍頻率為每秒1次,備機(jī)閃爍頻率為每2秒1次。發(fā)光狀態(tài)通過交替高低電平實(shí)現(xiàn)。

        4) 關(guān)機(jī)信號。系統(tǒng)設(shè)置了一個關(guān)機(jī)按鍵,實(shí)現(xiàn)兩塊樹莓派同時安全關(guān)閉系統(tǒng)。兩塊樹莓派的關(guān)機(jī)采集端子起始電平設(shè)為高電平,分別通過防逆流二極管連接同一個開關(guān)。開關(guān)閉合后電平拉低,樹莓派采集到低電平信號后,通過應(yīng)用程序?qū)崿F(xiàn)關(guān)機(jī)。

        2.2 樹莓派GPIO接口定義

        兩塊樹莓派都配置了GPIO端子擴(kuò)展板,其接口與航空插座連接定義如表2所示。

        2.3 軟件模塊組成結(jié)構(gòu)

        系統(tǒng)軟件使用Qt開發(fā),由4個模塊組成,即主模塊MainWidget、控制模塊Controller、采集模塊Collector和發(fā)送模塊Sender,軟件組成結(jié)構(gòu)如圖3所示。

        主模塊JhiysDeGH6XxIJgP1Lm2OOVj15dBMAMohBpn5MwshgY=MainWidget實(shí)現(xiàn)軟件配置文件數(shù)據(jù)的讀取,控制模塊Controller的創(chuàng)建,并向所有模塊傳遞其所需的配置數(shù)據(jù)??刂颇KController完成采集模塊Collector、發(fā)送模塊Sender的創(chuàng)建,控制Collector模塊的采集線程,向MainWidget、Sender模塊傳遞采集到的數(shù)據(jù)。采集模塊Collector通過線程完成數(shù)據(jù)的采集并向Controller發(fā)送采集到的數(shù)據(jù),此外還負(fù)責(zé)LED發(fā)光二極管的控制、關(guān)機(jī)控制、心跳發(fā)送與接收、主備切換等工作。發(fā)送模塊Sender完成采集數(shù)據(jù),按照一體化指揮決策系統(tǒng)內(nèi)部幀結(jié)構(gòu)組幀,并以指定源組播的方式向網(wǎng)絡(luò)發(fā)送。

        指定源組播(Source-Specific Multicast,SSM) 是一種組播服務(wù)模型,在一個發(fā)送者和多個接收者之間進(jìn)行通信。在SSM中,組播接收者在加入組播組時可以指定接收或者拒絕來自特定組播源的組播流量,即匹配上了源地址才接收組播流量,否則丟棄流量。SSM實(shí)現(xiàn)了路由協(xié)議的簡化,使組播傳輸?shù)姆€(wěn)定性及安全性得到了增強(qiáng)。并且在實(shí)施SSM業(yè)務(wù)時,除了要求網(wǎng)絡(luò)端支持網(wǎng)絡(luò)組播外,還需要網(wǎng)絡(luò)和應(yīng)用支持IGMP v3協(xié)議[4]。

        2.4 數(shù)據(jù)幀結(jié)構(gòu)設(shè)計

        開關(guān)量數(shù)據(jù)采集軟件的數(shù)據(jù)組幀后以UDP指定源組播方式向一體化指揮決策系統(tǒng)內(nèi)部發(fā)送,幀結(jié)構(gòu)如表3所示。

        具體的數(shù)據(jù)幀結(jié)構(gòu)簡介如下:

        1) 版本(VER) 。用于表示UDP組播協(xié)議的版本號,用1個字節(jié)表示。

        2) 任務(wù)代號(MID) 。用于表示當(dāng)前任務(wù)的代號,用2個字節(jié)表示。

        3) 信源(SID) 。用于表示信息發(fā)送方的標(biāo)識。

        4) 信宿(DID) 。用于表示信息接收方的標(biāo)識。

        5) 數(shù)據(jù)分類標(biāo)志(BID) 。用于表示傳輸?shù)臄?shù)據(jù)為數(shù)值型、狀態(tài)型和指令型等類別,開關(guān)量數(shù)據(jù)為狀態(tài)型數(shù)據(jù)。

        6) 數(shù)據(jù)段序號(No) 。用于表示對發(fā)送的數(shù)據(jù)段連續(xù)計數(shù),發(fā)送第一個數(shù)據(jù)段時,計數(shù)值為1,以后每發(fā)送一個數(shù)據(jù)段,計數(shù)值加1,0~232-1循環(huán)計數(shù)。

        7) 數(shù)據(jù)處理標(biāo)志(FLAG) 。用于表示發(fā)送的數(shù)據(jù)是模擬數(shù)據(jù)還是真實(shí)數(shù)據(jù),分別用00H和01H表示。

        8) 備用(B) 。用于后續(xù)擴(kuò)充使用。

        9) 發(fā)送日期(DATE) 。表示信源發(fā)送該數(shù)據(jù)段的日期,相對于2000年1月1日的累計天數(shù),2000年1月1日為第1天。

        10) 發(fā)送時間(TIME) 。表示數(shù)據(jù)段發(fā)出時的標(biāo)準(zhǔn)時刻(北京時),用4個字節(jié)(DWORD) 的無符號長整型數(shù)表示,量化單位為0.1毫秒。例如,當(dāng)前時間是8:10:30,則時間值為(8×3600 + 10×60 + 30) ×10 000 = 294 300 000(0.1毫秒)。

        11) 數(shù)據(jù)域長(L) 。數(shù)據(jù)域長指該應(yīng)用數(shù)據(jù)包內(nèi)有效數(shù)據(jù)域(DATA) 的字節(jié)長度,用2字節(jié)無符號整數(shù)表示,范圍為0~65535。

        12) 有效數(shù)據(jù)(DATA) 。表示需要傳輸?shù)母黝悢?shù)據(jù),比如本系統(tǒng)中每次采集到的22個開關(guān)量數(shù)據(jù)。

        3 開關(guān)量采集系統(tǒng)的實(shí)現(xiàn)

        系統(tǒng)實(shí)現(xiàn)中使用了多線程技術(shù),除了主線程之外,還包括與主線程并行運(yùn)行的數(shù)據(jù)采集線程和數(shù)據(jù)發(fā)送線程。其中,數(shù)據(jù)采集線程用于采集開關(guān)量的數(shù)據(jù),數(shù)據(jù)發(fā)送線程用于向網(wǎng)絡(luò)發(fā)送采集到的數(shù)據(jù)。多線程技術(shù)的優(yōu)點(diǎn)是防止線程“堵塞”,增強(qiáng)用戶體驗(yàn)和程序的效率;缺點(diǎn)是代碼的復(fù)雜程度大大提高,而且對硬件的要求也相應(yīng)提高[5]。

        3.1 軟件實(shí)現(xiàn)中使用的配置文件說明

        軟件研制使用配置文件的作用主要是方便在后續(xù)使用過程中, 參數(shù)需要更改時不更動軟件源代碼。開關(guān)量數(shù)據(jù)采集軟件開發(fā)中使用了兩個配置文件,包括系統(tǒng)配置參數(shù)文件和用于系統(tǒng)采集參數(shù)的開關(guān)量數(shù)據(jù)配置文件。

        1) config文件。用于設(shè)置系統(tǒng)需要的各種配置參數(shù)。

        - activestandby=active // 主備配置,active為主用,standby為備用

        - heartbeat=30 // 心跳信號使用的GPIO端口wPi編號,固定值

        - shutdown=8 // 關(guān)機(jī)信號使用的GPIO端口wPi編號,固定值

        - ledlight=9 // LED發(fā)光二極管信號使用的GPIO端口wPi編號,固定值

        - multigroup=232.99.99.99:25100 // 組播地址與端口號,可配置多個,中間用“;”分割

        - tablenum=9999 // 組幀使用的參數(shù)表號

        - openinterval=10000 // 發(fā)送“接通”后到下一次發(fā)送“接通”的間隔,單位毫秒

        2) gpio-wPi-config文件。用于設(shè)置系統(tǒng)采集的22個開關(guān)量數(shù)據(jù)。

        - gpio-wPi=0, index=1, text=參數(shù)1

        - gpio-wPi=1, index=2, text=參數(shù)2

        - gpio-wPi=12, index=3, text=參數(shù)3

        - ……

        文件中每一行對應(yīng)一個開關(guān)量數(shù)據(jù)的采集配置,gpio-wPi為采集輸入對應(yīng)的wPi編號,index為組幀使用的參數(shù)編號,text為定義的參數(shù)名稱。其中g(shù)pio-wPi對應(yīng)的wPi編號取自表1(IDSD,IDSC,SDA,SCL除外)。

        3.2 軟件實(shí)現(xiàn)中的關(guān)鍵代碼

        3.2.1 樹莓派GPIO端口的初始化

        void Collector::initGPIO()

        {

        for(int i=0; i<GPIOConfigCount; i++)

        {

        pinMode(ListGPIOConfig.at(i).gpio, INPUT);//配置樹莓派引腳的IO模式為INPUT

        pullUpDnControl(ListGPIOConfig.at(i).gpio,PUD_DOWN); //對已設(shè)置IO模式為INPUT的輸入引腳設(shè)置為“低電平”

        wiringPiISR(ListGPIOConfig.at(i).gpio, INT_EDGE_BOTH, &int_collect);//中斷處理注冊函數(shù),注冊的函數(shù)會在中斷發(fā)生時執(zhí)行

        }

        pinMode(GPIOShutdown, INPUT);//配置樹莓派引腳的IO模式為INPUT

        pullUpDnControl(GPIOShutdown, PUD_UP); //對已設(shè)置IO模式為INPUT的輸入引腳設(shè)置為“高電平”

        wiringPiISR(GPIOShutdown, INT_EDGE_BOTH, &int_shutdown); //中斷處理注冊函數(shù),注冊的函數(shù)會在中斷發(fā)生時執(zhí)行

        }

        3.2.2 讀取樹莓派端口的狀態(tài)

        void Collector::in_collecting()

        {

        _mutex.lock();//鎖定互斥量,用于線程同步

        for(int i=0; i<GPIOConfigCount; i++)

        {

        GPIOConfig config_1 = ListGPIOOnce.at(i);

        QTime curtime = QTime::currentTime();

        if(qAbs(config_1.collecttime.msecsTo(curtime)) >= OpenInterval)

        {

        config_1.state = 0;

        }

        ListGPIOOnce.replace(i, config_1);

        GPIOConfig config = ListGPIOConfig.at(i);

        int data = digitalRead(config.gpio); //讀取樹莓派一個端口的電平值

        if(data == LOW)

        {

        config.state = 0;

        }

        else

        {

        config.state = 1;

        }

        }

        _mutex.unlock();//解鎖互斥量

        }

        3.2.3 樹莓派端口狀態(tài)讀取線程和組幀后發(fā)送線程的創(chuàng)建

        Controller::Controller(QObject *parent) : QObject(parent)

        {

        Collector *collector = new Collector;

        InstanceCollector = collector;

        //創(chuàng)建數(shù)據(jù)采集線程,用于讀取樹莓派各端口的數(shù)據(jù)

        collector->moveToThread(&workerThread);

        connect(this, SIGNAL(out_heartbeating()), collector, SLOT(in_heartbeating()));

        connect(this, SIGNAL(out_collecting()), collector, SLOT(in_collecting()));

        connect(collector, SIGNAL(out_result(bool,QByteArray)), this, SLOT(in_result(bool,QByteArray)));

        connect(&workerThread, SIGNAL(finished()), collector, SLOT(deleteLater()));

        //創(chuàng)建發(fā)送線程,用于讀取樹莓派各端口的數(shù)據(jù)后組幀向系統(tǒng)網(wǎng)絡(luò)發(fā)送

        Sender *sender = new Sender;

        sender->moveToThread(&workerThread2);

        connect(this, SIGNAL(out_result_share(bool,QByteArray)), sender, SLOT(in_result_share(bool,QByteArray)));

        connect(&workerThread2, SIGNAL(finished()),

        sender, SLOT(deleteLater()));

        workerThread2.start();

        workerThread.start();

        _timerCollect.setInterval(250);//創(chuàng)建250毫秒間隔的時間片

        connect(&_timerCollect, SIGNAL(timeout()), this, SLOT(doCollecting()));

        _timerCollect.start();

        }

        4 結(jié)束語

        經(jīng)測試,基于樹莓派使用Qt開發(fā)語言實(shí)現(xiàn)的開關(guān)量數(shù)據(jù)采集系統(tǒng)具有高穩(wěn)定性和強(qiáng)可靠性。在自主可控軟硬件環(huán)境中無法安裝使用開關(guān)量采集卡的情況下,該系統(tǒng)能夠確保某型號航天發(fā)射任務(wù)中開關(guān)量數(shù)據(jù)的有效采集和一體化指揮決策系統(tǒng)的正常運(yùn)行。

        參考文獻(xiàn):

        [1] 白永強(qiáng),高家智,張正娟.自主可控軟硬件在航天發(fā)射場一體化指揮決策系統(tǒng)中的應(yīng)用[J]. 導(dǎo)彈試驗(yàn)技術(shù),2020(3):55-58.

        [2] 王梁棟.基于樹莓派的智能家居溫度遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計[J].信息通信,2018,31(5):65-66.

        [3] 郭亮,王冠南,孫紅靜,等.基于Raspberry Pi的可視化溫濕度測量系統(tǒng)設(shè)計[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016,16(9):57-60,68.

        [4] 崔永強(qiáng),白永強(qiáng).基于銀河麒麟環(huán)境指定源組播的研究與實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2018(18):32-33.

        [5] 睿峰科技.蘋果iOS 6開發(fā)從入門到實(shí)戰(zhàn):iOS開發(fā)必備應(yīng)用開發(fā)實(shí)戰(zhàn)與案例[M].北京:當(dāng)代中國出版社,2013.

        【通聯(lián)編輯:唐一東】

        草色噜噜噜av在线观看香蕉| 亚洲国产精品夜男人天堂| 国产成人综合久久大片| 丰满人妻熟妇乱又仑精品| 九九久久精品无码专区| 人妻无码aⅴ中文系列久久免费| 国产亚洲一区二区三区夜夜骚| 人妻风韵犹存av中文字幕 | 国产人妻大战黑人20p| 久久久亚洲色| 欧美日韩综合在线视频免费看| 日韩一二三四区免费观看| 久久国产黄色片太色帅| 国产精品久久久久aaaa| 久久精品中文字幕第23页| 免费观看在线视频一区| 国产一区二区三区激情视频| 蜜桃久久精品成人无码av| 欧美日韩国产专区| 日本免费a一区二区三区| 尤物yw午夜国产精品视频| 在线观看免费人成视频色9| 久久久久久99精品| 亚洲精彩av大片在线观看| 国产三级精品三级| 精品久久久久久久无码| 自拍视频国产在线观看| 国产真实乱XXXⅩ视频| 亚洲国产成人va在线观看天堂| av中文字幕一区不卡| 欧美乱人伦人妻中文字幕| 欧美激情在线不卡视频网站 | 色哟哟精品中文字幕乱码| 国产人妻熟女呻吟在线观看| 久久久久国产一区二区| 国产系列丝袜熟女精品视频| 国产一区二区亚洲一区| 亚洲精品天天影视综合网| 国产精品第一二三区久久蜜芽| 免费人成视频欧美| 性色av色香蕉一区二区蜜桃 |