国产凹凸在线-国产拗女一区二区三区-国产白白视-国产白领-国产白拍-国产白丝jk被疯狂输-国产白丝喷-国产白丝在线

金喜正规买球

C#開發串口總結

轉帖|其它|編輯:郝浩|2011-07-20 14:39:13.000|閱讀 2705 次

概述:開發C#相關的項目有很多年了,一直沒有接觸串口的開發,近期由于工作的需要,需要了解熟悉對硬件串口的開發,通過對串口的深入了解,串口也不再是什么神秘的東西,利用SerailPort組件,對串口的各種操作也非常的方便,由于本人總是喜歡把一些常用的東西封裝成可供重復利用的類庫,因此,閱百家代碼,提煉總結優化,把對串口的操作封裝成一個公用的類庫,應付日常的串口編程開發,也算是工作的一個階段性總結吧。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

  開發C#相關的項目有很多年了,一直沒有接觸串口的開發,近期由于工作的需要,需要了解熟悉對硬件串口的開發,通過對串口的深入了解,串口也不再是什么神秘的東西,利用SerailPort組件,對串口的各種操作也非常的方便,由于本人總是喜歡把一些常用的東西封裝成可供重復利用的類庫,因此,閱百家代碼,提煉總結優化,把對串口的操作封裝成一個公用的類庫,應付日常的串口編程開發,也算是工作的一個階段性總結吧。

  先上圖,了解串口的一些基本的東西,并逐步介紹相關的知識。

 

  微軟在 .NET FrameWork2.0中對串口通訊進行了封裝,我們可以在.net2.0及以上版本開發時直接使用SerialPort類對串口進行讀寫操作。 SerialPort類的屬性主要包括:    

1)串口名稱(PortName)   

 2)波特率(BaudRate)  

3)數據位 DataBits    

4)停止位 StopBits

5)奇偶校驗 Parity  SerialPort類的事件主要包括:     DataReceived:用于異步接收串口數據事件

    ErrorReceived:錯誤處理事件

SerialPort類的方法主要包括: 

    Open();Close();Read();Write()、DiscardInBuffer()、DiscardOutBuffer()等

  從上面的測試例子圖中,我們可以看到,一般對串口的操作,需要提供串口號、波特率、數據位、停止位、奇偶校驗的參數,用來構造一個串口操作類,以便實現具體的串口操作,而這些參數有的是系統內置的枚舉參數,我們可以通過遍歷枚舉對象來綁定下來列表(如停止位、奇偶校驗);但有些參數卻不是系統內置的枚舉類型,例如波特率、數據位等,而且對這些參數操作也是串口開發經常用到的,因此,第一步,我對這些參數的綁定做了一個簡單的封裝。

  1、先構造波特率、數據位這兩個枚舉對象,方便實際操作。

    /// <summary>
     /// 串口數據位列表(5,6,7,8)
     ///  </summary>
     public enum SerialPortDatabits : int
     {
         FiveBits = 5,
         SixBits = 6,
         SeventBits = 7,
         EightBits = 8
     }

     ///  <summary>
     /// 串口波特率列表。
     /// 

75,110,150,300,600,1200,2400,4800,9600,

