• <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è)計
    久久99热6这里只有精品| 99久久精品国产国产毛片| 不卡视频在线观看欧美| 极品教师在线视频| 久久久久九九精品影院| 99热网站在线观看| 身体一侧抽搐| 久久精品国产亚洲av涩爱| 国产精品久久久久久久久免| 色播亚洲综合网| 五月玫瑰六月丁香| 精品国产三级普通话版| 纵有疾风起免费观看全集完整版 | 日本爱情动作片www.在线观看| 自拍偷自拍亚洲精品老妇| 久久精品91蜜桃| 国产伦精品一区二区三区四那| 嘟嘟电影网在线观看| av国产久精品久网站免费入址| 亚洲精品国产成人久久av| 搡女人真爽免费视频火全软件| 1000部很黄的大片| 久久精品国产亚洲av涩爱| 可以在线观看毛片的网站| 欧美另类亚洲清纯唯美| videossex国产| 久久久久久久午夜电影| 婷婷六月久久综合丁香| 久久精品人妻少妇| 久久久a久久爽久久v久久| av免费观看日本| 又爽又黄a免费视频| 久久综合国产亚洲精品| 大香蕉久久网| 成人性生交大片免费视频hd| 亚洲自偷自拍三级| 国产成人午夜福利电影在线观看| 国产白丝娇喘喷水9色精品| 久久亚洲国产成人精品v| 中文字幕精品亚洲无线码一区| 午夜福利在线观看吧| 亚洲精品国产成人久久av| 亚洲av成人精品一二三区| 边亲边吃奶的免费视频| 欧美人与善性xxx| 亚洲国产成人一精品久久久| 亚洲综合精品二区| 18禁在线播放成人免费| 美女国产视频在线观看| 国产精品一区二区性色av| 亚洲国产精品合色在线| 亚洲成av人片在线播放无| 久久精品国产鲁丝片午夜精品| 国产麻豆成人av免费视频| 男女视频在线观看网站免费| 97在线视频观看| 国产精品av视频在线免费观看| 日韩一本色道免费dvd| av福利片在线观看| 青春草视频在线免费观看| 亚洲av熟女| 亚洲精品国产成人久久av| 亚洲精品色激情综合| 亚州av有码| 99久久精品国产国产毛片| 亚洲av电影在线观看一区二区三区 | 亚洲图色成人| 美女cb高潮喷水在线观看| a级毛片免费高清观看在线播放| 国产精品福利在线免费观看| 天天一区二区日本电影三级| av在线老鸭窝| 麻豆av噜噜一区二区三区| 日韩欧美精品免费久久| 亚洲精品国产成人久久av| 久久精品久久久久久噜噜老黄 | 久久韩国三级中文字幕| 国产成人福利小说| 五月伊人婷婷丁香| 精品人妻偷拍中文字幕| 国产在线男女| 99久久人妻综合| 国产69精品久久久久777片| 日韩高清综合在线| 美女xxoo啪啪120秒动态图| 在线观看一区二区三区| 国产一区二区三区av在线| 久久热精品热| 国产极品精品免费视频能看的| 夫妻性生交免费视频一级片| 国产亚洲精品av在线| 欧美潮喷喷水| 亚洲av成人精品一区久久| 亚洲在线观看片| 99久久人妻综合| 特大巨黑吊av在线直播| 麻豆av噜噜一区二区三区| 国产乱来视频区| 亚洲成人久久爱视频| 男人的好看免费观看在线视频| 岛国在线免费视频观看| 免费看美女性在线毛片视频| 国产一区二区亚洲精品在线观看| 精品久久久久久久久亚洲| 欧美又色又爽又黄视频| 成人毛片60女人毛片免费| 亚洲成人av在线免费| 99久久九九国产精品国产免费| 国产伦一二天堂av在线观看| 欧美日韩国产亚洲二区| 特级一级黄色大片| 91狼人影院| 久久久久国产网址| 日韩成人伦理影院| 成人一区二区视频在线观看| 特大巨黑吊av在线直播| 久久人人爽人人片av| 美女cb高潮喷水在线观看| 少妇猛男粗大的猛烈进出视频 | 亚洲av不卡在线观看| 丰满少妇做爰视频| 亚洲高清免费不卡视频| 校园人妻丝袜中文字幕| 国产精品三级大全| 五月玫瑰六月丁香| 中文精品一卡2卡3卡4更新| 国产成人91sexporn| 久久久成人免费电影| 在线观看一区二区三区| 免费观看a级毛片全部| 免费看a级黄色片| 欧美一区二区精品小视频在线| 国产高清不卡午夜福利| 天天一区二区日本电影三级| 美女被艹到高潮喷水动态| 国产精品永久免费网站| 99久久成人亚洲精品观看| 亚洲不卡免费看| 女人被狂操c到高潮| 亚洲欧美中文字幕日韩二区| 精品欧美国产一区二区三| 亚洲精品影视一区二区三区av| 综合色丁香网| 观看美女的网站| 精品久久久久久久久av| 有码 亚洲区| 国产成人福利小说| 美女内射精品一级片tv| 水蜜桃什么品种好| 亚洲精品日韩av片在线观看| 欧美日韩精品成人综合77777| 日韩中字成人| 欧美bdsm另类| 草草在线视频免费看| 久久99热这里只有精品18| 亚洲综合色惰| 一卡2卡三卡四卡精品乱码亚洲| 色综合站精品国产| 欧美bdsm另类| 国产精品久久久久久精品电影| 一本—道久久a久久精品蜜桃钙片 精品乱码久久久久久99久播 | 黄片wwwwww| 久久这里只有精品中国| 日日撸夜夜添| 成人国产麻豆网| 久久亚洲精品不卡| 免费电影在线观看免费观看| 精品久久久久久久久av| 九九热线精品视视频播放| 欧美性感艳星| 日韩成人av中文字幕在线观看| 亚洲av熟女| 亚洲五月天丁香| 国语对白做爰xxxⅹ性视频网站| 亚洲欧美清纯卡通| 男插女下体视频免费在线播放| 亚洲欧美日韩高清专用| 免费在线观看成人毛片| 又爽又黄无遮挡网站| 啦啦啦啦在线视频资源| 欧美成人午夜免费资源| 欧美成人免费av一区二区三区| 少妇熟女欧美另类| 人妻系列 视频| 免费在线观看成人毛片| 精品无人区乱码1区二区| 久久精品国产亚洲网站| 国产亚洲一区二区精品| 欧美成人精品欧美一级黄| 中文字幕免费在线视频6| 久久精品国产鲁丝片午夜精品| 国产色爽女视频免费观看| 成人欧美大片| 联通29元200g的流量卡| 久久久久网色| 一本一本综合久久| 久久精品国产亚洲网站| 亚洲精品456在线播放app| 亚洲图色成人| 在现免费观看毛片| 亚洲国产欧美人成| 亚洲熟妇中文字幕五十中出| 国内精品美女久久久久久| 中文字幕熟女人妻在线| 长腿黑丝高跟| 久久久精品94久久精品| 国语自产精品视频在线第100页| 国产精品乱码一区二三区的特点| 免费看光身美女| 99久久人妻综合| 99久久成人亚洲精品观看| 51国产日韩欧美| 国产v大片淫在线免费观看| 九九爱精品视频在线观看| 老女人水多毛片| 啦啦啦韩国在线观看视频| 亚洲性久久影院| 中文资源天堂在线| 日本熟妇午夜| 人体艺术视频欧美日本| 大话2 男鬼变身卡| 91aial.com中文字幕在线观看| 国产一区二区三区av在线| 亚洲av男天堂| 亚洲欧洲日产国产| 精品免费久久久久久久清纯| 日韩高清综合在线| 乱系列少妇在线播放| 18禁动态无遮挡网站| 国产成人a区在线观看| 国产激情偷乱视频一区二区| 少妇高潮的动态图| 国产精品综合久久久久久久免费| 亚洲乱码一区二区免费版| 国产精品av视频在线免费观看| АⅤ资源中文在线天堂| 观看美女的网站| 日本欧美国产在线视频| 精品久久久久久成人av| 免费观看精品视频网站| 不卡视频在线观看欧美| 纵有疾风起免费观看全集完整版 | 直男gayav资源| 秋霞伦理黄片| 欧美不卡视频在线免费观看| 永久网站在线| av播播在线观看一区| 国产一区二区在线观看日韩| 国产男人的电影天堂91| 一个人免费在线观看电影| 亚洲综合精品二区| 三级国产精品片| av黄色大香蕉| 久久久精品大字幕| 黄色一级大片看看| 国产女主播在线喷水免费视频网站 | 性色avwww在线观看| 99热全是精品| 亚洲人成网站在线播| 国产伦精品一区二区三区四那| 成人高潮视频无遮挡免费网站| 亚洲中文字幕一区二区三区有码在线看| 国产午夜精品久久久久久一区二区三区| 我的女老师完整版在线观看| 欧美性猛交黑人性爽| 久久6这里有精品| 能在线免费观看的黄片| 国产亚洲av片在线观看秒播厂 | 欧美成人一区二区免费高清观看| 国产黄色视频一区二区在线观看 | 久久热精品热| www.色视频.com| 久久精品综合一区二区三区| 国产精品久久久久久av不卡| 久99久视频精品免费| 欧美成人午夜免费资源| 成人午夜精彩视频在线观看| 在线a可以看的网站| 中文欧美无线码| 噜噜噜噜噜久久久久久91| 久久国内精品自在自线图片| 干丝袜人妻中文字幕| 精品国内亚洲2022精品成人| 在线观看66精品国产| www日本黄色视频网| 最近视频中文字幕2019在线8| 性插视频无遮挡在线免费观看| 青春草国产在线视频| 天堂网av新在线| 国产精品国产高清国产av| 2022亚洲国产成人精品| 久久久精品欧美日韩精品| 国产精品熟女久久久久浪| 一卡2卡三卡四卡精品乱码亚洲| 97超碰精品成人国产| 边亲边吃奶的免费视频| 久久久成人免费电影| 美女xxoo啪啪120秒动态图| 精品一区二区三区视频在线| 人妻制服诱惑在线中文字幕| 男人舔奶头视频| 亚洲av成人av| 97热精品久久久久久| 国产精品久久久久久久久免| 波多野结衣巨乳人妻| 国内精品美女久久久久久| 99热网站在线观看| 一区二区三区四区激情视频| 狂野欧美白嫩少妇大欣赏| 99热这里只有是精品50| 国产成人freesex在线| 国产av在哪里看| 成年女人永久免费观看视频| 毛片女人毛片| 99久久人妻综合| 人妻制服诱惑在线中文字幕| 久久99精品国语久久久| 精品久久久久久久久av| 国产精华一区二区三区| 尤物成人国产欧美一区二区三区| 欧美人与善性xxx| 亚洲成人精品中文字幕电影| 国产精品三级大全| 国产片特级美女逼逼视频| av黄色大香蕉| 国内精品一区二区在线观看| 日产精品乱码卡一卡2卡三| 亚洲av成人av| 一本久久精品| videos熟女内射| 老司机影院毛片| 色综合亚洲欧美另类图片| 一二三四中文在线观看免费高清| 国产一级毛片在线| 国产探花极品一区二区| 国产一区二区三区av在线| 亚洲内射少妇av| 日本一二三区视频观看| 国产精品蜜桃在线观看| 免费av观看视频| 日本免费一区二区三区高清不卡| 国产一区亚洲一区在线观看| 国模一区二区三区四区视频| 如何舔出高潮| 亚洲欧美成人精品一区二区| 三级国产精品欧美在线观看| 亚洲精品色激情综合| 2021少妇久久久久久久久久久| 又爽又黄a免费视频| 夫妻性生交免费视频一级片| 亚洲av成人精品一二三区| 女人十人毛片免费观看3o分钟| 嘟嘟电影网在线观看| av在线亚洲专区| 91aial.com中文字幕在线观看| av在线天堂中文字幕| 桃色一区二区三区在线观看| 国产伦理片在线播放av一区| 亚洲精品久久久久久婷婷小说 | 亚洲五月天丁香| 亚洲图色成人| 成人亚洲欧美一区二区av| 国产精品一及| 国模一区二区三区四区视频| 久久人妻av系列| 国产免费福利视频在线观看| 国产视频首页在线观看| 久久久久性生活片| av在线亚洲专区| 国产精品无大码| 色播亚洲综合网| 乱码一卡2卡4卡精品| 永久网站在线| 日本猛色少妇xxxxx猛交久久| 中文乱码字字幕精品一区二区三区 | 观看美女的网站| 国产精品一二三区在线看| 亚洲av中文字字幕乱码综合| 久久精品人妻少妇| 中国国产av一级| 国产69精品久久久久777片| 欧美日韩国产亚洲二区| 成人三级黄色视频| av卡一久久| 真实男女啪啪啪动态图| 永久免费av网站大全| 中文字幕熟女人妻在线| 晚上一个人看的免费电影| 内射极品少妇av片p| 亚洲欧美成人综合另类久久久 | 国产精品国产高清国产av| 免费播放大片免费观看视频在线观看 | av在线天堂中文字幕| 极品教师在线视频| 波野结衣二区三区在线| 99久久中文字幕三级久久日本| 成人av在线播放网站| 国产精品电影一区二区三区| 波多野结衣高清无吗| 狠狠狠狠99中文字幕| 中文字幕人妻熟人妻熟丝袜美| 精品国产一区二区三区久久久樱花 | av线在线观看网站| 小说图片视频综合网站| 亚洲熟妇中文字幕五十中出| 国产精品一区www在线观看| 国产亚洲精品av在线| 免费播放大片免费观看视频在线观看 | 亚洲av一区综合| 婷婷色av中文字幕| 国产极品精品免费视频能看的| 日日摸夜夜添夜夜爱| 久久精品熟女亚洲av麻豆精品 | 看黄色毛片网站| 久久国产乱子免费精品| 色播亚洲综合网| 亚洲美女搞黄在线观看| 夜夜看夜夜爽夜夜摸| 中文精品一卡2卡3卡4更新| 国产免费福利视频在线观看| 久久久精品94久久精品| 蜜桃亚洲精品一区二区三区| 最近中文字幕2019免费版| 精品久久国产蜜桃| 晚上一个人看的免费电影| 免费观看在线日韩| 色综合站精品国产| 中文字幕亚洲精品专区| av.在线天堂| 我要看日韩黄色一级片| 亚洲不卡免费看| 91久久精品电影网| 免费大片18禁| 国产在线一区二区三区精 | 久久亚洲精品不卡| 男人的好看免费观看在线视频| av专区在线播放| 国产精品福利在线免费观看| 国产精品久久视频播放| 大又大粗又爽又黄少妇毛片口| av在线观看视频网站免费| 男女视频在线观看网站免费| 久久精品熟女亚洲av麻豆精品 | 国产伦在线观看视频一区| 婷婷六月久久综合丁香| 久久久国产成人免费| 搞女人的毛片| 日韩大片免费观看网站 | 国产成人a区在线观看| 亚洲欧美日韩无卡精品| 插阴视频在线观看视频| 国产又色又爽无遮挡免| 久久久成人免费电影| 少妇熟女欧美另类| av福利片在线观看| 亚洲最大成人av| 别揉我奶头 嗯啊视频| 久久久久久九九精品二区国产| 女人十人毛片免费观看3o分钟| 成人综合一区亚洲| 国产色爽女视频免费观看| 国产又黄又爽又无遮挡在线| 亚洲丝袜综合中文字幕| kizo精华| 国产又色又爽无遮挡免| 天堂影院成人在线观看| 欧美不卡视频在线免费观看| 国产精品一及| 51国产日韩欧美| 在线观看66精品国产| 国产高清国产精品国产三级 | 国产91av在线免费观看| 国产乱人视频| 91精品伊人久久大香线蕉| 99久久精品一区二区三区| 国内揄拍国产精品人妻在线| 水蜜桃什么品种好| .国产精品久久| 亚洲精品国产成人久久av| videos熟女内射| 哪个播放器可以免费观看大片| 亚洲欧美中文字幕日韩二区| 久久久久久久久久久免费av| 国产成人福利小说| 色尼玛亚洲综合影院| 国产三级在线视频| 国产精品嫩草影院av在线观看| 免费看光身美女| 亚洲av成人av| 久久草成人影院| 日韩一本色道免费dvd| 日韩高清综合在线| 免费看光身美女| or卡值多少钱| 亚洲在线自拍视频| 久久亚洲精品不卡| 青春草国产在线视频| 麻豆久久精品国产亚洲av| 久久精品久久精品一区二区三区| 亚洲av中文字字幕乱码综合| 最近最新中文字幕免费大全7| 午夜福利成人在线免费观看| 亚洲av中文av极速乱| 亚洲精品国产av成人精品| 久久鲁丝午夜福利片| 我要搜黄色片| 秋霞伦理黄片| 亚洲一级一片aⅴ在线观看| 老司机福利观看| 91久久精品电影网| 春色校园在线视频观看| 欧美激情久久久久久爽电影| 91久久精品国产一区二区三区| 一级爰片在线观看| 国产伦精品一区二区三区视频9| 三级毛片av免费| 精品不卡国产一区二区三区| 一夜夜www| 久久亚洲国产成人精品v| 国产黄a三级三级三级人| 国产又黄又爽又无遮挡在线| 在线观看一区二区三区| 国产精品一区www在线观看| 精品国产一区二区三区久久久樱花 | 搞女人的毛片| 狂野欧美激情性xxxx在线观看| 中文字幕久久专区| 色吧在线观看| 亚洲图色成人| 欧美bdsm另类| 国产一级毛片在线| 人人妻人人澡欧美一区二区| 最近的中文字幕免费完整| 身体一侧抽搐| 日韩成人av中文字幕在线观看| 看黄色毛片网站| 最近视频中文字幕2019在线8| 久久久精品大字幕| www.色视频.com| 亚洲人成网站在线播| 国产午夜精品久久久久久一区二区三区| 人妻少妇偷人精品九色| 永久网站在线| 一级毛片我不卡| 国产精品一区二区在线观看99 | 中文欧美无线码| 麻豆一二三区av精品| 国产精品av视频在线免费观看| 国产中年淑女户外野战色| 久久久久久九九精品二区国产| 在线观看美女被高潮喷水网站| 高清毛片免费看| 日韩中字成人| 男人和女人高潮做爰伦理| 欧美潮喷喷水| 床上黄色一级片| 99热这里只有是精品50| 国产精品一及| 国产在视频线在精品| 久久久成人免费电影| 内地一区二区视频在线| 看非洲黑人一级黄片| 中文字幕制服av| 国产一区二区在线观看日韩| 蜜桃亚洲精品一区二区三区| 久久国产乱子免费精品| 又爽又黄无遮挡网站| 亚洲欧美精品专区久久| 久久99热6这里只有精品| 国产精品国产三级专区第一集| 国产美女午夜福利| 寂寞人妻少妇视频99o| 一区二区三区乱码不卡18| 在线a可以看的网站| 午夜福利在线观看吧| 在线a可以看的网站| 日韩高清综合在线| 九九在线视频观看精品| 国语对白做爰xxxⅹ性视频网站| 黄色日韩在线| 午夜福利在线观看吧| 一个人看的www免费观看视频| 国产精品久久久久久av不卡| 波野结衣二区三区在线| 美女内射精品一级片tv| av天堂中文字幕网| 欧美成人一区二区免费高清观看| 九九在线视频观看精品| 男插女下体视频免费在线播放| 全区人妻精品视频| 午夜免费激情av| 日本-黄色视频高清免费观看| 日韩亚洲欧美综合| 亚洲av日韩在线播放| 国产老妇伦熟女老妇高清| 亚洲第一区二区三区不卡| 亚洲va在线va天堂va国产| 日本-黄色视频高清免费观看| 国产精品熟女久久久久浪| 91久久精品电影网| 亚洲欧美一区二区三区国产| 国产极品天堂在线| 亚洲精品456在线播放app| 久久精品久久久久久噜噜老黄 | 国产三级在线视频| 亚洲一区高清亚洲精品| 哪个播放器可以免费观看大片| 国产一级毛片在线| 欧美日韩精品成人综合77777| 特大巨黑吊av在线直播| 午夜a级毛片| 高清在线视频一区二区三区 | 一区二区三区免费毛片| 国产av码专区亚洲av| 最近手机中文字幕大全|