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

    基于B/S的雙CCD相機精度靶測控系統(tǒng)軟件架構(gòu)設(shè)計

    2022-12-26 12:53:50高嘉韻倪晉平
    計算機測量與控制 2022年12期
    關(guān)鍵詞:機軟件下位瀏覽器

    高嘉韻,倪晉平,徐 飛

    (1.西安工業(yè)大學(xué) 光電工程學(xué)院,西安 710000; 2.西安工業(yè)大學(xué) 計算機學(xué)院,西安 710000)

    0 引言

    靶場試驗測試作為武器研發(fā)、生產(chǎn)和測試的重要一環(huán),主要對武器的各種性能指標進行的檢測,以確定武器是否能夠達到預(yù)期的指標要求。立靶密集度測試是槍彈生產(chǎn)檢驗的關(guān)鍵參數(shù),雙線陣交會精度靶密集度參數(shù)測量系統(tǒng)因較高的測量精度、使用方便以及相對較低的使用成本而被廣泛使用[1-3]。系統(tǒng)包括三個部分,上位機軟件、數(shù)據(jù)采集處理下位機軟件和精度靶采集系統(tǒng),其中上位機軟件就是本文要設(shè)計實現(xiàn)的。

    目前國內(nèi)外對于該領(lǐng)域的測控軟件通常采用C/S(客戶端/服務(wù)器)架構(gòu)實現(xiàn)的,軟件形成兩層結(jié)構(gòu),服務(wù)器負責處理具有復(fù)雜邏輯的業(yè)務(wù)功能,客戶端實現(xiàn)用戶界面和簡單的數(shù)據(jù)處理。這種架構(gòu)軟件實際使用中一般需要專門的客戶端軟件安裝使用安裝,處理出現(xiàn)的問題難度較大,也難以功能擴展,可能會出現(xiàn)開發(fā)一個全新的軟件的情況[4]。如丁力等[5]設(shè)計C/S架構(gòu)的控制管理系統(tǒng)有如下缺點:系統(tǒng)擴展性差,業(yè)務(wù)變更不靈活;兼容性差,開發(fā)工具不兼容,獨立客戶端安裝;維護和升級成本高。

    結(jié)合上述問題,精度靶測試系統(tǒng)上位機軟件采用拓展性和維護性方便、簡單、共享性強和訪問簡單的B/S(瀏覽器/服務(wù)器)架構(gòu)開發(fā)[6-7]。將用戶界面等在瀏覽器端實現(xiàn),為了不僅能簡化系統(tǒng)的維護,還可以降低使用成本,將所有的功能邏輯都集中到了服務(wù)器端。

    1 軟件需求分析

    1.1 系統(tǒng)概述

    雙線陣交會精度靶測控系統(tǒng)整體上可分為精度靶測控系統(tǒng)軟件上位機部分、數(shù)據(jù)采集處理下位機部分和精度靶采集硬件系統(tǒng)三部分,如圖1所示。其中將上位機部分習(xí)慣稱為控制端,下位機和精度靶硬件采集系統(tǒng)整體稱為測量端,從使用角度來說,一般情況下上位機和測量端之間間隔100米左右,通過網(wǎng)線進行連接,實現(xiàn)遠程指令控制和數(shù)據(jù)傳輸?shù)氖褂眯枨蟆?/p>

    圖1 精度靶測控系統(tǒng)整體結(jié)構(gòu)圖

    精度靶測控系統(tǒng)功能主要是實現(xiàn)對整個試驗流程進行控制,需要上位機執(zhí)行相應(yīng)的控制命令,判斷當前的任務(wù)或流程執(zhí)行情況,以及是否進入下一個控制命令[8];其次是接收下位機傳輸?shù)臄?shù)據(jù)。這里控制方面主要需要實現(xiàn)遠程控制網(wǎng)絡(luò)繼電器操作以及任務(wù)開始、結(jié)束的控制,數(shù)據(jù)方面主要是對下位接收的數(shù)據(jù)進行一個直觀顯示和存儲。

    1.2 功能需求

    精度靶系統(tǒng)對于上位機的要求是能夠及時準確的接收下位的數(shù)據(jù),同時對整個試驗流程進行功能控制。從上述情況來看,上位機主要實現(xiàn)功能分為以下幾個:

    1) 電源開關(guān)控制:上位機軟件啟動后,檢測與網(wǎng)絡(luò)繼電器連接狀態(tài),向網(wǎng)絡(luò)繼電器發(fā)送控制命令,從而實現(xiàn)遠程控制下位機和精度靶硬件部分的電源開關(guān)。

    2) 狀態(tài)檢測:下位機軟件和精度靶硬件采集部分啟動后,下位機軟件獲取和硬件的連接狀態(tài),將連接狀態(tài)發(fā)送到上位機軟件進行顯示,方便使用者知道下位機和精度靶硬件采集部分的連接情況,便于出現(xiàn)異常狀態(tài)問題的快速解決。

    3) 試驗參數(shù)設(shè)置:該功能是精度靶測試試驗前的相關(guān)參數(shù)初始化設(shè)置,包含試驗任務(wù)的名稱、組數(shù)、每組的次數(shù)和試驗操作人員的相關(guān)信息設(shè)置,以及測試用的彈種數(shù)據(jù)包含彈徑、彈長和彈速的設(shè)置。

    4) 測試試驗:該功能包含了多個子功能,開始試驗、數(shù)據(jù)顯示、試驗密集度參數(shù)計算、試驗組數(shù)和結(jié)束試驗。開始試驗是使用者操作上位機向下位機發(fā)送開始試驗的控制命令,下位機接收到指令后進入測試狀態(tài);數(shù)據(jù)顯示是上位機軟件把從下位機接收到的試驗數(shù)據(jù)結(jié)果進行展示;試驗密集度參數(shù)計算是由上位機完成的,在試驗中,上位機接收到試驗數(shù)據(jù)大于等于三的時候,程序會自動進行參數(shù)結(jié)果的計算,也可以手動選擇計算;試驗組數(shù)是在試驗中進行試驗組別切換;試驗結(jié)束同開始試驗,用戶操作上位機向下位機發(fā)送試驗結(jié)束指令,且該功能不設(shè)置前置條件。

    5) 歷史數(shù)據(jù):在試驗中,上位機會把從下位機接收到的試驗結(jié)果和密集度參數(shù)計算的結(jié)果全部保存到本地數(shù)據(jù)庫,并且以任務(wù)創(chuàng)建時間為名稱區(qū)別存儲,通過任務(wù)創(chuàng)建時間或名稱檢索對應(yīng)的歷史試驗數(shù)據(jù),還可以選擇所需試驗任務(wù)數(shù)據(jù)導(dǎo)出到Excel。

    2 軟件設(shè)計

    2.1 整體設(shè)計

    基于B/S架構(gòu)的上位機軟件的整體結(jié)構(gòu)如圖2所示,依據(jù)整體框圖的結(jié)構(gòu)層次,進一步闡述層與層之間模塊的設(shè)計和信息的交互。上位機軟件整體分為上層、中層和下層,表示層位于最上層,是為了與用戶進行交互的層面,用戶在界面觸發(fā)相關(guān)控制命令的按鈕操作,隨之用戶的請求及數(shù)據(jù)由表示層接收,接著對數(shù)據(jù)進行處理,最后顯示處理后的數(shù)據(jù)。業(yè)務(wù)邏輯層作為紐帶存在于表示層和數(shù)據(jù)之間,需要依據(jù)業(yè)務(wù)的具體功能需求,實現(xiàn)相對應(yīng)的業(yè)務(wù)功能。該軟件系統(tǒng)數(shù)據(jù)來自與下位機的通信獲得,所以設(shè)計在中間層需要搭建TCP服務(wù)器進行數(shù)據(jù)交互。數(shù)據(jù)層主要實現(xiàn)對數(shù)據(jù)庫的增刪改查,用于TCP服務(wù)器存儲從下位機獲取來的數(shù)據(jù)以及向歷史數(shù)據(jù)查詢功能模塊提供數(shù)據(jù)支持。

    圖2 上位機軟件系統(tǒng)整體框圖

    服務(wù)器和瀏覽器作為B/S軟件架構(gòu)的核心。其中瀏覽器作為用戶直接操作的層面,主要包含功能操作、發(fā)送請求和獲取數(shù)據(jù),最后通過瀏覽器展示出來。服務(wù)器承載了大多數(shù)的業(yè)務(wù)分析數(shù)據(jù)處理,也是真正的實現(xiàn)界面應(yīng)用層各模塊的業(yè)務(wù)邏輯,例如在和數(shù)據(jù)庫部分的交互中,專門設(shè)計了數(shù)據(jù)緩存處理,數(shù)據(jù)查詢的優(yōu)化等。更重要的是,在與下位機的交互中,提供可靠的數(shù)據(jù)傳輸,較好的傳輸性能。

    根據(jù)軟件系統(tǒng)整體設(shè)計數(shù)據(jù)流圖,如圖3所示,對上位機軟件的功能需求進行分析整理,以技術(shù)出發(fā)的角度,上位機軟件服務(wù)器部分設(shè)計實現(xiàn)了應(yīng)用Netty通信框架、HTTP傳輸方式[9]、數(shù)據(jù)庫等的搭建。其中,服務(wù)器的Netty通信框架的設(shè)計與實現(xiàn)應(yīng)用是核心問題,保證了和下位機之間穩(wěn)定的數(shù)據(jù)傳輸。Netty多用于搭建數(shù)據(jù)通信底層部分,并且是基于TCP通信協(xié)議實現(xiàn),Netty因其非阻塞通信方式,實現(xiàn)了優(yōu)異的性能而被廣泛應(yīng)用,也是目前大多數(shù)框架的主流或被服務(wù)端首選用來搭建軟件底層框架。

    圖3 軟件系統(tǒng)整體數(shù)據(jù)流圖

    2.2 相關(guān)技術(shù)

    2.2.1 B/S架構(gòu)

    目前軟件常用的開發(fā)模式有兩種,C/S和B/S[10]。C/S模式,范圍比較有限,大部分基于局域網(wǎng)環(huán)境使用,因為它的架構(gòu)主要是由表示層和數(shù)據(jù)層構(gòu)成的,所以使用方式必須是安裝獨有客戶端使用,且難以一次開發(fā)實現(xiàn)多平臺的使用。C/S這種架構(gòu)還有著一些其他缺點,舉例來說,在開發(fā)者方面,客戶端的升級和維護增加了工作量;對于用戶來說,時常進行迭代也增加了使用成本。因此,需要簡化客戶端的安裝部署工作。

    B/S模式下,選擇了瀏覽器成為客戶端,避免進行繁瑣的客戶端安裝工作,使其可以專注于業(yè)務(wù)功能邏輯的開發(fā)實現(xiàn)。B/S是一個由三個主要部分組成的Web應(yīng)用程序:瀏覽器、服務(wù)器、數(shù)據(jù)庫[11]。承擔用戶交互的主要應(yīng)用軟件,成為了瀏覽器部分,但是不承擔業(yè)務(wù)部署和功能性開發(fā),服務(wù)器端即可完成所有的業(yè)務(wù)邏輯。并且通過瀏覽器即可訪問系統(tǒng),瀏覽器的UI設(shè)計更加美觀多樣化,升級方便。

    2.2.2 Netty框架

    Netty 是一個利用 Java 的高級網(wǎng)絡(luò)的能力,隱藏其背后的復(fù)雜性而提供一個易于使用的 API 的客戶端/服務(wù)器框架[12]。Netty實現(xiàn)了多種通信協(xié)議的支持,因其使用簡單,對非阻塞通信方式進行封裝;功能強大,支持多種主流協(xié)議,內(nèi)置集成了解碼功能;穩(wěn)定,目前已經(jīng)修復(fù)了框架已發(fā)現(xiàn)的缺陷。所以,它已經(jīng)成為大多框架和項目實現(xiàn)的底層,并被許多開發(fā)者青睞。Netty框架的底層實現(xiàn)包括了一個非阻塞的IO架構(gòu),允許開發(fā)人員輕松地編寫相關(guān)的應(yīng)用程序,以達到優(yōu)化網(wǎng)絡(luò)編程的目的,雖然Netty的底層框架邏輯實現(xiàn)非常復(fù)雜,但是其API簡單易用,開發(fā)者在編程中易于繞開業(yè)務(wù)層實現(xiàn)。其構(gòu)成有三個模塊:傳輸服務(wù),支持的協(xié)議和核心模塊[13]。

    Netty在設(shè)計上有以下幾個優(yōu)點:NIO通信;無鎖化的串行設(shè)計理念;高效的并發(fā)編程;高性能的序列化框架等[14]。本系統(tǒng)選擇Netty主要是三方面的優(yōu)勢:并發(fā)高、傳輸可靠和封裝好。

    1)并發(fā)高:對比于BIO(阻塞IO),Netty框架是基于非阻塞IO開發(fā)的網(wǎng)絡(luò)通信框架。其單線程能處理的連接數(shù)比BIO要高出很多。當建立了一個連接之后,接著還有兩個步驟,先是將客戶端發(fā)過來的數(shù)據(jù)全部接收,然后是在服務(wù)器處理完請求給客戶端響應(yīng)。這也是NIO和BIO的一個主要區(qū)別。在BIO中,等候客戶端發(fā)送數(shù)據(jù)這個過程是阻塞的,這樣就造成了一個線程只能處理一個請求的情況,而且計算機的處理線程也不是無限的。但是在NIO中,當一個套接字建立好以后,Thread類不會像BIO一樣將其阻塞,而且將請求推到了選擇器,由選擇器去不停地遍歷所有產(chǎn)生的套接字,當有一個套接字建立,選擇器就會通知Thread類,然后交由Thread類處理后再響應(yīng)給客戶端,這樣整個流程是非阻塞的。

    2)傳輸快:Netty的數(shù)據(jù)發(fā)送和接收主要是使用bytebuffer,其使用對外內(nèi)存直接對套接字進行讀寫操作。如果使用傳統(tǒng)的堆內(nèi)存對套接字進行讀寫,Java虛擬機會將buffer直接復(fù)制一份到內(nèi)存中后再寫入套接字,多了一次緩沖區(qū)的內(nèi)存復(fù)制操作。但是Netty提供了一種組合ByteBuf,可以避免這樣的情況,因為其并沒有將Buffer組合起來,而是保存了它們的引用,本質(zhì)上是避免了數(shù)據(jù)的復(fù)制,實現(xiàn)了零拷貝。Netty中還使用了FileChannel的transfer to 方法,此方法依賴于操作系統(tǒng)實現(xiàn)零拷貝機制。

    3)封裝好:編程過程中,從代碼量來看,Netty有很多自帶處理方法,實現(xiàn)連接、請求和接入等[16]。如ChannelHandler及其實現(xiàn)類,ChannelHandler 接口定義了許多事件處理的方法, Netty開發(fā)中需要自定義一個 Handler 類去實現(xiàn) ChannelHandle接口或其子接口或其實現(xiàn)類,然后我們可以通過重寫這些方法去實現(xiàn)具 體的業(yè)務(wù)邏輯。channelActive通道就緒事件,channelRead通道讀取數(shù)據(jù)事件,exceptionCaught通道發(fā)生異常的事件。

    3 軟件設(shè)計關(guān)鍵技術(shù)

    在軟件整體設(shè)計中提到,TCP服務(wù)器的設(shè)計與實現(xiàn)是上位機系統(tǒng)中最關(guān)鍵部分。承擔著與下位機通信,接收、發(fā)送、解析、保存數(shù)據(jù)等功能。其中主要就是可靠接收傳輸消息和及時發(fā)送消息指令,同時考慮到功能需求分析中下位機會頻繁發(fā)送數(shù)據(jù)等問題,故選用了Netty通信框架搭建TCP服務(wù)器底層,通信架構(gòu)如圖4所示。在Netty通信框架的應(yīng)用過程中主要研究了適應(yīng)于本系統(tǒng)基于Netty的通信實現(xiàn)、傳輸中TCP粘包拆包處理和心跳監(jiān)測機制的應(yīng)用。

    圖4 通信框架圖

    3.1 基于Netty的通信實現(xiàn)

    Netty被定義為是一個基于Java 非阻塞I/O(輸入/輸出)的異步事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用框架[17-18],提供了高層次的抽象來簡化TCP服務(wù)器的編程,具有高性能和高可靠性的特點,且廣泛應(yīng)用于客戶端與服務(wù)器之間長連接、高并發(fā)的場景。近幾年,Netty框架在計算機互聯(lián)網(wǎng)行業(yè)熱門起來,已經(jīng)成為了Java網(wǎng)絡(luò)編程框架的首選。

    基本實現(xiàn)思路,通信的讀寫邏輯均是啟動階段實現(xiàn)連接數(shù)據(jù)的讀寫邏輯,其通過邏輯處理鏈Pipeline來添加邏輯處理器。首先,下位機連接成功回調(diào)處理器的channelActive()方法,當下位機和上位機分別接收到對方的消息回調(diào)自己的處理器的channelRead()方法;接著是上位機和下位機向?qū)Ψ綄憯?shù)據(jù)的時候調(diào)用writeAndFlush()方法,規(guī)定上位機和下位機之間交互信息的二進制數(shù)據(jù)傳輸載體為ByteBuf。

    Netty服務(wù)器端的實現(xiàn),是被動的接收發(fā)送請求,為了避免出現(xiàn)服務(wù)器之間多端口產(chǎn)生沖突的問題,將服務(wù)器的端口號固定且綁定為6000。首先,創(chuàng)建ServerBootstrap()實例,設(shè)置并且綁定Reactor()線程池:EventLoopGroup,EventLoop就是處理所有注冊到該線程的選擇器上的;設(shè)置并綁定服務(wù)器端的Channel();TCP鏈路建立時創(chuàng)建ChannelPipeline()方法,添加并設(shè)置ChannelHandler(),用來處理網(wǎng)絡(luò)事件;綁定監(jiān)聽端口并啟動服務(wù)端;然后進入Netty獨有流程,通過多路復(fù)用器輪詢,進行網(wǎng)絡(luò)事件通知,最后執(zhí)行Netty系統(tǒng)和業(yè)務(wù)通過執(zhí)行pipline中的方法最終調(diào)度調(diào)用HandlerChannel()方法,過程如圖5所示。

    圖5 基于Netty服務(wù)器實現(xiàn)流程圖

    實現(xiàn)部分代碼如下:

    public void run() throws Exception{

    try{

    ServerBootstrap serverBootstrap = new ServerBootstrap();//創(chuàng)建服務(wù)器端的啟動對象,配置參數(shù)

    serverBootstrap.group(groupBoss, groupWorker) //兩個處理線程組設(shè)置

    .option(ChannelOption.SO_BACKLOG, 1024) // 線程隊列并發(fā)數(shù)的設(shè)置

    .channel(NioServerSocketChannel.class)

    .childOption(ChannelOption.SO_KEEPALIVE, true) //保持活動的連接狀態(tài)設(shè)置

    .childHandler((ChannelInit)(ch)->{});

    //服務(wù)器啟動并綁定端口

    bind(serverBootstrap, PORT);

    // 對關(guān)閉通道進行監(jiān)聽

    cf.channel().closeFuture().sync();

    } catch (Exception e) {

    log.error(" netty服務(wù)啟動異常 " + e.getMessage());

    } finally {

    workerGroup.shutdownGracefully();

    bossGroup.shutdownGracefully();

    }

    }

    在Netty框架的設(shè)計與實現(xiàn)應(yīng)用的過程中,主要實現(xiàn)了基礎(chǔ)的數(shù)據(jù)通信交互后,因為TCP使用的是一種“數(shù)據(jù)流”的方式傳輸,還需要設(shè)計并且解決基于TCP數(shù)據(jù)傳輸過程中出現(xiàn)的粘包拆包的問題。

    3.2 TCP數(shù)據(jù)處理

    TCP是一種“數(shù)據(jù)流”的協(xié)議,處理數(shù)據(jù)包以流的方式,所以在接收數(shù)據(jù)的時候不能完整的得到一條數(shù)據(jù)稱為TCP粘包拆包。Netty這里提供了消息定長度,將傳輸消息大小固定不夠的空位用空格補齊然后發(fā)送;符號分割即用特殊符合進行標識,接收方遇到標識符就知道是下一條數(shù)據(jù);發(fā)送長度,每次發(fā)送數(shù)據(jù)的時候?qū)⑦@條數(shù)據(jù)的長度一并發(fā)送,這樣對方解析的時候根據(jù)長度來判斷數(shù)據(jù)接收是否完整。本軟件采用了換行符的處理方式,結(jié)合Netty提供的多種解碼器來解決這種問題。并且設(shè)計了自己的處理方法,順序遍歷ByteBuffer中的刻度字節(jié)[19],查找標志位“/n”。

    不斷地從TCP緩沖區(qū)中讀取數(shù)據(jù),每次都需要判斷這是不是一個完整的包讀取完后,假如當下讀到的消息不能夠拼成完整的業(yè)務(wù)數(shù)據(jù)包,那就先把該數(shù)據(jù)保留,再從TCP緩沖區(qū)中讀出待得到完整的消息包。數(shù)據(jù)內(nèi)容正確需要進行業(yè)務(wù)處理,推向前臺頁面或者存入數(shù)據(jù)庫,流程如圖6所示。

    圖6 TCP數(shù)據(jù)處理流程圖

    實現(xiàn)部分代碼如下:

    class Solution(SocketChannel ch){

    ch.pipeline().addLast(new IdleStateHandler(5,0,0));//換行符處理

    ch.pipeline().addLast(new LineBaseFrameDecoder(1024));

    ch.pipeline().addLast(new StringDecoder());//編碼

    ch.pipeline().addLast(new StringEncoder());//解碼

    ch.pipeline().addLast(new MyServerHandler());

    }

    實現(xiàn)了TCP傳輸中粘包拆包問題的解決方法后,還需要通過對Netty框架提供的心跳機制功能接口進行研究,來實現(xiàn)狀態(tài)檢測管理功能模塊。

    3.3 狀態(tài)監(jiān)測管理

    在使用的過程中,會出現(xiàn)網(wǎng)絡(luò)不穩(wěn)定的情況,而在TCP通信中,發(fā)生網(wǎng)絡(luò)問題就會導(dǎo)致上下位機連接中斷。沒有通信連接,那就無法發(fā)現(xiàn)相互掉線,這時候需要通過心跳機制實現(xiàn)狀態(tài)監(jiān)測。類似一端發(fā)送一個數(shù)據(jù)包內(nèi)容給對面,另一端收到后馬上返回一個響應(yīng)包,這樣的一個數(shù)據(jù)交互就是心跳交互[20]。通俗來說,就是定時發(fā)送一個自定義的心跳包,讓對方知道己方的存在,來確保連接的有效性。

    下位機每間隔1 s向上位機發(fā)送一個包含特殊內(nèi)容數(shù)據(jù)的消息Ping,上位機收到后馬上返回一個消息Pong,于是雙方通過這樣一對心跳消息來確定TCP的連接是否斷開,如圖7所示。

    圖7 心跳機制

    在本文中,依據(jù)功能需求,基于心跳機制的原理,借助Netty提供的IdleStateHandler類,來實現(xiàn)處理下位機的連接狀態(tài)。

    public userEventTriggered

    (ChannelHandlerContext ctx, Object evt){

    if(evt instanceof IdleStateEvent){

    IdleStateEvent e =( IdleStateEvent) evt;

    switch(e.state()){

    case READER_IDLE:

    handlerReaderIdle(ctx);

    break;

    case WRITER_IDLE;

    handleWriterIdle(ctx);

    break;

    case ALL_IDLE:

    handlerAllIdle(ctx);

    break;

    }

    }

    }

    其中需要通過創(chuàng)建通用類負責接收心跳,客戶端發(fā)送心跳,在上文中提到過,使用Netty提供的IdleStateHandler類實現(xiàn)心跳的關(guān)鍵,根據(jù)不同的idle類型發(fā)生不同的idle類事件,而該事件的捕捉就是通過上文的userEventTriggered實現(xiàn)的。

    心跳機制的實現(xiàn),下位機就需要按照設(shè)定周期頻繁的發(fā)送數(shù)據(jù)包,上位機就必須能夠響應(yīng)和處理下位機發(fā)送來的數(shù)據(jù)請求。這里,Netty框架提供的NettyServerHandler類又實現(xiàn)了多個重要的方法,設(shè)計使用非公平鎖機制提高系統(tǒng)的吞吐量,更好地處理與客戶端的連接、斷開和數(shù)據(jù)讀取。非公平鎖是指多個線程獲取鎖的順序,并不是按照申請鎖的順序,有可能申請的線程比先申請的線程優(yōu)先獲得鎖,收發(fā)效率較高。

    4 通信測試

    對本系統(tǒng)軟件數(shù)據(jù)通信進行測試和試用,上位機軟件測試環(huán)境為Intel(R) Core(TM) i3-8100,內(nèi)存8 GB,CPU3.6 GHz,硬盤1 T,操作系統(tǒng)Windows 7 64位;下位機操作系統(tǒng)為Windows7,上下位機之間為千兆網(wǎng)絡(luò)連接,測試環(huán)境框架如圖8所示。

    圖8 通信測試環(huán)境框架圖

    4.1 模擬測試

    本系統(tǒng)上位機軟件關(guān)鍵部分在于TCP服務(wù)器的設(shè)計,采用Netty通信框架設(shè)計,實現(xiàn)穩(wěn)定可靠的上下位機數(shù)據(jù)傳輸,滿足上位機接收處理下位機頻繁的數(shù)據(jù)發(fā)送需求。TCP服務(wù)器部分屬于底層開發(fā),所以采用WebSocket技術(shù)通過Web頁面進行模擬測試的數(shù)據(jù)展示。WebSocket是一種新的協(xié)議在HTML5下,其還是基于TCP的協(xié)議本質(zhì)上說。實現(xiàn)了全雙工通信在瀏覽器端與服務(wù)器之間,模擬Socket協(xié)議,可以雙向發(fā)送或接受信息,實現(xiàn)數(shù)據(jù)推送,主動由服務(wù)端推送向瀏覽器端;完成一次握手,由瀏覽器和服務(wù)器,即可以建立長時間的連接在兩者之間,實現(xiàn)數(shù)據(jù)傳輸,更加方便我們進行通信模擬測試。如圖9所示,對下位機部分進行了模擬設(shè)計實現(xiàn),充分達到真實的使用情況,實現(xiàn)心跳機制發(fā)送狀態(tài)數(shù)據(jù),以及模擬坐標數(shù)據(jù)發(fā)送。

    圖9 下位機模擬程序

    模擬下位機實現(xiàn)狀態(tài)數(shù)據(jù)發(fā)送,以周期1 s的時間模擬下位機向上位機發(fā)送狀態(tài)的協(xié)議內(nèi)容和手動發(fā)送模擬的測量試驗結(jié)果坐標數(shù)據(jù)。上位機通過瀏覽器頁面展示由下位機發(fā)送的心跳狀態(tài)數(shù)據(jù)和坐標試驗數(shù)據(jù),TCP服務(wù)器模擬接收數(shù)據(jù)測試結(jié)果如圖10所示。

    圖10 上位機數(shù)據(jù)接收測試圖

    通過模擬測試,下位機所發(fā)送的狀態(tài)檢測數(shù)據(jù)和試驗坐標數(shù)據(jù)上位機的TCP服務(wù)器都能正常接收,且全部顯示到測試頁面,滿足基本的功能需求。

    4.2 性能測試

    最后對上位機接收數(shù)據(jù)處理性能進行對比測試。根據(jù)功能需求分析所提出的技術(shù)指標要求,需要上位機對接收數(shù)據(jù)的處理不能低于每秒鐘一個請求。創(chuàng)建兩組不同周期數(shù)據(jù)發(fā)送的對比測試,第一組設(shè)計1 000個樣本數(shù)據(jù),以周期1 s發(fā)送數(shù)據(jù),測試服務(wù)器接收處理請求的性能;第二組同樣設(shè)計1 000個樣本數(shù)據(jù),發(fā)送速率比第一組提高10倍以周期100 ms發(fā)送數(shù)據(jù),測試服務(wù)器接收處理請求的性能。這里采用JMeter開源測試軟件,模擬一個下位機以周期1 s的時間向上位機發(fā)送數(shù)據(jù)判斷上位機TCP服務(wù)器的接收情況,如圖11所示。由測試吞吐量結(jié)果可知,每秒能夠處理請求的次數(shù)約為1,能夠滿足功能需求。

    圖11 第一組性能測試結(jié)果

    第二組性能測試將數(shù)據(jù)發(fā)送速率設(shè)為100 ms,對服務(wù)器處理性能測試,測試結(jié)果如圖12所示。

    圖12 第二組性能測試結(jié)果

    從上述的兩組對比性能測試中,在1 000個樣本數(shù)據(jù)的情況下,將數(shù)據(jù)發(fā)送速率從1 s提高10倍的測試結(jié)果看,第一組的吞吐量測試結(jié)果為服務(wù)器每秒處理請求約1個,第二組的吞吐量測試結(jié)果為服務(wù)器每秒處理請求約8個,滿足性能要求以及技術(shù)指標。

    4.3 實際測試

    進行了模擬測試和性能測試后,再對上位機軟件進行系統(tǒng)測試,測試的內(nèi)容為將上位機軟件置于真實的使用環(huán)境,測試上位機軟件是否能達到效果。

    把上位機軟件置于試驗測試的界面,如圖13所示。從彈丸發(fā)射開始計算時間起始,上位機界面顯示模擬坐標計算為時間結(jié)束,來衡量數(shù)據(jù)通信和軟件系統(tǒng)響應(yīng)的情況。同時作為對性能測試的一個補充測試。

    圖13 實際測試

    通過對整個精度靶的系統(tǒng)聯(lián)調(diào)測試,可以得到在實際使用環(huán)境中的結(jié)果。從圖中的測試結(jié)果可以看到,從彈丸發(fā)射開始計時到最后上位機顯示坐標位置整個過程時間發(fā)生都在1 s以內(nèi),忽略掉計時操作的時間以及系統(tǒng)的響應(yīng)時間,數(shù)據(jù)的通信部分能夠滿足相應(yīng)的技術(shù)指標要求,整體上使用能夠滿足數(shù)據(jù)實時顯示的要求。

    5 結(jié)束語

    本文針對精度靶系統(tǒng)軟件功能的需求分析,參考一些該類型軟件,設(shè)計了一個采用B/S架構(gòu)的CCD精度靶上位機軟件,關(guān)鍵設(shè)計了上位機服務(wù)器整體結(jié)構(gòu)和核心模塊Netty通信架構(gòu)。通過模擬測試上位機滿足通過網(wǎng)絡(luò)穩(wěn)定接收下位機傳輸數(shù)據(jù)的功能需求;解決了C/S模式軟件的擴展難度大,維護成本高和用戶后期使用升級復(fù)雜等問題。與C/S模式不同,B/S模式軟件的界面是基于瀏覽器進行首次全新開發(fā),和服務(wù)器采用HTTP進行交互。本系統(tǒng)軟件目前前端頁面部分還未完善,存在頁面布局和功能缺陷問題。

    經(jīng)分析選擇B/S架構(gòu)的設(shè)計思想[22]和面向?qū)ο蟮木幊谭妒剑档土烁髂K代碼之間的耦合性,使得軟件維護的效率提升,同時節(jié)省了軟件開發(fā)的成本,在一類具有上下位機工作屬性的控制軟件[23]設(shè)計方面具有重要意義。

    猜你喜歡
    機軟件下位瀏覽器
    反瀏覽器指紋追蹤
    電子制作(2019年10期)2019-06-17 11:45:14
    發(fā)射機房監(jiān)控系統(tǒng)之下位機
    道岔監(jiān)測系統(tǒng)上位機軟件設(shè)計
    景洪電廠監(jiān)控系統(tǒng)下位機數(shù)據(jù)傳輸網(wǎng)絡(luò)改造
    圍觀黨“下位”,吐槽帝“登基”
    北京紀事(2016年5期)2016-05-07 13:17:02
    基于正交試驗法的北斗用戶機軟件測試用例設(shè)計
    環(huán)球瀏覽器
    再見,那些年我們嘲笑過的IE瀏覽器
    PCI-e高速數(shù)據(jù)采集卡的驅(qū)動與上位機軟件設(shè)計
    電子器件(2015年5期)2015-12-29 08:43:12
    CAN總線并發(fā)通信時下位機應(yīng)用軟件設(shè)計
    国产亚洲精品av在线| 嘟嘟电影网在线观看| 亚洲av不卡在线观看| 成人美女网站在线观看视频| 黄色日韩在线| 日韩精品青青久久久久久| 日韩欧美三级三区| 夜夜爽天天搞| 晚上一个人看的免费电影| 亚洲三级黄色毛片| 插逼视频在线观看| 国产精品av视频在线免费观看| 成人漫画全彩无遮挡| 国产人妻一区二区三区在| 老女人水多毛片| 亚洲,欧美,日韩| 国产免费一级a男人的天堂| 久久婷婷人人爽人人干人人爱| 日本av手机在线免费观看| 国产精品一区www在线观看| 久久久a久久爽久久v久久| 婷婷精品国产亚洲av| 国产精品福利在线免费观看| 在线免费观看的www视频| 亚洲五月天丁香| 99热这里只有是精品在线观看| 黄色欧美视频在线观看| 亚洲第一区二区三区不卡| 免费av毛片视频| 亚洲精品影视一区二区三区av| 成熟少妇高潮喷水视频| 国产精品一区二区三区四区免费观看| 97人妻精品一区二区三区麻豆| 色吧在线观看| 国产极品天堂在线| 亚洲国产精品成人久久小说 | 国产高清激情床上av| 22中文网久久字幕| 午夜福利在线观看免费完整高清在 | 国产精品.久久久| 成人高潮视频无遮挡免费网站| 一级毛片aaaaaa免费看小| 麻豆成人av视频| 麻豆成人av视频| 国产亚洲精品久久久久久毛片| 亚洲人成网站在线播放欧美日韩| 99久久久亚洲精品蜜臀av| 亚洲成人中文字幕在线播放| 国产精品一区二区三区四区久久| av又黄又爽大尺度在线免费看 | 亚洲成人精品中文字幕电影| 亚洲国产欧美人成| 亚洲人与动物交配视频| 日韩一区二区视频免费看| 国产熟女欧美一区二区| 久久久久久久久久黄片| 精品欧美国产一区二区三| 午夜久久久久精精品| h日本视频在线播放| 国产伦精品一区二区三区视频9| 日日摸夜夜添夜夜爱| 99热这里只有是精品在线观看| 久久亚洲国产成人精品v| 国产午夜福利久久久久久| 国产三级在线视频| 一个人免费在线观看电影| av免费观看日本| 日韩精品有码人妻一区| 免费不卡的大黄色大毛片视频在线观看 | 欧美成人一区二区免费高清观看| 欧美色视频一区免费| 免费在线观看成人毛片| 99热这里只有精品一区| 欧美最黄视频在线播放免费| 精品久久久久久久人妻蜜臀av| 日韩国内少妇激情av| 美女脱内裤让男人舔精品视频 | 国产一区二区三区在线臀色熟女| 99久久精品国产国产毛片| 99热这里只有是精品在线观看| 成人综合一区亚洲| 2022亚洲国产成人精品| 久久6这里有精品| 亚洲人与动物交配视频| 天天一区二区日本电影三级| 五月伊人婷婷丁香| 久久午夜福利片| 精品久久久久久成人av| 免费观看在线日韩| 丰满乱子伦码专区| 99热全是精品| 亚洲无线观看免费| 日韩欧美一区二区三区在线观看| 天美传媒精品一区二区| 国产大屁股一区二区在线视频| 亚洲色图av天堂| 国产伦精品一区二区三区视频9| 日韩欧美精品免费久久| 欧美潮喷喷水| 国产三级在线视频| 成人午夜高清在线视频| 岛国在线免费视频观看| 国产精品永久免费网站| 在线天堂最新版资源| 美女黄网站色视频| 国产精品久久久久久精品电影小说 | 99久久精品一区二区三区| 全区人妻精品视频| 国产一区二区亚洲精品在线观看| 嘟嘟电影网在线观看| 少妇高潮的动态图| av又黄又爽大尺度在线免费看 | 久久精品久久久久久久性| 免费av观看视频| 2021天堂中文幕一二区在线观| 久久久久久大精品| 一卡2卡三卡四卡精品乱码亚洲| 日韩,欧美,国产一区二区三区 | 日韩av在线大香蕉| 久久人妻av系列| 国产精品一区二区性色av| 亚洲欧洲日产国产| 女的被弄到高潮叫床怎么办| 亚洲av二区三区四区| 久久久久久伊人网av| 午夜精品在线福利| 日韩在线高清观看一区二区三区| 久久国产乱子免费精品| 好男人视频免费观看在线| 在线播放国产精品三级| ponron亚洲| 91久久精品国产一区二区三区| 国产美女午夜福利| 成人美女网站在线观看视频| 久久99精品国语久久久| 99国产精品一区二区蜜桃av| 国产高清三级在线| 一区二区三区高清视频在线| 免费看美女性在线毛片视频| 久久人人爽人人片av| 亚洲国产日韩欧美精品在线观看| 免费观看a级毛片全部| 99国产精品一区二区蜜桃av| 观看免费一级毛片| 亚洲精品亚洲一区二区| 亚洲国产精品成人综合色| 午夜久久久久精精品| 1000部很黄的大片| or卡值多少钱| 色尼玛亚洲综合影院| 日本黄大片高清| 乱人视频在线观看| 午夜福利成人在线免费观看| 欧美激情国产日韩精品一区| 国产精品av视频在线免费观看| 国产亚洲精品久久久com| 真实男女啪啪啪动态图| 午夜福利在线在线| 久久6这里有精品| 十八禁国产超污无遮挡网站| 国产三级中文精品| 黄色视频,在线免费观看| 精品日产1卡2卡| 国产黄片美女视频| 国国产精品蜜臀av免费| 亚洲人成网站在线播| 全区人妻精品视频| 91在线精品国自产拍蜜月| 最近最新中文字幕大全电影3| 国产女主播在线喷水免费视频网站 | 久久亚洲国产成人精品v| 看非洲黑人一级黄片| 18禁裸乳无遮挡免费网站照片| 国产又黄又爽又无遮挡在线| 国产亚洲5aaaaa淫片| 欧美日韩乱码在线| 久久久a久久爽久久v久久| 蜜臀久久99精品久久宅男| 91在线精品国自产拍蜜月| 国产 一区 欧美 日韩| 高清午夜精品一区二区三区 | 成人高潮视频无遮挡免费网站| www.色视频.com| 一本久久中文字幕| 成人永久免费在线观看视频| 婷婷六月久久综合丁香| 97热精品久久久久久| 亚洲av电影不卡..在线观看| 成年女人看的毛片在线观看| 国产一区二区亚洲精品在线观看| 在线观看午夜福利视频| 丝袜美腿在线中文| 国产高清不卡午夜福利| 插逼视频在线观看| 国产成人91sexporn| 亚洲aⅴ乱码一区二区在线播放| 国产69精品久久久久777片| 欧美变态另类bdsm刘玥| 一区二区三区高清视频在线| 亚洲18禁久久av| 99riav亚洲国产免费| 亚洲第一电影网av| www.av在线官网国产| 美女大奶头视频| 日本av手机在线免费观看| 免费看日本二区| 久久久久免费精品人妻一区二区| 日本与韩国留学比较| 亚洲av免费在线观看| 国产亚洲av嫩草精品影院| 亚洲天堂国产精品一区在线| 国产老妇女一区| 美女国产视频在线观看| 最近手机中文字幕大全| 国产高清三级在线| av国产免费在线观看| 禁无遮挡网站| 婷婷亚洲欧美| 久久久精品欧美日韩精品| 级片在线观看| 久久国产乱子免费精品| 日韩亚洲欧美综合| 免费看光身美女| 高清日韩中文字幕在线| 国产黄色视频一区二区在线观看 | 国语自产精品视频在线第100页| 亚洲国产精品成人久久小说 | 看非洲黑人一级黄片| 激情 狠狠 欧美| 国产成人aa在线观看| 国产欧美日韩精品一区二区| 欧美日韩一区二区视频在线观看视频在线 | 免费av不卡在线播放| 欧美日韩在线观看h| 日本免费a在线| 如何舔出高潮| 成人永久免费在线观看视频| 1000部很黄的大片| 国产蜜桃级精品一区二区三区| 成人性生交大片免费视频hd| 欧美最新免费一区二区三区| 乱人视频在线观看| 久久久久久久亚洲中文字幕| 欧美日韩在线观看h| 久久久色成人| 人人妻人人澡人人爽人人夜夜 | 天堂中文最新版在线下载 | 精品无人区乱码1区二区| 日本成人三级电影网站| 日本免费a在线| 亚洲在线观看片| 日韩av不卡免费在线播放| 亚洲高清免费不卡视频| 内射极品少妇av片p| 深夜精品福利| 日韩欧美国产在线观看| 亚洲自拍偷在线| 在现免费观看毛片| 国产精品1区2区在线观看.| 久久久精品欧美日韩精品| 国产 一区 欧美 日韩| 91av网一区二区| 熟女人妻精品中文字幕| 插逼视频在线观看| 成人午夜高清在线视频| 国产高清三级在线| 国内精品美女久久久久久| 九色成人免费人妻av| 一级黄片播放器| 国产午夜精品论理片| 日本与韩国留学比较| 午夜亚洲福利在线播放| 久久久国产成人精品二区| 精品人妻视频免费看| 久久久成人免费电影| 99在线人妻在线中文字幕| 春色校园在线视频观看| 欧洲精品卡2卡3卡4卡5卡区| 成人高潮视频无遮挡免费网站| 精品国产三级普通话版| 两个人视频免费观看高清| 99久国产av精品| h日本视频在线播放| 国产成人精品婷婷| 秋霞在线观看毛片| 色5月婷婷丁香| 国内揄拍国产精品人妻在线| 97热精品久久久久久| 啦啦啦观看免费观看视频高清| 国内少妇人妻偷人精品xxx网站| АⅤ资源中文在线天堂| 秋霞在线观看毛片| 亚洲国产精品合色在线| 国产蜜桃级精品一区二区三区| 男人的好看免费观看在线视频| 欧美+日韩+精品| 少妇的逼好多水| 国产精品永久免费网站| 日韩制服骚丝袜av| 亚洲不卡免费看| 国产一区二区三区av在线 | 三级男女做爰猛烈吃奶摸视频| 最近视频中文字幕2019在线8| 国产成人a区在线观看| 热99在线观看视频| 九九爱精品视频在线观看| 亚洲精品自拍成人| 国产黄色视频一区二区在线观看 | 亚洲18禁久久av| 国产乱人偷精品视频| 少妇人妻一区二区三区视频| 日韩一区二区三区影片| 亚洲激情五月婷婷啪啪| 秋霞在线观看毛片| 日日啪夜夜撸| 国产视频内射| av在线蜜桃| 国产成人福利小说| 亚洲欧美日韩卡通动漫| 免费av毛片视频| 亚洲精品影视一区二区三区av| 国产精品永久免费网站| 看非洲黑人一级黄片| 国产精品一二三区在线看| 国产精品综合久久久久久久免费| 国内精品宾馆在线| 悠悠久久av| 一边摸一边抽搐一进一小说| 亚洲av二区三区四区| 日日干狠狠操夜夜爽| 国产精品不卡视频一区二区| 亚洲精品国产成人久久av| 久久草成人影院| 男人舔奶头视频| 可以在线观看的亚洲视频| 日本-黄色视频高清免费观看| 日韩欧美精品免费久久| 高清午夜精品一区二区三区 | 赤兔流量卡办理| 长腿黑丝高跟| 国产av麻豆久久久久久久| 在线免费观看的www视频| 国产在视频线在精品| 男女做爰动态图高潮gif福利片| 一级av片app| 免费看a级黄色片| 秋霞在线观看毛片| 自拍偷自拍亚洲精品老妇| 国产淫片久久久久久久久| av.在线天堂| videossex国产| 波野结衣二区三区在线| 99久久无色码亚洲精品果冻| 国产精品乱码一区二三区的特点| 丝袜美腿在线中文| 波野结衣二区三区在线| 欧美成人一区二区免费高清观看| 亚洲中文字幕日韩| 午夜免费激情av| 插逼视频在线观看| 亚洲四区av| 久久精品91蜜桃| 男人的好看免费观看在线视频| 成人亚洲欧美一区二区av| 卡戴珊不雅视频在线播放| 黄色一级大片看看| 99久久无色码亚洲精品果冻| 亚洲成人av在线免费| 一个人观看的视频www高清免费观看| 国产精品乱码一区二三区的特点| 91久久精品国产一区二区成人| 精品少妇黑人巨大在线播放 | 婷婷色av中文字幕| 日本色播在线视频| 精品久久久久久成人av| 美女国产视频在线观看| 日本一本二区三区精品| 美女 人体艺术 gogo| 悠悠久久av| 国产老妇伦熟女老妇高清| 我的老师免费观看完整版| 美女cb高潮喷水在线观看| 夜夜看夜夜爽夜夜摸| 插阴视频在线观看视频| 亚洲成人久久性| 国产精品久久久久久精品电影小说 | 欧美精品一区二区大全| 亚洲成人久久爱视频| 边亲边吃奶的免费视频| 两个人视频免费观看高清| 国产久久久一区二区三区| 男人舔奶头视频| 美女内射精品一级片tv| 一个人看的www免费观看视频| 性插视频无遮挡在线免费观看| 三级经典国产精品| 国模一区二区三区四区视频| 国内精品美女久久久久久| 精品一区二区三区视频在线| 亚洲av中文av极速乱| 日韩一区二区三区影片| 五月伊人婷婷丁香| 高清在线视频一区二区三区 | 欧美性猛交╳xxx乱大交人| 日日摸夜夜添夜夜添av毛片| 亚洲欧美日韩卡通动漫| 在线观看免费视频日本深夜| 毛片女人毛片| 国产精品综合久久久久久久免费| 亚洲成a人片在线一区二区| 人人妻人人澡欧美一区二区| 成熟少妇高潮喷水视频| 亚洲av.av天堂| 99热这里只有是精品50| a级毛片免费高清观看在线播放| 小蜜桃在线观看免费完整版高清| 在线观看美女被高潮喷水网站| 久久精品国产亚洲av涩爱 | 人妻夜夜爽99麻豆av| 午夜爱爱视频在线播放| 最好的美女福利视频网| 国产精品久久电影中文字幕| 免费不卡的大黄色大毛片视频在线观看 | 国产亚洲av嫩草精品影院| 我的老师免费观看完整版| 三级毛片av免费| 亚洲乱码一区二区免费版| 特大巨黑吊av在线直播| 草草在线视频免费看| 日本黄色片子视频| 色噜噜av男人的天堂激情| 九九爱精品视频在线观看| 国产精品一及| 欧美潮喷喷水| 青青草视频在线视频观看| 亚洲最大成人中文| 午夜福利在线观看吧| 中文亚洲av片在线观看爽| 久久午夜亚洲精品久久| 日产精品乱码卡一卡2卡三| 91精品国产九色| 菩萨蛮人人尽说江南好唐韦庄 | 91精品一卡2卡3卡4卡| 一夜夜www| 夫妻性生交免费视频一级片| 国产片特级美女逼逼视频| 国内精品美女久久久久久| 国产精品嫩草影院av在线观看| 12—13女人毛片做爰片一| 国产日本99.免费观看| 五月伊人婷婷丁香| 最近最新中文字幕大全电影3| 国产国拍精品亚洲av在线观看| a级一级毛片免费在线观看| 青青草视频在线视频观看| 三级经典国产精品| 久久久色成人| 最好的美女福利视频网| 国内久久婷婷六月综合欲色啪| 日韩三级伦理在线观看| 天堂av国产一区二区熟女人妻| 舔av片在线| 天天一区二区日本电影三级| 国产成人影院久久av| 22中文网久久字幕| 中出人妻视频一区二区| 免费不卡的大黄色大毛片视频在线观看 | 国产精品嫩草影院av在线观看| 亚洲精品乱码久久久久久按摩| 美女高潮的动态| 国产伦精品一区二区三区视频9| 国产成人a区在线观看| 成人特级av手机在线观看| 两性午夜刺激爽爽歪歪视频在线观看| 天天躁日日操中文字幕| 亚洲一区二区三区色噜噜| 日本撒尿小便嘘嘘汇集6| 久久精品久久久久久噜噜老黄 | 午夜福利在线观看免费完整高清在 | 在线观看免费视频日本深夜| 亚洲成人久久爱视频| 日本色播在线视频| 国产色爽女视频免费观看| 久久久久久大精品| 欧美不卡视频在线免费观看| 老司机影院成人| 又粗又爽又猛毛片免费看| 99在线视频只有这里精品首页| av.在线天堂| 亚洲欧美清纯卡通| 99久久九九国产精品国产免费| 亚洲内射少妇av| 国产在视频线在精品| 搡女人真爽免费视频火全软件| 啦啦啦啦在线视频资源| 午夜福利在线在线| 狂野欧美白嫩少妇大欣赏| 两个人的视频大全免费| 国产精品久久久久久av不卡| 久久久久国产网址| 国产精品女同一区二区软件| 日韩欧美在线乱码| 久久久精品94久久精品| 国产探花在线观看一区二区| 爱豆传媒免费全集在线观看| 美女内射精品一级片tv| 国产精品乱码一区二三区的特点| 综合色丁香网| 特级一级黄色大片| 天美传媒精品一区二区| 日韩国内少妇激情av| 免费搜索国产男女视频| 男的添女的下面高潮视频| 晚上一个人看的免费电影| 日韩三级伦理在线观看| 特级一级黄色大片| 春色校园在线视频观看| 最好的美女福利视频网| 最近最新中文字幕大全电影3| 亚洲精品国产成人久久av| 黄色配什么色好看| 精品一区二区三区视频在线| 精品久久久久久久久亚洲| 丝袜喷水一区| 五月玫瑰六月丁香| 精品久久久久久久人妻蜜臀av| 亚洲aⅴ乱码一区二区在线播放| 人妻夜夜爽99麻豆av| 91精品国产九色| 深夜精品福利| 欧美人与善性xxx| 久久九九热精品免费| 久久99蜜桃精品久久| 直男gayav资源| 国产一区二区在线av高清观看| 国产精品国产高清国产av| 国产淫片久久久久久久久| 亚洲国产精品sss在线观看| 极品教师在线视频| av免费在线看不卡| 久久久久免费精品人妻一区二区| 18禁裸乳无遮挡免费网站照片| 波多野结衣高清无吗| 校园春色视频在线观看| 久久精品综合一区二区三区| 三级经典国产精品| 中文字幕精品亚洲无线码一区| 国产蜜桃级精品一区二区三区| 亚洲人成网站在线观看播放| 亚洲高清免费不卡视频| 亚洲精品自拍成人| 国产亚洲av片在线观看秒播厂 | 久久精品人妻少妇| 国产乱人偷精品视频| 日韩欧美精品v在线| 精品久久久久久久久久免费视频| 最近中文字幕高清免费大全6| 欧美三级亚洲精品| 国产精品久久久久久久久免| 亚洲熟妇中文字幕五十中出| 成人高潮视频无遮挡免费网站| 麻豆成人午夜福利视频| 搡女人真爽免费视频火全软件| 欧美变态另类bdsm刘玥| 最后的刺客免费高清国语| 日日啪夜夜撸| 国产在线精品亚洲第一网站| 99久久成人亚洲精品观看| 黄色视频,在线免费观看| 日本黄色视频三级网站网址| 亚洲一区高清亚洲精品| 日韩欧美三级三区| 国产成人freesex在线| 久久久国产成人免费| 亚洲精品成人久久久久久| 国产探花在线观看一区二区| 国产成人a∨麻豆精品| 亚洲精品乱码久久久久久按摩| 色尼玛亚洲综合影院| 听说在线观看完整版免费高清| 美女脱内裤让男人舔精品视频 | 12—13女人毛片做爰片一| 一卡2卡三卡四卡精品乱码亚洲| 国产精品日韩av在线免费观看| 黄色一级大片看看| 美女 人体艺术 gogo| 亚洲综合色惰| 久久精品国产亚洲av涩爱 | 永久网站在线| 国产精品久久久久久精品电影小说 | 日本熟妇午夜| 最近视频中文字幕2019在线8| 亚洲精华国产精华液的使用体验 | 黄色欧美视频在线观看| 麻豆国产97在线/欧美| 中国美白少妇内射xxxbb| 女人十人毛片免费观看3o分钟| 熟女电影av网| 欧美xxxx性猛交bbbb| 亚洲精品日韩av片在线观看| 亚洲久久久久久中文字幕| 国产亚洲91精品色在线| 久久精品国产亚洲av涩爱 | 99视频精品全部免费 在线| 久久久国产成人免费| 哪个播放器可以免费观看大片| 亚洲第一电影网av| av又黄又爽大尺度在线免费看 | 又爽又黄a免费视频| 哪里可以看免费的av片| 成人永久免费在线观看视频| 亚洲婷婷狠狠爱综合网| 人妻夜夜爽99麻豆av| 三级毛片av免费| 亚洲乱码一区二区免费版|