14400,19200,28800,38400,56000,57600,
     /// 115200,128000,230400,256000
     ///  </summary>
     public enum SerialPortBaudRates : int
     {
         BaudRate_75 = 75,
         BaudRate_110 = 110,
         BaudRate_150 = 150,
         BaudRate_300 = 300,
         BaudRate_600 = 600,
         BaudRate_1200 = 1200,
         BaudRate_2400 = 2400,
         BaudRate_4800 = 4800,
         BaudRate_9600 = 9600,
         BaudRate_14400 = 14400,
         BaudRate_19200 = 19200,
         BaudRate_28800 = 28800,
         BaudRate_38400 = 38400,
         BaudRate_56000 = 56000,
         BaudRate_57600 = 57600,
         BaudRate_115200 = 115200,
         BaudRate_128000 = 128000,
         BaudRate_230400 = 230400,
         BaudRate_256000 = 256000
   } 

 

  2、對常用的參數下拉列表綁定做一個封裝。

        /// <summary>
         /// 設置串口號
         ///  </summary>
         ///  <param name="obj"></param>
         public static void SetPortNameValues(ComboBox obj)
         {
             obj.Items.Clear();
             foreach (string str in SerialPort.GetPortNames())
             {
                 obj.Items.Add(str);
             }
         }

         ///  <summary>
         /// 設置波特率
         ///  </summary>
         public static void SetBauRateValues(ComboBox obj)
         {
             obj.Items.Clear();
              foreach (SerialPortBaudRates rate in Enum.

GetValues(typeof(SerialPortBaudRates)))
             {
                 obj.Items.Add(((int)rate).ToString());
             }
         }

         ///  <summary>
         /// 設置數據位
         ///  </summary>
         public static void SetDataBitsValues(ComboBox obj)
         {
             obj.Items.Clear();
              foreach (SerialPortDatabits databit in Enum.

GetValues(typeof(SerialPortDatabits)))
             {
                 obj.Items.Add(((int)databit).ToString());
             }
         }

         ///  <summary>
         /// 設置校驗位列表
         ///  </summary>
         public static  void SetParityValues(ComboBox obj)
         {
             obj.Items.Clear();
             foreach (string str in Enum.GetNames(typeof(Parity)))
             {
                 obj.Items.Add(str);
             }
         }

         ///  <summary>
         /// 設置停止位
         ///  </summary>
         public static void SetStopBitValues(ComboBox obj)
         {
             obj.Items.Clear();
             foreach (string str in Enum.GetNames(typeof(StopBits)))
             {
                 obj.Items.Add(str);
             } 
        }

  這樣我們在窗體界面代碼中,綁定相關參數的數據源就很方便了,如下所示。

        private void Form1_Load(object sender, EventArgs e)
         {
             BindData();
         }

         private void BindData()
         {
             //綁定端口號
             SerialPortUtil.SetPortNameValues(txtPort);
             txtPort.SelectedIndex = 0;

             //波特率
             SerialPortUtil.SetBauRateValues(txtBaudRate);
             txtBaudRate.SelectedText =  "57600";

             //數據位
             SerialPortUtil.SetDataBitsValues(txtDataBits);
             this.txtDataBits.SelectedText =  "8";

             //校驗位
             SerialPortUtil.SetParityValues(txtParity);
             this.txtParity.SelectedIndex = 0;

             //停止位
             SerialPortUtil.SetStopBitValues(txtStopBit);
             this.txtStopBit.SelectedIndex = 1;
          
             this.btnSend.Enabled = isOpened;
          }

  3、 為了方便構造封裝的窗口類,提供了兩個不同類型參數的串口輔助類構造函數,一個可以使用枚舉參數,一個使用字符串參數(最終轉換為枚舉參數對象),如下所示。使用枚舉對象,不需要記住不同參數應該填寫那些值,只需要從枚舉中選擇即可,方便又直觀。

        /// <summary>
         /// 參數構造函數(使用枚舉參數構造)
         ///  </summary>
         ///  <param name="baud">波特率</param>
         ///  <param name="par">奇偶校驗位</param>
         ///  <param name="sBits">停止位</param>
         ///  <param name="dBits">數據位</param>
         ///  <param name="name">串口號</param>
          public SerialPortUtil(string name, SerialPortBaudRates baud, 

Parity par, SerialPortDatabits dBits, StopBits sBits)
         {
             _portName = name;
             _baudRate = baud;
             _parity = par;
             _dataBits = dBits;
             _stopBits = sBits;

   comPort.DataReceived +=

 new SerialDataReceivedEventHandler(comPort_DataReceived);
comPort.ErrorReceived += 

new SerialErrorReceivedEventHandler(comPort_ErrorReceived);
         }

         ///  <summary>
         /// 參數構造函數(使用字符串參數構造)
         ///  </summary>
         ///  <param name="baud">波特率</param>
         ///  <param name="par">奇偶校驗位</param>
         ///  <param name="sBits">停止位</param>
         ///  <param name="dBits">數據位</param>
         ///  <param name="name">串口號</param>
          public SerialPortUtil(string name, string baud, 

string par, string dBits, string sBits)
         {
             _portName = name;
              _baudRate = (SerialPortBaudRates)Enum.

Parse(typeof(SerialPortBaudRates), baud);
             _parity = (Parity)Enum.Parse(typeof(Parity), par);
              _dataBits = (SerialPortDatabits)Enum.

Parse(typeof(SerialPortDatabits), dBits);
             _stopBits = (StopBits)Enum.Parse(typeof(StopBits), sBits);

  comPort.DataReceived += 

new SerialDataReceivedEventHandler(comPort_DataReceived);
  comPort.ErrorReceived +=

 new SerialErrorReceivedEventHandler(comPort_ErrorReceived);
        }

  構造函數做好了,就很方便在實際的窗體界面函數中構造串口實例了,如下使用代碼所示:

        

private void btnConnect_Click(object sender, EventArgs e)
         {
             try
             {
                 if (serial == null)
                 {
                     try
                     {
                         string portname = this.txtPort.Text;
                          SerialPortBaudRates rate = (SerialPortBaudRates)

        

  Enum.Parse(typeof(SerialPortBaudRates),

 this.txtBaudRate.Text);//int.Parse(this.txtBaudRate.Text);
SerialPortDatabits databit = (SerialPortDatabits)int.Parse(this.txtDataBits.Text);
Parity party = (Parity)Enum.Parse(typeof(Parity), this.txtParity.Text);
StopBits stopbit = (StopBits)Enum.Parse(typeof(StopBits), this.txtStopBit.Text);

//使用枚舉參數構造
//serial = new SerialPortUtil(portname, rate, party, databit, stopbit);

//使用字符串參數構造
 serial = new SerialPortUtil(portname, this.txtBaudRate.Text, 

this.txtParity.Text, this.txtDataBits.Text, this.txtStopBit.Text);
serial.DataReceived +=

 new DataReceivedEventHandler(serial_DataReceived);

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
serial = null;
return;
}
}

if (!isOpened)
{                    
serial.OpenPort();
btnConnect.Text =  "斷開";
}
else
{
serial.ClosePort();
serial = null;

btnConnect.Text =  "連接";
}

isOpened = !isOpened;
this.btnSend.Enabled = isOpened;
this.lblTips.Text = isOpened ?  "已連接" : "未連接";
}
catch (Exception ex)
{
this.lblTips.Text = ex.Message;
MessageBox.Show(ex.Message);
}
}

  4、對串口數據的發送以及串口的一些基本操作進行簡單封裝,方便輔助類對串口進行相關操作。

        /// <summary>
         /// 端口是否已經打開
         ///  </summary>
         public bool IsOpen
         {
             get
             {
                 return comPort.IsOpen;
             }
         }

         ///  <summary>
         /// 打開端口
         ///  </summary>
         ///  <returns></returns>
         public void OpenPort()
         {
             if (comPort.IsOpen) comPort.Close();

             comPort.PortName = _portName;
             comPort.BaudRate = (int)_baudRate;
             comPort.Parity = _parity;
             comPort.DataBits = (int)_dataBits;
             comPort.StopBits = _stopBits;

             comPort.Open();
         }

         ///  <summary>
         /// 關閉端口
         ///  </summary>
         public void ClosePort()
         {
             if (comPort.IsOpen) comPort.Close();
         }

         ///  <summary>
         /// 丟棄來自串行驅動程序的接收和發送緩沖區的數據
         ///  </summary>
         public void DiscardBuffer()
         {
             comPort.DiscardInBuffer();
             comPort.DiscardOutBuffer();
         }

         ///  <summary>
         /// 寫入數據
         ///  </summary>
         ///  <param name="msg"></param>
         public void WriteData(string msg)
         {
             if (!(comPort.IsOpen)) comPort.Open();

             comPort.Write(msg);
         }

         ///  <summary>
         /// 寫入數據
         ///  </summary>
         ///  <param name="msg">寫入端口的字節數組</param>
         public void WriteData(byte[] msg)
         {
             if (!(comPort.IsOpen)) comPort.Open();

             comPort.Write(msg, 0, msg.Length);
         }

         ///  <summary>
         /// 寫入數據
         ///  </summary>
         ///  <param name="msg">包含要寫入端口的字節數組</param>
         ///  <param name="offset">參數從0字節開始的字節偏移量</param>
         ///  <param name="count">要寫入的字節數</param>
         public void WriteData(byte[] msg, int offset, int count)
         {
             if (!(comPort.IsOpen)) comPort.Open();

             comPort.Write(msg, offset, count);
        }

  6、接收數據的還原

  這樣基本上就對串口封裝的差不多了,不過還有一個重要的操作就是對串口的數據進行接收,并進行處理。由于串口獲取數據不是一次性完整的獲取的,可能會被拆分為好幾段,因此,如何還原接收到的數據也就是一個值得注意的問題,這個最好能根據協議來確定,如我的協議基本上是以“~”符號開始,以“#”符號結束,因此我對協議數據的還原,就有可依據的準則。

