亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? win32串口編程技術.htm

?? Win32串口編程技術,vc++環境下
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"><META NAME="Generator" CONTENT="Microsoft Word 97"><TITLE>WIN32串口通信技術</TITLE></HEAD><BODY bgcolor="#CCCCFF"><B><FONT FACE="宋體" LANG="ZH-CN"> <P ALIGN="JUSTIFY">Win32串口編程技術</P></font></B><FONT FACE="宋體" LANG="ZH-CN" SIZE=3> <P ALIGN="JUSTIFY"> <b><font face="宋體" lang="ZH-CN" size="2">金貝貝</font><font size="2">   </font></b> </P><P ALIGN="JUSTIFY">串口通信是經典的數據通信,從單片機串口通信DOS下串口通信到WIN32串口通信,發展變換很大,WIN32下的串口通信與其他串口通信有很大的區別,在WIN32下的串口通信編程方式主要有兩種,一種是采用WIN32   API函數調用,另外一種方式是使用ActiveX控件。該綜述的第二部分介紹了WIN32下的串口通信。主要是利用多線程技術,調用WIN32 API函數,實現同步或異步的串口通信,根據不同的硬件握手方式和串口連線方式,WIN32下的串口通信方式十分靈活。作者利用該串口通信技術,采用VC6.0編程,在Windows98環境下開發了一套“公安350兆無線集群調度系統”,實時傳遞集群系統的電臺的數據和計算機的指令,成功的實現了集群系統的計算機調度,工作情況良好。</P><B><P ALIGN="JUSTIFY"> </P><P ALIGN="JUSTIFY">一.Win32串口通信基本知識</P></B><P ALIGN="JUSTIFY"> </P></FONT><P ALIGN="JUSTIFY"><FONT SIZE=3>Win32</font><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>下串口通信與</FONT><FONT SIZE=3>16</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>位串口通信有很大的區別。在</FONT><FONT SIZE=3>Win32</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>下,可以使用兩種編程方式實現串口通信,其一是調用的</FONT><FONT SIZE=3>Windows</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>的</FONT><FONT SIZE=3>API</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數,其二是使用</FONT><FONT SIZE=3>ActiveX</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>控件。使用</FONT><FONT SIZE=3>API</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>調用,可以清楚地掌握串口通信的機制,熟悉各種配置和自由靈活采用不同的流控進行串口通信。下面介紹一下串口操作的基本知識。</font></P><OL><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"></font><LI><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>打開串口:使用</font><FONT SIZE=3>CreateFile()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數,可以打開串口,有兩種方法可以打開串口,一種是同步方式(</FONT><FONT SIZE=3>NonOverlapped</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</FONT><FONT SIZE=3>,</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>另外一種異步方式(</FONT><FONT SIZE=3>overlapped</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)。使用</FONT><FONT SIZE=3>Overlapped</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>打開時,適當的方法是:</font></LI><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><p></P></FONT><FONT SIZE=3><P ALIGN="JUSTIFY">HANDLE  hComm;</P><P ALIGN="JUSTIFY">hComm = CreateFile( gszPort,  </P><P ALIGN="JUSTIFY">                    GENERIC_READ | GENERIC_WRITE, </P><P ALIGN="JUSTIFY">                    0, </P><P ALIGN="JUSTIFY">                    0, </P><P ALIGN="JUSTIFY">                    OPEN_EXISTING,</P><P ALIGN="JUSTIFY">                    FILE_FLAG_OVERLAPPED,</P><P ALIGN="JUSTIFY">                    0);</P><P ALIGN="JUSTIFY">if (hComm == INVALID_HANDLE_VALUE)</P><P ALIGN="JUSTIFY">   // error opening port; abort</P></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"><LI>配置串口:</LI><p></P></font></OL><DIR><P ALIGN="JUSTIFY"><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>(</font><FONT SIZE=3>1</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</FONT><FONT SIZE=3>DCB</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>配置:</FONT> </P><DIR><DIR><P ALIGN="JUSTIFY"><FONT SIZE=3>DCB</font><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>(</FONT><FONT SIZE=3>Device Control Block</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)結構定義了串口通信設備的控制設置。許多重要設置都是在</FONT><FONT SIZE=3>DCB</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>結構中設置的,有三種方式可以初始化</FONT><FONT SIZE=3>DCB</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>。</font></P></DIR></DIR><P ALIGN="JUSTIFY"><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>其一是:通過</font><FONT SIZE=3>GetCommState()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數得</FONT><FONT SIZE=3>DCB</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>的初始值,其使用方式為:</font></P><FONT SIZE=3><P ALIGN="JUSTIFY">   DCB dcb = {0};</P><P ALIGN="JUSTIFY">   if (!GetCommState(hComm, &amp;dcb))</P><P ALIGN="JUSTIFY">      // Error getting current DCB settings</P><P ALIGN="JUSTIFY">   else</P><P ALIGN="JUSTIFY">      // DCB is ready for use.</P></FONT><DIR><DIR><FONT SIZE=3></font><P ALIGN="JUSTIFY"><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>其二是:用</font><FONT SIZE=3>BuildCommDCB()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數初始化</FONT><FONT SIZE=3>DCB</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>結構,該函數填充</FONT><FONT SIZE=3>DCB</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>的波特率,奇偶校驗類型,數據位,停止位,和數據位。對于流控成員函數設置了缺省值。其用法是:</font></P></DIR></DIR><FONT SIZE=3><P ALIGN="JUSTIFY">   DCB dcb;</P><P ALIGN="JUSTIFY">   FillMemory(&amp;dcb, sizeof(dcb), 0);</P><P ALIGN="JUSTIFY">   dcb.DCBlength = sizeof(dcb);</P><P ALIGN="JUSTIFY">   if (!BuildCommDCB("9600,n,8,1", &amp;dcb)) {   </P><P ALIGN="JUSTIFY">      // Couldn't build the DCB. Usually a problem</P><P ALIGN="JUSTIFY">      // with the communications specification string.</P><P ALIGN="JUSTIFY">      return FALSE;</P><P ALIGN="JUSTIFY">   }</P><P ALIGN="JUSTIFY">   else</P><P ALIGN="JUSTIFY">      // DCB is ready for use.</P></FONT><DIR><FONT SIZE=3></font><P ALIGN="JUSTIFY"><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>其三為:用</font><FONT SIZE=3>SetCommState()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數手動設置</FONT><FONT SIZE=3>DCB</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>初值。用法如下:</font></P></DIR></DIR><FONT SIZE=3><P ALIGN="JUSTIFY">      DCB dcb;</P><P ALIGN="JUSTIFY">     FillMemory(&amp;dcb, sizeof(dcb), 0);</P><P ALIGN="JUSTIFY">     if (!GetCommState(hComm, &amp;dcb))     // get current DCB</P></FONT><P ALIGN="JUSTIFY"><FONT SIZE=3>     </font><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>&#9;</FONT><FONT SIZE=3> // Error in GetCommState</font></P><FONT SIZE=3><P ALIGN="JUSTIFY">     &#9;return FALSE;</P><DIR><P ALIGN="JUSTIFY">// Update DCB rate.</P></DIR></FONT><P ALIGN="JUSTIFY"><FONT SIZE=3>   </font><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>&#9;</FONT><FONT SIZE=3> dcb.BaudRate = CBR_9600 ;</font></P><P ALIGN="JUSTIFY"><FONT SIZE=3>   </font><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>&#9;</FONT><FONT SIZE=3>// Set new state.</font></P><FONT SIZE=3><P ALIGN="JUSTIFY">    if (!SetCommState(hComm, &amp;dcb))</P><P ALIGN="JUSTIFY">      // Error in SetCommState. Possibly a problem with the communications </P><P ALIGN="JUSTIFY">      // port handle or a problem with the DCB structure itself.</P></FONT><P ALIGN="JUSTIFY"><FONT SIZE=3>   </font><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>手動設置</FONT><FONT SIZE=3>DCB</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>值時,</FONT><FONT SIZE=3>DCB</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>的結構的各成員的含義,可以參看</FONT><FONT SIZE=3>MSDN</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>幫助。</font></P><P ALIGN="JUSTIFY"><FONT SIZE=3>   </font><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>(</FONT><FONT SIZE=3>2</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)流控設置:</font></P><OL TYPE="A"><DIR><DIR><OL TYPE="A"><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"></font><LI><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>硬件流控:串口通信中的硬件流控有兩種,</font><FONT SIZE=3>DTE/DSR</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>方式和</FONT><FONT SIZE=3>RTS/CTS</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>方式,這與</FONT><FONT SIZE=3>DCB</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>結構的初始化有關系,</FONT><FONT SIZE=3>DCB</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>結構中的</FONT><FONT SIZE=3>OutxCtsFlow</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>fOutxDsrFlow</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>fDsrSensitivity</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>fRtsControl</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>fDtrControl</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>幾個成員的初始值很關鍵,不同的值代表不同流控,也可以自己設置流控。但建議采用標準流行的流控方式。采用硬件流控時,</FONT><FONT SIZE=3>DTE</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>DSR</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>RTS</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>CTS</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>的邏輯位直接影響到數據的讀寫及收發數據的緩沖區控制。</font></LI><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><p></P><P ALIGN="JUSTIFY"></FONT><LI><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>軟件流控:串口通信中采用特殊字符</font><FONT SIZE=3>XON</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>XOFF</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>作為控制串口數據的收發。與此相關的</FONT><FONT SIZE=3>DCB</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>成員是:</FONT><FONT SIZE=3>fOut</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>fInX</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>XoffChar</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>XonChar</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>XoffLim</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>XonLim</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>。</font></LI><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><p></P></font></OL></DIR></DIR></OL><P ALIGN="JUSTIFY"><FONT SIZE=3>      </font><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>具體含義參見</FONT><FONT SIZE=3>MSDN</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>幫助。</font></P><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><OL><P ALIGN="JUSTIFY"><LI>串口讀寫操作:</LI><p></P></OL></FONT><DIR><P ALIGN="JUSTIFY"><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>串口讀寫有兩種方式:同步方式(</font><FONT SIZE=3>NonOverlapped</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)和異步方式(</FONT><FONT SIZE=3>Overlapped</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)。同步方式是指必需完成了讀寫操作,函數才返回,這可能造成程序死掉,因為如果在讀寫時發生了錯誤,永遠不返回就會出錯,可能線程將永遠等待在那兒。而異步方式則靈活得多,一旦讀寫不成功,就將讀寫掛起,函數直接返回,可以通過</FONT><FONT SIZE=3>GetLastError</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數得到讀寫未成功的原因。所以常常采用異步方式操作。</font></P></DIR><OL><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"><LI>讀操作:</LI><p></P></font><P ALIGN="JUSTIFY"><FONT SIZE=3>ReadFile()</font><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數用于完成讀操作。異步方式的讀操作為:</font></P><FONT SIZE=3><P ALIGN="JUSTIFY">DWORD dwRead;</P><P ALIGN="JUSTIFY">BOOL fWaitingOnRead = FALSE;</P><P ALIGN="JUSTIFY">OVERLAPPED osReader = {0};</P><P ALIGN="JUSTIFY">// Create the overlapped event. Must be closed before exiting</P><P ALIGN="JUSTIFY">// to avoid a handle leak.</P><P ALIGN="JUSTIFY">osReader.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);</P><P ALIGN="JUSTIFY">if (osReader.hEvent == NULL)</P><P ALIGN="JUSTIFY">   // Error creating overlapped event; abort.</P><P ALIGN="JUSTIFY">if (!fWaitingOnRead) {</P><P ALIGN="JUSTIFY">   // Issue read operation.</P><P ALIGN="JUSTIFY">   if (!ReadFile(hComm, lpBuf, READ_BUF_SIZE, &amp;dwRead, &amp;osReader)) {</P><P ALIGN="JUSTIFY">      if (GetLastError() != ERROR_IO_PENDING)     // read not delayed?</P><P ALIGN="JUSTIFY">         // Error in communications; report it.</P><P ALIGN="JUSTIFY">      else</P><P ALIGN="JUSTIFY">         fWaitingOnRead = TRUE;</P><P ALIGN="JUSTIFY">   }</P><P ALIGN="JUSTIFY">   else {    </P><P ALIGN="JUSTIFY">      // read completed immediately</P><P ALIGN="JUSTIFY">      HandleASuccessfulRead(lpBuf, dwRead);</P><P ALIGN="JUSTIFY">    }</P><P ALIGN="JUSTIFY">}</P></FONT><P ALIGN="JUSTIFY"><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>如果讀操作被掛起,可以調用</font><FONT SIZE=3>WaitForSingleObject()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數或</FONT><FONT SIZE=3>WaitForMuntilpleObjects()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數等待讀操作完成或者超時發生,再調用</FONT><FONT SIZE=3>GetOverlappedResult()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>得到想要的信息。</font></P><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"></FONT><LI><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>寫操作:與讀操作相似,故不詳述,調用的</font><FONT SIZE=3>API</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數是:</FONT><FONT SIZE=3>WriteFile</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數。</font></LI><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><p></P></font></OL><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人一二三区| 91久久精品国产91性色tv| 日韩午夜激情电影| 久久精品久久久精品美女| 欧美一级日韩一级| 国内外成人在线视频| 国产欧美日韩三级| 99国产精品国产精品久久| 国产精品乱人伦一区二区| 成人国产精品视频| 亚洲国产一区二区三区| 91精品国产综合久久久蜜臀图片| 蜜臀av性久久久久av蜜臀妖精| 欧美精品一区二区三区在线| 高清国产一区二区| 夜夜爽夜夜爽精品视频| 日韩欧美高清在线| 99久久精品国产一区二区三区| 一区二区三区欧美在线观看| 日韩亚洲欧美在线观看| 粉嫩aⅴ一区二区三区四区| 一区二区三区在线高清| 欧美丰满一区二区免费视频| 国产精品综合久久| 亚洲一区二区中文在线| 精品乱码亚洲一区二区不卡| 99免费精品视频| 青青草国产精品亚洲专区无| 国产欧美精品一区二区色综合 | 亚洲电影第三页| 久久久一区二区三区| 色综合久久中文综合久久牛| 日本va欧美va欧美va精品| 国产精品天干天干在线综合| 欧美在线你懂的| 国产1区2区3区精品美女| 亚洲第一主播视频| 国产精品麻豆久久久| 日韩一卡二卡三卡四卡| 99v久久综合狠狠综合久久| 捆绑调教美女网站视频一区| 亚洲免费在线看| 久久女同性恋中文字幕| 欧美蜜桃一区二区三区| eeuss鲁片一区二区三区在线看| 日韩成人av影视| 亚洲女同一区二区| 国产三级精品视频| 欧美电影免费观看高清完整版在线观看| 99免费精品在线观看| 国产美女主播视频一区| 日韩成人午夜电影| 亚洲一区在线视频观看| 中文字幕一区二区视频| 久久久国产一区二区三区四区小说 | 欧美日韩日本视频| 不卡的电视剧免费网站有什么| 日本伊人精品一区二区三区观看方式| 国产精品国产精品国产专区不蜜 | 中文字幕在线视频一区| 久久综合给合久久狠狠狠97色69| 欧美日韩成人综合天天影院| 色综合天天综合网国产成人综合天 | 亚洲va欧美va人人爽| 亚洲精品中文在线| 1024成人网| 中文字幕中文字幕在线一区| wwww国产精品欧美| 欧美变态口味重另类| 欧美一区二区三区系列电影| 欧美丝袜丝交足nylons| 91国产精品成人| 色菇凉天天综合网| 一本久久a久久精品亚洲| 不卡视频一二三| 99精品黄色片免费大全| 成人av在线观| 波多野结衣亚洲一区| 99综合影院在线| 91网站最新网址| 色视频欧美一区二区三区| 91麻豆成人久久精品二区三区| 一本久久综合亚洲鲁鲁五月天| 色婷婷av一区二区| 欧美色网站导航| 7777精品伊人久久久大香线蕉| 欧美人与禽zozo性伦| 91精品国产欧美一区二区| 日韩欧美国产系列| 久久中文字幕电影| 国产欧美精品在线观看| 亚洲免费看黄网站| 亚洲国产另类av| 日本视频一区二区| 久久99精品国产| 国产精品888| 99精品视频在线播放观看| 一本久久a久久免费精品不卡| 欧美三级日韩三级| 日韩女优电影在线观看| 国产网站一区二区三区| 亚洲天堂网中文字| 亚洲成人福利片| 激情欧美一区二区| 99久久精品国产毛片| 制服丝袜亚洲精品中文字幕| 精品国产免费一区二区三区香蕉| 国产日韩欧美不卡在线| 伊人夜夜躁av伊人久久| 日本亚洲电影天堂| 国产成人亚洲精品青草天美| 91老师国产黑色丝袜在线| 7777精品伊人久久久大香线蕉超级流畅 | 久久久精品国产免费观看同学| 亚洲国产成人午夜在线一区| 亚洲一区二区在线视频| 久久精品国内一区二区三区| 成人国产在线观看| 91精品国产综合久久福利软件| 久久久国际精品| 五月开心婷婷久久| 成人动漫av在线| 日韩欧美一区中文| 椎名由奈av一区二区三区| 日韩国产精品久久| 99久久久无码国产精品| 精品久久久久久久久久久院品网| 成人免费一区二区三区视频 | 久久久不卡网国产精品二区| 一区二区三区.www| 国精产品一区一区三区mba桃花| 99re这里只有精品首页| 精品国产精品网麻豆系列| 亚洲一区二区欧美日韩| 国产成人一区在线| 日韩网站在线看片你懂的| 亚洲日本va午夜在线影院| 国产精品99久久久久久似苏梦涵| 欧美日韩免费视频| 亚洲天堂免费在线观看视频| 国产精品99久久久| 精品国产髙清在线看国产毛片| 午夜私人影院久久久久| 91美女片黄在线| 国产天堂亚洲国产碰碰| 蜜臀av在线播放一区二区三区| 91黄色激情网站| 国产精品久久久久久久午夜片| 久草精品在线观看| 在线播放国产精品二区一二区四区| 亚洲日本青草视频在线怡红院| 国产福利一区二区三区视频| 欧美大片在线观看一区二区| 亚洲国产一区二区视频| 日本精品视频一区二区三区| 国产精品免费av| 丁香桃色午夜亚洲一区二区三区| 欧美成人精品福利| 麻豆成人综合网| 日韩一区二区精品| 久久精品国产精品亚洲精品| 欧美一级一区二区| 免费视频最近日韩| 日韩亚洲国产中文字幕欧美| 同产精品九九九| 日韩一区二区影院| 免费成人你懂的| 欧美大肚乱孕交hd孕妇| 老司机一区二区| 久久影院午夜片一区| 国产一区二区在线观看视频| 亚洲精品一区二区精华| 国产一区二区三区在线观看精品 | 一区二区三区欧美日| 在线欧美日韩精品| 亚洲伊人色欲综合网| 欧美日韩三级一区| 日本v片在线高清不卡在线观看| 日韩视频在线一区二区| 久久99久久久久| 久久精品一区二区三区四区| 国产精品18久久久久久久网站| 国产欧美1区2区3区| 国产精品一区免费视频| 亚洲人成7777| 欧美性感一区二区三区| 爽爽淫人综合网网站| 欧美一区二区三区白人| 国产伦精品一区二区三区视频青涩 | 欧美一区二区精品| 久久99精品一区二区三区三区| 久久综合九色综合97_久久久| 成人午夜大片免费观看| 亚洲精品欧美激情| 91精选在线观看| 大桥未久av一区二区三区中文| 亚洲特级片在线| 欧美一级午夜免费电影| 成人h动漫精品一区二| 亚洲在线一区二区三区|