1)首先要構造一個數據處理的代理,和一個數據處理的事件參數類,如下所示。 

    public class DataReceivedEventArgs : EventArgs
     {
         public string DataReceived;
         public DataReceivedEventArgs(string m_DataReceived)
         {
             this.DataReceived = m_DataReceived;
         }
     }

      public delegate void DataReceivedEventHandler(DataReceivedEventArgs e); 

2)然后構造一個數據接收和錯誤處理的事件,如下所示

        /// <summary>
         /// 完整協議的記錄處理事件
         ///  </summary>
         public event DataReceivedEventHandler DataReceived;
          public event SerialErrorReceivedEventHandler Error; 

3)在構造函數添加相關的事件處理,如下所示

        /// <summary>
         /// 參數構造函數(使用枚舉參數構造)
         ///  </summary>
         ///  <param name="baud">波特率</param>
         ///  <param name="par">奇偶校驗位</param>
         ///  <param name="sBits">停止位</param>
         ///  <param name="dBits">數據位</param>
         ///  <param name="name">串口號</param>
          public SerialPortUtil(string name, SerialPortBaudRates baud, Parity par, 

SerialPortDatabits dBits, StopBits sBits)
         {
             _portName = name;
             _baudRate = baud;
             _parity = par;
             _dataBits = dBits;
             _stopBits = sBits;

              comPort.DataReceived += 

new SerialDataReceivedEventHandler(comPort_DataReceived);
              comPort.ErrorReceived += 

new SerialErrorReceivedEventHandler(comPort_ErrorReceived);
      }

 4)實現對數據的接收和錯誤的處理 

        /// <summary>  

      /// 結束符比特      

  /// </summary>  

      public byte EndByte = 0x23;//string End = "#";
         ///  <summary>
         /// 數據接收處理
         ///  </summary>
void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
         {
             //禁止接收事件時直接退出
             if (ReceiveEventFlag) return;

             #region 根據結束字節來判斷是否全部獲取完成
             List <byte> _byteData = new List<byte>();
             bool found = false;//是否檢測到結束符號
             while (comPort.BytesToRead  > 0 || !found)
             {
                 byte[] readBuffer = new byte[comPort.ReadBufferSize + 1];
                 int count = comPort.Read(readBuffer, 0, comPort.ReadBufferSize);
                 for (int i = 0; i  < count; i++)
                 {
                     _byteData.Add(readBuffer[i]);

                     if (readBuffer[i] == EndByte)
                     {
                         found = true;
                     }
                 }
             } 
             #endregion
            
             //字符轉換
              string readString = 

System.Text.Encoding.Default.GetString(_byteData.ToArray(), 0, _byteData.Count);
            
             //觸發整條記錄的處理
             if (DataReceived != null)
             {
                 DataReceived(new DataReceivedEventArgs(readString));
             }
         }

         ///  <summary>
         /// 錯誤處理函數
         ///  </summary>
         void comPort_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
         {
             if (Error != null)
             {
                 Error(sender, e);
             }
        }

 

  在數據的接收還原中,我們用到了 EndByte的變量,這個變量是協議數據的結束字符,如果檢測到有這個字符的,就表明收到了一條完整的協議,可以把收到的字節數組組裝成文本字符串,然后交給委托事件進行處理即可。

  在外部的宿主程序中,當有數據收到的時候,輔助類會通知其對數據進行處理,如我們在宿主程序中綁定處理代碼如下所示。

        void serial_DataReceived(DataReceivedEventArgs e)
         {
             this.txtReceived.Invoke(new MethodInvoker(delegate
             {
                 this.txtReceived.AppendText(e.DataReceived + Environment.NewLine);
             }));
        }

  這樣,一旦收到一條完整的協議,界面上就會在文本框中增加一行數據,如前面的圖所示

 

  


標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn

文章轉載自:網絡轉載

為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
国产乱子伦在线播放最新章节 | 精品国产品国语 | 国产一区二区丝袜高跟 | 国产精品一区在线 | 亚洲aⅴ精品国产首次亮相 日韩美女aa高清在线观看 | 精品国产午夜理论片不卡 | 欧洲欧美精品日韩色午夜 | 国产一区女优在线观看 | 碰超在线97renren | 水蜜桃国产在线观看免费视频 | 国产一区亚洲 | 九月婷婷人人澡人人添 | 国产无人区卡一卡二扰乱码 | 国产日韩精品中文字幕视频一区 | 国产精品高清在线欧美 | 精品第一区二区三区 | 东京干男人都知道的 | 国产丝袜精品丝袜一区二区 | 中文字字幕在线精品乱码高清 | 欧美精品一区日韩国产 | 99精品视| 老司机午夜视频十八福利 | 亚洲男人的天堂一区二区 | 山东猎头 | 国产情侣真实露脸在线 | 日本一区二区三区免费在线观看 | 蜜桃影视 | 免费国产一二三四区 | 国产日本欧美三区 | 四房播播播 | 欧美日韩中文精品在线 | 99这里有精品 | 涩涩爱在线观看 | 91九色精品国产免费 | 99re在线这| 国产午夜手机精彩视频 | 国产亚洲日韩网暴欧美台湾 | 日韩中文字葛高清在线专区 | 欧美国产高清 | 高清在线精品一 | 国产欧美日韩视频专区在线观看 | 国产一区二区三区成人欧美日韩 | 日本69网站 | 视频在线华人精品草 | 国产ab一区二区 | 精品国产自在在线午夜精 | 91大神电影免费观看 | 日本中文字幕亚洲东 | 日韩最新| 亚洲第二页 | 91精品一区二区三区蜜桃 | 91福利一区二区在线观看 | 99视频精品全部国产盗摄 | 国产中文字幕视频在线播放 | 自偷自拍三级全 | 国产精品国产高清国产专区 | 欧美激情狠狠14p | 精品国产乱子伦一区二区三区 | 99日韩a及免费视频 日产国产精品日韩精品 | 成视频在线播放免费人成 | 欧美日韩亚洲高清国产 | 国产一区二区三区乱码 | 九九色综 | 天下第一社区在线观看视频 | 老年人一级特黄aa大片 | 亚洲经典| 国内精品自国内精品自线电影 | 99国产情侣在线播放 | 亚洲国产精品ⅴa在线观看 免费vip电影电视剧 | 成人免费无 | 欧美一区二区成人午夜在线观看 | 欧美一级爽快片婬片高清 | 日本三级手机在线播放线观看 | 4399中的精品双人 | 国户一区二区免费视频 | 精品午夜福利1000在线观看 | 国产日韩欧美女同一区二区 | 亚洲一区二区精品 | 国产美女一区二区丝袜美腿 | 亚洲欧美日韩国产综合专区 | 99国产精品无打码在线播放 | 日韩操穴| 中日韩精品一区二区三区 | 人在线播放 | 欧洲女同互添互慰在线观看 | 日韩精品一区二 | 国产91九色在线播放 | 亚洲欧美综合网站 | 国产香线蕉手机在线观看 | 18videosex性欧美黑色 | 韩国精品视频一区二区在线播放 | gogo熟女| 亚洲欧洲日产国码久在线观看 | 国产无遮羞在线观看网站 | 最新日韩午夜一区二区 | 国产一精品一aⅴ一免费 | 在线中文字幕不卡视频 | 国产欧美日韩高清视频在线观看 | 国产精品福利自产拍在线观看 | 亚洲一区二区在线欧洲 | 国产伦子伦精品 | 国产综合永久精品日韩 | 丝袜制服诱惑第一页一区 | 玩弄老太婆的屁股眼 | 五月婷婷丁香色 | 日韩在线播放中文字幕 | 日本乱码乱码免费高清视频 | 爱丫爱丫影院官网 | 欧美日韩精品专区在线观看 | 欧美日韩视频在线 | 精品女同一区二区三区免费战 | 国产稀缺另类刺激对白 | 中文字幕精品一区二区精品 | 欧美综合精品一区二区三 | 精品高清三级乱伦 | 男女日b视频 | 日本成片免费观看视频在线 | 国产免费人成视频网站在线看 | 女同恋性一区二区三区四区 | 精品尹人在线观看 | 日本亚洲欧美风情 | 日韩一级大片国产 | 国产精品乱伦一区二区 | 精品国产网站在线免费观看 | 国产精品成人一区视频网站 | 三级欧美在线观看日本 | 国产亚洲精品午夜福利 | 一区二区三区免费视频 | 国产一区高清在线欧美 | 高清一区二区亚洲欧美日韩 | 欧洲美熟女乱又伦 | 午夜视频免费观看 | 亚洲精品福利在线观看 | 日本特大a级猛片在线观看 丝袜线观看 | 48国产 | 欧美三级网址 | 国产喷潮在线播放一 | 三年片在线 | 亚洲熟女乱综合一区二区 | 亚洲国产精品综合色在线 | 草逼视频网站 | 免费人成在线观看网站体验站 | 国产微拍精品一区二区 | 日本高清www在线观看视频 | 日韩v欧美v中文在线 | 91久热| 日本高清视频网址 | 精品视自拍视频在线观看 | 亚洲日韩视 | 欧洲精品 | 亚洲一区免 | 国产日韩在线观看一区福利 | 精品国自产拍网站 | 美国十次啦 | 草的舒服点网站在线观看 | 最近免费中文字幕大全 | 在线看片 | 国产精品特级露脸视频 | 欧美日韩性生活视频 | 日韩一区精品在线观看 | 欧美激情全球免费视频 | 亚洲欧美综合精品成 | 厨房里征服美艳老师 | 亚洲欧美国产另类首页 | 91短视频免费下载 | 欧美在线视频一区 | 南瓜影视| 奇米精品视频一区二区三区 | 免费国产午夜在线观看 | 国产一区二区三区不卡在线看 | 免费观看又黄又硬又爽的视频 | heyzo高清在线播放 | 人成黄页在线观看国产 | 精品欧美一区二区vr | αv天堂在线观看免费αⅴ 亚洲欧美综合人成在线 | 国产极品在线免播放器 | 亚洲精品自拍视频在线免费 | 热映电影票房 | 97桃色| 最新在线精品国自产拍网站 | 精品国产免费一区二区三区四区 | a男人的天堂 | 一区二区日韩 | 欧美疯狂xxxxbbbb喷潮 | 日韩精品一区二区三区影视 | 欧美三级在线观看国产 | 97porm国内自拍视频 | 中文字字幕在线精品乱码高清 | 深爱激情 | 国产91福利精品免费观看 | 丁香美女社区 | 最新欧美日韩 | 国产六月婷婷爱在线观看 | 免费一级特黄特色大片 | 国产又爽又黄又爽又刺激 | 成人精品一 | 视频一区二区三区在线 | 日韩一区二区三区四区电影 | 自拍亚洲欧美国产 | 一二三产区区 | 国产高清视频在线播放 | 精品一卡 | 国产aⅴ一区二区 | 亚洲国产日韩在线人高清 | 最新电影电视剧在线观看 | 国产自在自线精品午夜视频 | 亚洲欧美另类激情综合区蜜芽 | 视频播放 | 日韩欧洲亚洲美三区中文幕 | 国产日韩精品欧 | 日韩极品成年人在线观看高清 | 成人动漫在线观看 | 97韩剧tv网| 重口视频二区在线观看 | 成人国产一区二区三区精品 | 午夜私人成年影院在线观看 | 亚洲综合另类小说色区一 | 国产第三页在线观看 | 国产欧美日韩综合精品区一区二区 | 男女多p混| 国产精品第一 | 欧美精品免费人 | 亚洲一区不卡视频 | 国产午夜不卡一区 | 国产精品免费观看网址入口 | 99sss高清在线视频网 | 大色综合色综合网站 | 成全视频高清免费观看电视剧 | 国产亚洲久一区二区 | 国产精品揄拍100视频最近 | 亚洲国产精品va在线播放 | 51精产国品一二三产区区 | 日本二区在线中文字幕 | 成人羞羞视频在线观看网站 | 成人午夜在线不卡 | 欧美精品视频在线观看 | 国产后入在线观 | 69無人區亂碼一二三四區別 | 高清影院| 日韩在线观看自拍网址视频免费 | 欧美日本在线播放 | 国产白白白在线永久播放 | 日韩精品一区二区 | 韩国日本免费高清观看 | 污污免费网站 | 日本一区二区三区免费播放视频站 | 日韩精品影片 | 精品在线观看亚洲中文 | aⅴ日本亚洲欧洲免费 | 国产第一页屁屁影院 | 毕业后来 | 全黄裸片一29分钟免费真人版 | 韩国日本三级在线播放 | 国产欧美日韩视频在线观看一区 | 在线观看的网站黄2025 | 国产后入在线观 | 亚洲精品有码在线观看 | 国产91精品在线播放 | 欧美午夜理伦三 | 午夜性刺激在线观看 | 成人免费精品视频 | 国产99精品视频一区二区三区 | 亚洲日韩一区二区一 | 麻花传剧原创mv在线观看 | 精品国产免费人成电影在线观 | 日本日本乱码伦视频在线 | 一区二区三区在线 | 精品一区二区三区视频日产 | 欧美激情视频一区二区 | 五月天亚洲婷婷综合 | 福利第二页精品推荐在线观看 | 日韩欧美在线观看视频 | 国产在线一卡2卡三卡4卡免费 | 日本一区视频在线播放 | 欧美日韩精品码免费专 | 亚洲欧美另类精 | 日韩欧美手机在线视频 | 欧美中日韩免费观 | 绯色一区二区 | 日本一区二区三这在线视频 | 最新中文字幕在线观看免费不卡 | 免费观看国产视频 | 性一交一乱一伦一 | 精品91自产拍在线观看一区 | 丝袜视频国产手机在线 | 一级一黄免费视频在线看 | 国产欧美日 | 国产肥熟老| 国产精品亚洲欧美在线观看 | 最近伦中文字 | 国产精品专区第1页 | 亚洲一级影院 | 欧美乱妇激情在线播 | 大又硬又粗又爽 | 日本福利片国 | 国产二代与美女酒店在线播放 | 成人欧美日韩高清不卡 | 国产盗摄一区二 | 女人张开 | 日韩一区精品视频在线看 | 日韩欧美亚洲一区二区三区四 | 日韩欧美综合在线另类 | 欧美三级成版人版在线观看 | 国产高清日韩精品欧美激情 | 色撸撸在线视频 | 国产日韩精品aⅴ | 亚洲国产精品成人天堂 | 欧美第一页网站最新 | 日韩欧美精品图片在线 | 国产夫妻性生活视频 | 亚洲国产日韩欧美综合a | 日本福利 | 国产日韩欧美色片 | 欧美中文字幕第一页 | 两个人的免费完整版中文字幕 | 欧美日韩国产偷拍 | 亚洲一区在线视频在线观看 | 高清在线?视频大全 | 99这里只有免费费精品 | 91看片婬黄大片 | 蜜桃精品一区二区三区在线观看 | 日本特黄特黄一级中国 | 国产欧美va | a亚洲电影在线观看 | 国产精品毛毛在线播放 | 九九热在线视频观看这里只有精品 | 丁香花在线视频观看免费 | 网址视频在线成人亚洲 | 国产欧美va天堂在线电 | 成年人在线观看视频网站 | 91九色五十路亚洲伊人网青青草 | 亚洲一区二区在线免费观看 | 国产高清成免费视频 | 话务耳麦 | 亚洲第一综合天堂另类专 | 国产强奷在线播放免费不卡 | 精品国产爽香蕉在线观看 | 任你躁在线精品免费视频 | 欧美精品金8天国系列 | 第一影院 | 国产精品成人亚发布 | 三级视频在线播放 | 韩国日本免费不 | 激情刮伦小说目录 | 精品人成在线电影 | 成全动漫高清电影好看的电视剧 | 精品日韩四区五区六 | 日本肥老妇色xxxxx日本老妇 | 97碰碰碰视频在线观看 | 日韩免费在线观 | 揄揄撸一区 | 日韩精品一区二区三区中文字幕 | 精品亚洲a∨在线播放不卡 国产经典三级在线播放 | 国产精品九九视频 | 亚洲欧美日韩在线一区二区三区 | 亚洲美精品二区性爱 | 嫩videossexo另类| 欧美一区日 | 被同桌扒开腿用震蛋器折磨 | 欧美色综合精品视频在线观看 | 看片免费人成视频 | 国产美女一级做视频爱 | 国产精品天干 | 中文字幕亚洲欧美在线不卡 | 麻花传媒在线mv免费观看视频 | 国产精品自在在线午夜区app | 亚洲一区二区三区下卡精品 | 蜜桃臀aⅴ精品一 | 国产自愉自愉免费精品 | 黑人巨茎| 日本最新高清不卡一区二区 | 精品日韩欧美 | 99视频30精品视频在线观看 | 久国产精品视频 | 香港三级台湾三级在线播放 | 日本一区二区在线免费观看 | 亚洲一区二区经典在线播放 | 1卡2卡三卡4卡国产 欧美人和 | 国产欧美日韩视频在线 | 精品国产sm捆绑最大网免费站 | 起碰视频在线 | 日韩欧美中文字幕一区 | 欧美国产极品在线播放 | 搡老女人露脸 | 亚洲男人第一αv网站 | 不卡在线播放国产 | 国产欧美性爱 | 亚洲一区二区三区下卡精品 | 成人欧美亚洲精品 | 欧美午夜视频一区 | 免费国产网站1区2区3区 | 欧美性精品日韩在线 | 漂亮大学生韩国三级播放国产 | 777国产偷窥盗摄精品品在线 | 欧美疯狂xxxxbbbb喷潮 | 办公室玩 | 大胆gogo高清在线观看 | 日本韩国欧美三级在线 | 日国产一区三区三区在线观看 | 绿巨人污视频 | 男人狂躁进女人免费视频公交 | 国产一级a毛一级a看免费视 | 欧美一区二区三区三级在线 | 蜜桃传媒视频 | 日韩一二三区 | 国产97精品乱码在线观看 | 老少配老妇老熟女中文普通话 | 欧美mv| 欧美日韩在线亚洲国产人 | 国产日韩污视频在线观看 | 欧美专区日韩高清 | 国产大片黄在线观看 | 日韩最新国产精品网站 | 国产精品自拍亚洲 | 国产99日韩精品第一页 | 中文字幕影片免费在线观看 | 国产精品一区二区制服 | 日韩一区二区三区精品 | 亚洲高清一区二区三区不卡 | 在线不卡中文字幕 | 日韩欧美中文亚洲高清在线 | 97韩剧tv | 国产精品合集一区二区 | 亚洲精品久荜中文字幕 | 国产亚洲精品aaa大片 | 日亚洲第 | 另类综合视频在线 | 欧美日本国产 | 国产91爱剪辑直播在线观看 | 麻花影视最| 激情中文小说区图片区 | 成年人永久免费观看视频 | 欧美在线一区视频 | 日韩电影免费观看2025 | 国产精品最新资源在线 | 色综合激情丁香七月色综合 | 日本日本乱码伦视频在线 | 国产色秀视 | 99久在线国内在 | 韩国三级日本三级在线观看 | 国产在线精品成人一区二区 | 欧美日韩国产在线 | 亚洲欧美日韩综合在线 | 性日韩视频在线观看 | 国产suv精品一区二区6 | 国产精品∧v在线观看 | 亚洲欧美一区二区在线 | 极品吹潮视频 | 在线观看中文 | 国产午夜福利在线播放 | 国产午夜一区二区三区影院 | 巨大黑人极品vi | 成人免费观看做爰视频ⅹxx | 日本国产高清在线观看 | 国产日韩视频在线播放 | 欧洲性开放大片免费观看视频 | 国精产品水蜜桃 | 亚洲码欧美码一区二区三区 | 亚州精品一区中文字幕乱码 | 重口sm一区二区三 | www.zmdym | 免费b站看大片真人直播 | 国产国内精品在线观看 | 爽了在线视频 | 国产精品一区二区高清在线 | 国产免费99热精品 | 国产日韩欧美在线观看播放 | 9cao在线观看 | 日本巨乳一区二区不卡 | 久热这里只有精品99在线观看 | 天天影视人人综合日韩 | 91导航在线国产无弹窗 | 欧美日韩国产一区二区三区不卡 | 国产又爽又色又刺激视频 | 日本特黄特色免费亚洲日本 | 亚洲精品高清国产 | 国产精品日本一区二区在线播 | 黑人巨大精品欧美一区二区 | 日本亚洲午夜电影 | 大片免费视频观看 | 国产精品网站永久免费99 | 日本爽p大片免费观看 | 中文天天综合7799精品 | 97高清国语自产拍 | 韩国午夜理 | 一级女性全黄生活片免费 | 口国产自| 国产在线精品一区二区不卡 | 亚洲欧美洲成人一区二区 | 日本a级网站在线观看 | 国产乱子伦 | 国产精品欧美亚洲区 | 国产性爱在线观看欧美亚洲黄 | 日韩制服丝袜片中文字幕 | 短视频在线下载免费 | 91sao国产在线观看 | 亚洲中国久 | 午夜国产精品理论 | 国产激情视频在线观看 | 精品国自产拍网站 | 欧美在线免费观看 | 欧美洲精 | 国产色系视频在线观看免费 | 日韩在线高清视频 | a亚洲欧美中文日韩在线v日本 | 国产毛a | 欧美日韩国产无线码无毒 | 国产日韩欧美视频网址 | 菊花综合网亚洲中文字幕 | 日韩欧美尤物视频 | 好看的电视剧全集免费在线观看 | 国产精品欧美视频另类专区 | 欧美成a高清在线观看www | 国产精品女丝袜白丝袜美腿 | 区在线播放 | 国产日韩欧美乱码 | 51国偷自产一区二区三区 | 国产精品边叫边喷水 | 97韩剧| 日本黄页网址在线看免费不卡 | 欧洲+亚洲+日本+国产 | 欧美日韩综合精品网站视频 | 国产a级三级三级三级视频 日本高清在线播放 | 国产在线精品国偷产拍 | 成全在线观看免费观看高清 | 亚洲欧美国产制服另类 | 国产精品性爱不卡在线观看 | 欧美日韩在线播放 | 日本喷奶水中文字幕视频 | 99www免费人成精品 | 欧洲乱码伦视频免费国产 | 免费人成在线观看网站免费观看 | 国产帅男男gay网站视频 | 成人永久免费视频网站在线观看 | 欧美成熟电影全集 | 亚洲性日韩精品一区二区 | 免费看美女脱了全身衣服直播 | 亚洲第一综 | 国内精品尹人香蕉综合在线观看 | 大地资源中文第二页高清 | 337p亚洲精品 | 欧美三级不 | 成人国产精品中文字幕 | 国产一二三区在线播放 | 欧美日韩中文字幕在线一区二区 | 国产欧美日韩精品免费看 | 日韩中文免费视频 | 精品国产第 | 军训完被教官灌满精子男男 | 天美麻花星空大全在线观看免费 | 国产日本欧美亚洲精品视 | 亚洲欧美日韩综合aⅴ | 新午夜电影网 | 国产精品v欧美性爱v | 字幕一区| 卡一卡二卡三卡四 | 国产激动情五月天 | 国产精品欧美亚洲韩国日本不卡 | 日韩传电影 | 亚洲日韩高清在线亚洲专区 | 国产精品黑色蕾丝丁字裤 | 国产黑色丝 | 亚洲伊人精品国产91综合 | 亚洲欧美日韩在线综合网 | 99re热有精品视频国产 | 国产一级爱c片免费播放 | 欧美性爱视频手机在线免费播放 | 果冻传媒网站入口 | 91自拍偷拍走光 | 在线视频下载 | 99re这里 | 日韩亚洲精品不卡在线 | 国产视讯手机在线播放 | 无遮无挡三级动态图 | 一区二区三区在线观看 | ww成在线人免1688费欧美 | 99精品视频在线观看免费播放 | 久热这里只有精品99在线观看 | 国产九九 | 韩国理伦电影三级 | 91免费观看 | 女人下边紧了好还是松点好 | 亚洲欧美人高清精品a∨ | 国内国外精品一区二区 | 国产精品中文字幕组 | 嫖妓国产在线观看 | 精品国产日韩一区三区 | 精品人伦一区二区三区蜜桃 | 国产欧美日韩精品综合第一区 | 国产欧美日产激情视频 | 日本三区视频 | 国产一级免费在线观看 | 欧美自拍另类欧美综合图区 | 久热爱精品视频线路一 | 精品国产亚洲国 | a级国产乱理论片在线观看看 | 91天堂网| 欧美亚洲人成网 | 国产美女视频免费 | 国产视频中文字幕手机版 | 日韩欧美视频 | 国产乱xxⅹxx国语对白 | 91九色老熟女 | 国产伦精品一区二区 | 精品女同一区二区三区免费战 | 亚洲欧美日韩另类国产第一 | 日韩精品专 | 91福利影院还会玩转热点 | 日韩精品午夜视频一区二区三区 | 欧美日韩一道免费中文字幕新视频 | 国内国产精品天干天干 | 国语精品 | 亚洲v天堂v影 | 三级视频在线播放 | 日本日本乱码伦视频网站 | 免费观看性欧美一级 | 国产高清在线观看视频 | 97在线视频免费观看视频免费 | 欧美福利专区 | 按摩师舌头进去添的我好舒服 | 国产男女乱婬真视频免 | 精品熟女乱伦一区二区三 | 天天做天天 | 日韩精品一区二区三区高清 | 不卡欧美| 欧美亚洲精品第一 | 成人国产欧美日韩在 | 轻点灬大ji巴大粗长了视频 | 国产69成人午夜福利在线 | 成人奭片免费观看 | 大地资源高清日本 | 男女配种超爽 | 在线精品亚洲欧洲第一页 | 欧美日韩在线不卡 | 九九亚洲精品唯美女同互添 | 日韩亚洲国 | 巨熟乳波霸若妻在线播放 | 国产a∨精品一区二区三区不卡 | 国产亚洲男人的天堂在线观看 | 欧美日韩伦精品一区二区三区 | 日本一区二区三区免费高清 | 视频在线成人 | 日韩在线视频播放一区二区三区 | 成人国产精品一区二区在线观看 | 国产在线一区二区三区不卡在线 | 欧美日韩免费播放一区二区 | 国内精品伊 | 国产隔着超薄丝袜进入 | 奶水国产在线播放 | 免费播放国产性色生活片 | 91高清影院| 成人免费大片黄在线播放 | 国产精品牛牛 | 国产日韩欧美中文 | 欧美多人顶级午夜寂寞影院 | 欧美日韩欧| 精品午夜国产福 | 国产91丝袜在线播放网站 | 国产亚洲欧美另类一区 | 成人精品久 | 一区二区三区四区在线观看视频 | 国产一区二区三区在线 | 最新好看的影视大全在线观看 | 亚洲日本中文字幕乱码在线电影 | 一区二区三区四区 | 亚洲亚洲人成网站77777 | 91c仔国产手机在线 国产在线高清精品1314 | 偷拍欧美亚洲第二页 | 欧美亚洲日韩一区二区三区中文 | 国产美女视频免费 | 亚洲欧美日韩另类国产第一 | 亚洲精品日韩中文字 | 国产高清对白在线观看免费91 | 亚洲v日韩天堂片 | 国产日韩一区二区三区在线观看 | 欧美精品一二三区 | 日韩在线播放中文字幕 | 99re热这里只 | 91.cn国产大片| 91蝌蚪视 | a在线免费观 | 国产自在 | 国产欧美一二三区 | 精品视频一区二区三三区四区 | 欧美怡红院免费全视频 | 免费国产综合色在线精品 | 欧洲精品欧美精品 | 国语自产| 懂色中文一区二区三区在线视频 | 国产精品自产拍在线观看 | 国自产拍偷拍福利精品免费 | 亚洲高清不卡在线观看 | 天天视频美女靠逼 | 三级a在线视频观看永久 | 国产日本欧美一区二区第一页 | 国产精品视频一区二区噜噜 | 欧美成年人视频在线观看免费 | 欧美日韩成人午夜电影 | 成年人一 | 视频一区二 | 国产亚洲欧美日韩在线看片 | 日本特大a级猛片在线观看 丝袜线观看 | 香蕉伊蕉伊中文在线视频 | 亚洲精品宾馆在线精品酒店 | 国产一区二区三区视频在线观看 | 国产高清不卡在线 | 日韩欧美国产综合在线播放 | a免费国产一级特黄aa大 | 亚洲精品偷拍区 | 日韩成人精品在线 | 国产精品福利社 | 最新电视剧在线观看 | 88影视网免费的电视剧大全 | 国产自产精 | 亚洲成ⅴ人片乱码色午夜 | 99r在线精品视频在线播放 | 欧亚精品一区三区免费 | 欧美亚洲激情视频在线观看 | 日韩在线 | 精品一区二区三区的国产在线观 | 成人涩涩涩视频在线观看 | 欧美电影一区二区三区 | 日韩18| 欧亚乱色熟一区二区三四区 | 国产大片免费天天看 | 一区二区三区在线 | 717影院| 国语自产一区第二页欧美 | 国产亚洲欧美第一页在线观看 | 午夜理论片y | 精品一线二线三线在线 | 在线免费视频一区二区 | 99久re热视频这里只 | 国产男生夜间福利免费网站 | 欧美中文字幕无线码视频 | 99精品欧美一区蜜桃在线 | 国产亚洲精品午夜福利巨大 | 国产综合视频一区二区三区 | 日韩欧美中文字幕在线观看一区 | 欧美一厂区二厂区三厂区 | 国产男女高清视频m免费 | 国产福利在线观看 | 亚洲高清不卡在线观看 | 免费国产网站1区2区3区 | 免费人成在线观看 | 天天躁日日躁狠狠很躁 | 69一区二三区好的精华液 | 在线观看免费人成视频国产 | 夜夜国产亚洲视频香蕉 | 国产亚洲欧美人成在线 | 欧美日韩亚洲一区二区三区 | 国产欧美网站 | 国产美女在线精品免费观看 | 欧美一级操穴 | 亚洲а∨精品天堂在线 | 欧美喷潮 | 亚洲中文字幕高清有码在线 | 欧美成aⅴ人高清 | 午夜成人精 | 欧美三区日韩一 | 91啪国自产在线高清观看 | a在线看 | 国产啪精品视 | 中文乱码字幕在线观看播放 | 午夜三级在线观看 | 国产乱妇乱子在 | 国产一区二区三区不卡在线 | 成人永久免费永久在 | 欧美校园激情清纯另类 | 欧美亚洲精品第一 | 中文天堂网 | 人成a大片在线观看 | 日韩欧美不卡在线高清视频 | 亚洲精品区午夜亚洲精品区 | 美女足脚交一区二区三区 | 一二三区理论片 | 蜜臀91精品国产高清在线观看 | 视频一区二区三区免费观看 | 国产精品电影一区二区 | 91香蕉破解版 | 欧洲精品亚洲精品日韩专区 | 午夜成人亚洲理伦片在线观看 | 国产最新电影在线观 | 精品一区二区三区的国产在线观 | 国内女人喷潮视频免费观看 | 国产婷婷精品任我爽欧美 | 好看的韩剧在线 | 九九热视频 | 欧美日韩综合在线视频免费看 | 国产美女嘘嘘嘘嘘嘘视频 | 国产一级在线观看影片 | 中文日产幕无线码系列 | 在线观看亚洲一区二区三区 | 久热免费视频在线观看 | 国产妇女视频免费 | 精品午夜一区二区福利 | 日本一视频一区视频二区 | 最新日韩中文字幕一区 | 欧美高清在线 |