国产精品青草久-国产精品情侣愉拍-国产精品区网红主-国产精品区一区二-国产精品热久久-国产精品热热热-国产精品人aⅴ-国产精品人成在线-国产精品人妻人伦-国产精品人人

金喜正规买球

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
黄网站在线观看高清免费 | 日韩在线观看第一页 | 91av视频在线 | 亚洲av片在线观看 | 精品视频一区二区三区在线 | 丰满爆乳bbwbbwbbw | 尤物久久精品极品 | 国产亚洲精品久久久久秋霞 | 午夜福利视频免费看床戏激情 | 性欧美长视频免费观看不卡 | 91极品女神嫩模在线播放 | 日韩激情五码视频中文字幕 | 91黄色片| 妇女精品一二区 | 国产亚洲精品aaa在先 | 成人女人看片免费视频放人 | 99久久99精品免视看动漫 | 黑人大战亚洲女在线播放 | 成人免费视频在线观看 | 日韩av不卡在线观看五月 | 亚洲精品自偷自拍无码忘忧 | 高清无码在线二区亚洲无码精品免费 | 九色91popny蝌蚪 | 无码精品| 亚洲精品欧美精品日韩精品 | uu精品无码视频 | 激情二区三区 | 国产福利91精品在线观看 | 成人免费一级纶理片 | 亚洲午夜福利国产门事件 | 国产丝袜调教视频免费的 | 国产91av视频在线观看 | 国产精品视频一区二区噜噜 | 人妻体内射精 | 成年人性爱视频免费在线观看毛片 | 日韩激情不卡一 | 99久热re在线精品视频 | 日韩精品极品视频在线观看免费 | 黄页免费视频播放在线播放 | 韩国理伦片一区二区三区在线播放 | 丰满少妇高潮惨叫久久久一 | 97伦理手机高清免费在线观看 | 午夜a级毛片免费看 | 福利视频一区二区牛牛 | 国产伦精 | 熟妇高潮精品一区二区三区 | 国产呦在线观看欧美一区 | 十大高清影院软件排行榜 | 欧美欧成人一 | 剧情av原创免费 | 精品免费久久久国产一区 | 国产午夜不卡av高清 | 波多野结衣之欲望金鱼妻nacs | 亚洲精品一区二区在线 | 麻豆国产va免费精品高清在线 | 国产激情视频在线播放 | 91色站 | 精品无码国产自产在线观看水 | 亚洲中文字幕dvd在线 | 亚洲精品自偷自拍无码忘忧 | www.香蕉视频 | 99re视频热这里只有精品 | 国产欧美不卡在线观看视频 | 精品伦精品一区二区三区视 | 国产做爰xxxⅹ性视频国 | 无码av免费精品一区二区三区 | 国产精品午夜国产小视频 | 婷婷久久青草热一 | 福利在线观看 | 亚洲熟妇男女啪 | 国产免费永久视频观看 | 国产成人a码男人的天堂 | 日韩欧美一卡二区 | 人人妻人人澡人人爽欧美一区九九 | 日韩人妻无码精品无码中文字 | 国产精品户外野外 | 婷婷激情久久丁香综合伊人 | 亚洲产国偷v产偷v自拍涩爱 | 日韩人妻精品无码一区二区三区 | 精品九九人人做人人爱 | 国产无遮挡大学生第一次做 | 丰满气质白嫩少妇呻吟高潮 | 国产免费无码av片在线观看不卡 | 内射无码视频午夜精品一区 | 国产精品一区高清在线观看 | 亚洲午夜福利国产门事件 | 婷婷六月综合缴情在线小蛇 | 人人玩人人添人人澡免费 | 国产一级特黄aaa大片在线观 | 蜜臀色欲av在线播放国产日韩 | av不卡激情在 | 成人无码影片视频在线 | 午夜男女视频一区二区 | 国产精品国内自产 | 精品蜜臀久久久久99网站 | 亚洲av无码国产精品色午夜软件 | 国产成人精品午夜 | av无码一区二区三区性色 | 国产成人无码a区 | 精品一区二区三区在线观看 | 国产国模私拍在线观看 | 一区二区三区av | 婷婷色香五月综合激激情 | 成人毛片无码一区二区三区 | 午夜精品久久久久久仙踪林 | 久久福利青草狠狠午夜 | 日本熟妇色一本在线观看 | 另类专区精品 | 97理论片影院网 | 亚洲v天堂v手机在线观看 | 国产精品成人第一区二区三区 | 中文字幕日韩欧美一区二区 | 激情五月丁香婷婷 | 久久www| 丰满少妇被猛烈进入高清播放 | 97久久天天综合色天天综合色h | 在线一区国产 | av天堂最新一区二区三区 | 精品影片在线观看的网站 | 色欲av永久无码精品无码 | 国产一区国产二 | 不卡av电影在线 | 国产精品一区 | 午夜视频福利在线观看 | 牛牛精品国产亚洲一区二区三区 | 黄色视频在线 | 亚洲av永久无码精品网站色欲 | 综合精品自拍 | 亚洲av理论在线电影网 | 国产精品国产三级国产转不 | 欧美日韩国产成人综合在线影院 | 亚洲不卡无码www一区二区三区 | 国产办公室秘书无码精品 | 精品视频一区 | 国产高清视频在线观 | 亚洲成a∧人片在线观看无码 | 99re在线视频精品新地址 | 无码国内精品久久人妻 | 亚洲资源站中文在线丝袜 | 国产三级毛视频在线观看 | 人人狠狠综合久久亚洲 | 久久99九九| 欧美精品一区二区三区久久久精品 | 亚洲av本道一区二区三区 | 在线人成免费视频69国产 | 丝袜无码一区二区三区 | 精品无码一区 | 欧美牲交a欧美 | 亚洲成人影院 | 在线a亚洲v天堂网2025影 | 午夜精品久久久内射近拍高清 | 在线观看国产 | 国产激情久久久久影院 | 91精品人妻一区二区三区蜜臀 | 精品av国产一区二区三区四区 | 亚洲日韩国产二区无码 | 国产91av视频在线观看 | 99热国产这里只有精品6 | 91免费国产在线观看 | 成人性生交大片免费看国外 | 91精品全国免费观看 | 少妇私密会所按摩到高潮呻吟 | 国产口爆吞精在线播放网站 | 欧美三级成人网 | 91麻豆精品国产自产在线观看一区 | 精品aⅴ免费 | 99精品电影一区二区免费看 | 91信用卡app下载安装 | 97超碰国产一区二区三区 | 国精品无码一 | 亚洲国产av无码精品果冻传媒 | 日日摸夜夜摸狠狠摸婷婷 | 亚洲成a人v欧美综合天堂 | 91精品成人国产app下载 | 欧美又粗又大又爽又色a片 欧美又粗又大又爽又色片 欧美又大 | 午夜视频网址 | 国产成人无码精品久久久影院 | 午夜性影院爽爽爽爽爽爽高清 | 色偷偷91综合久 | 国产综合区 | 狠狠色伊人亚洲 | 国产不卡在 | 麻豆av无码在线观看 | 国产精品午夜 | 午夜成人精品福利网站在线观看 | 蜜臀av性久久久久蜜臀a | 国产精品亚洲欧美一区麻豆 | 日本午夜免费理论片 | md豆传媒一二三区入口 | 午夜亚洲福利在线老司机 | 亚洲超碰97无码中文字幕 | 高清无码电影免费专区 | 久草免费福利视频 | 午夜成人鲁丝片午夜精品 | 精品国产成av人片不卡无码 | 高清一区二区三区日本 | 国产高潮抽出娇喘喷水视频在线 | 日本在线观看精品 | 国产丰满熟女一区二区 | 国产精品三级在线观看无码 | 无码不卡在线观看 | 国产午夜福利在线观看红一片 | 国产欧美一区二区三区午夜精品 | 国产原创91 | 国产精品丝袜视频 | 99re在线播放视频国产 | 日本高清18xxxx | 国产成人精品免费播放视频 | 亚洲国产性爱第一页 | 无码精品国产一区二区 | 国产成人精品a∨一区二区 国产成人精品aa毛片 | 国产综合精品91久久久 | 无码国产激情在线观看 | 国产一区二区久久精品 | 国产超碰人人模人人爽人人添 | 亚洲无码免费在 | 国产精品亚洲一区二区三区 | 国产一区二区三区专区精品 | 91精品国产综合久久精品色欲 | 亚洲视频在线一区二区三区 | 国产成人精欧 | 欧美少妇国产影视 | av网址导航精品 | 国产v亚洲v天堂无码 | 国产成年无码v片在线 | 在线天堂中文在线资源网 | 亚洲欧美日韩一区在线观看 | 亚洲欧美另类日韩一区 | 九九精品99久久久香蕉 | 成人免费无码大片a | 成人欧美日韩一区二区三区 | 亚洲国产精品露脸 | 国产一区二区三区日韩欧美 | 欧美一级视频在 | 日本xxxwww在线观看 | 99国产在线精品视频 | 国产精品视频一区二区噜噜 | 1区2区3区高清视频 1区2区3区内容究竟如何?无需下载 | 成人精品动漫一区二区三区 | 91精品综合 | 无码国产69精品 | 国产精品久线在线观看 | 国产一区二区三区在线 | 国产精品一国产av麻豆 | 欧美久久综合九色 | 操人网站 | 无码国产精品视频一区二区三区 | 综合色区亚洲熟妇10p | 日韩av在线五月天 | 91精品国产高清91 | 综合激情五月婷婷 | 日韩av一级毛片无码 | 成人麻豆亚洲综合无码精品产 | 欧美午夜不卡在线观看 | 国产熟人av一二三区 | 天天躁狠狠躁狠狠躁夜夜躁 | 国产精品高清全国免费观看 | 亚洲国产综合久久99 | 欧美日韩亚洲综合一 | 午夜视频在线会员国产 | 亚洲一区 | 91精品国产免费青青碰在线观看 | 亚洲风情亚aⅴ在线发布 | 亚洲av无码专区电影在线观看 | 国产成a人亚洲精v品 | 国产精品白浆 | 精品成人日韩欧美软件 | 99久久精品成人一区二区三区 | 精品久久老牛影视 | 99999久久久久久亚洲 | 欧美人与动牲交 | 国产国拍亚洲 | 无码激情做a爰片毛片av片 | 中文字幕爆乳区 | 国产樱花草青青草 | 国产精品2025不卡在线观看 | 精品国产一区二区av果冻传媒 | 99日本精品永久免费久久 | 韩国三级理论无码电影在线观看 | 国产精品99久久久久久一二区 | 中文字幕大香视频蕉 | 国产sm系列在线观看 | 97精品| 欧美视频第二页 | 日本中文字幕www | 日本gv在线一区二区三区 | 久久艹鲁鲁射 | 色视频在线观看免费视频 | 亚洲精品v天堂 | 欧美色图亚洲自拍 | 无码av中文一区二区三区am | 日韩精品无 | uu精品无码视频 | 色宅男看片午夜大 | 中文字幕无码日韩欧免费软件 | 91啪在线观看国产在线 | 国产精品偷伦视频免费观看 | 中文字幕一区二区无码 | 中文字幕亚洲乱码熟女一区二区 | 福利姬一区二区三区在线观看 | 日韩一区二区三区不卡免费毛片av | 成年女人毛片免费视频播放器 | 国产成人无码av片在线观看 | 成人免费毛片内射美女app | 9lporm自拍视 | 亚洲精品综合色 | 国产免费又黄又爽又色毛 | 国产超碰人人做人人爽www | 欧美极品少妇 | 91香蕉国产 | 精品99久久久久久999 | 人妻av区波多野结衣 | 国产成人自拍精品视频 | 无码人妻精品一区二区三区9厂 | 亚洲av成人一区二区三区在线观看 | 国产人成无码视频在 | 国产香蕉在线99 | 国产电影在线观看 | 99九九精品国产高清自在线 | 97青草香蕉依人在线视频 | 亚洲午夜成人精品无码91 | 亚洲一卡一卡二 | 欧美日韩国产中文区页 | 国产成年女人毛片80s网站 | 中文字幕人妻系列乱码 | 国产女精品视 | 尤物精品无码视频专区 | 国产精品午夜一区二区 | 精品精品国产自在97香蕉 | 国产av天堂 | 亚洲精品天堂在线 | 国产精品偷伦视频免费观看 | 婷婷色中文在线观看 | 自拍偷拍第1页 | 国产成人亚洲综合色 | 日韩午夜精 | 中文午夜人妻无码看片 | h动漫精品网站网 | 最新国产av无码专区亚洲 | 亚洲αv久久久噜噜噜噜噜 亚洲а∨精品天堂在线 | 无码精品福利一区二区三区 | 98精品国产高清在线看入口安 | 国产亚洲综合精品一区二区三区 | 国产欧美一区二区 | 日本一区二区三区四区在线观看 | 91亚洲自偷手机 | 91久久精品都在这 | 91精产国品一二三产区公司 | 无码人妻精品中文字幕免费东京热 | 最新剧情片大全免费在线观看 | 极品色在线精品视频 | 日韩成人毛片高清视频免费看 | 日本高清不卡中文字幕网 | 无码人妻av一| 色综合久久精品亚洲国产 | 亚洲午夜在线视频观看 | 中文字幕aⅴ人妻一区二区 中文字幕aav | 免费一区 | 亚洲国产精品一区二区第四页 | 人妖欧美一区二区三区四区 | 亚洲无码大片在线观看 | 成人免费精品网站在线观看影片 | 日本无乱码高清在线观看 | 亚洲av无码乱 | 在线精品亚洲一区二区动态图 | 国内精品久久久久 | 日日噜噜夜夜爽爽狠 | 91在线永久入口 | 午夜神马 | 毛片无码全部免费 | 91免费网址 | 精品无码一区二区三区爱欲 | 国产精品露脸国产对白 | 成人区人妻精品一区二区不卡视频 | 一区二区欧美日韩 | 中文字幕在线亚洲精品 | 精品欧洲av无码一区二区三区 | 亚洲日韩高清在线亚洲专区2025 | 亚洲国产综合精品一区 | 亚洲无码人成在线 | 天天躁日日躁狠狠躁av中文 | 亚洲成在人线av壁咚影院 | 国产精品臀控福利在线观看 | 在线观看无码 | 久久成人| 91久久综合亚洲鲁鲁五月天 | 超碰国产精品最新 | 少妇av| 国产99视频精品免费视看6 | 成人午夜福利短视频在线观 | 精品午夜福利1000在线观看 | 中文字幕av一区二区三区人妻少妇 | 国产美女亚洲精品久久久毛片 | 国产精品一卡二卡三卡 | 国产日韩三级综 | 99久re热视频这里只有精品6 | 亚洲av无码一区二区乱码 | 国产激情一区二区三区成人 | 午夜久久福利 | 精品一区二区高清在线观看 | 97碰公| 亚洲精品99999中文字幕 | 无码人妻不卡 | 少妇的渴望hd高清在线播放 | 精品思思久久99热网 | 欧美日韩精品一区二区三区视频在线 | h无码精品动漫在线观看 | 亚洲精品成人 | 色欲色香天天天综合网www | www.国产欧美 | 国产av永久福利资源网站 | 亚洲av无码精品无码麻豆 | 午夜性a一级毛片免费一级黄色毛片 | 无码人妻一区二区三区精品视频 | 亚洲日本一区二区 | 国产精品理论片在线播放 | 91下载站 | 午夜福利小黄片 | 国产高清在线精品二区一 | 97人人模人人爽人人 | 国语对白刺激精品视频 | 99久久综合狠狠综合久久aⅴ | 亚洲美女高潮视频免费 | 无码专区视频免费播放 | 国产精品男女 | 国产免费又色又爽又黄软件 | 黄页在线观看av网站无广告 | 国产又大又黄又粗又爽 | 日本av一区二区三区视频 | 高跟黑色丝袜国产91在线 | 99精品国产高清一区二区三区香蕉 | 亚洲国产成人高清片在线观看 | av午夜久久蜜 | 天天日天天干天天操 | 在线播放真实国产乱子伦 | 97人妻碰碰碰久久久久禁片 | 亚洲日韩在线观看不卡 | 国产成a人亚洲精v品无码樱花 | 国产成人精品.一二区 | 国产传媒在线观看 | 亚洲熟妇自偷自拍另欧美 | 自拍国内 | 精品久久久无码人妻中文字幕 | 国精产品一区二区三区公司 | 国产亚洲精品综合在线 | 精品一区二区国语对白 | 久久99精品久久久久久秒播 | 日本精品成人一区二区三区视频 | 精品久久久久久久九九九精品 | 日韩av成人一区二区三区 | 欧美高清在线视须在线99精品 | 91在线无码精品秘国产色多多 | 亚洲欧美一区二区三区色戒 | 91精品国产综合久久久久 | 欧美日韩一区二区久久婷婷 | 国产成人a∨影院 | 久久av无码aⅴ高潮av喷吹 | 无码av免费毛片一区二区 | 国产在线播放永久免费 | 天天爱天天干天天操 | 伊人婷婷色香五月 | 国产精品分类视频分类一区 | 国产丝袜不卡一区二区 | 亚洲无码高潮喷吹在线 | 亚洲国产综合精品中文字幕 | av的中文解释和发音 | 中文字幕无码 | 精品无码国产自产拍在线观 | 国产成人亚洲精品电影在线观看 | 精品成人免费国产片 | 国产亚洲综合91精品 | 91在线播放国产日本欧美 | 少妇的渴望hd高清在线播放 | 亚洲精品亚洲人成在线 | 日本高清一区二区在线 | 人妻av无码中文专区久久 | 亚洲无码免费观看黄色 | 神马午夜av午夜一二区 | 国产精品国产三级国产av中文 | 亚洲一区二区女搞男 | 国产91王老板在线看 | 午夜成人亚洲理论片在线观看 | 无码成年人电影免费看 | 麻豆三级 | 亚洲一区无码精品色 | 加勒比在线东京热在线中文字幕 | 91亚洲精品国产自在现线 | 日韩欧美一本书道一区二区 | 国产精品成熟 | 国产微拍精品 | 国产精品人妻 | 欧美午夜精品久久久久免费 | 无遮挡很爽很污很黄的网站 | 亚洲中文字幕码在线电影 | 婷婷久久综合九色综合88 | 亚洲中文字幕综合日韩 | 波多野结衣办公室双飞 | 亚洲另类国产精品无码 | 久久高清国产视频 | 成年片免费观看网站免费观看 | 日日做夜夜爽夜夜爽 | 91亚洲免费 | 91啪啪啪视频国产 | 国产精品99久久久久人中文网介绍 | 精品无人区乱码一区二区三区手机 | 国产精品视频一区三区四区 | 国产狼友视频一区 | 国产av高清无亚洲 | 欧美www在线观看 | 色婷婷在 | 亚洲成aⅴ人片在线观看www | 亚洲福利一区福 | 国产国产人在线成免费视频 | 井之原游戏网 | 99精品众筹模特自拍视频 | 无码精品国产一区二区三区免费 | 国产高清色诱视频在线播放 | 国内揄拍国产精品人妻门事件 | 高清无码在线观看 | 国产精品伦理一区二区三区 | 亚洲产精品va在线观看 | 亚洲国产成人片在线观看 | 精品一区二区三区四区在线 | 精品久久老牛影视 | 亚洲日韩一二三区 | 欧美日韩一区二区三区在线观看 | 国产亚洲精品午夜福 | 少妇大叫太大太爽受不了 | 狠狠色成人一区二区三区 | 国产va成无码人在线观看 | 久别的草原电视剧免费观看高清 | 精品亚洲成a人片在线观看 精品亚洲成a人在线观看青青 | 97视频播放器安卓版v1.11 | 亚洲精品无码av中文字幕 | 中日韩一区二区三区 | 日韩欧美精品一区二区三区在线 | 国产日产亚洲精品 | av综合在线综合导航 | 国产一级做a爰片久久毛片99 | 国产综合精品一区三区 | 天堂最新版在线www官网中文地址 | 香蕉视频在线播放91国产免费 | 久久国产av影片 | 日本大片免a费观看视频 | 91精品国产99久久久久久 | 午夜丁香婷婷免费手机在线观 | 91嫩草 | 久久99精品久久久久久无毒不卡 | 黄色网页大全在线免费观看啊啊啊啊 | 无码a级毛片免费视频内谢 无码a级毛片在线观 | 国产午夜精品视频 | 国产高清无码在线播放 | 日韩av在线免费观看 | 91欧美激情一区二区三区成 | 欧美精品九九99久久在免费线 | 在线观看片免费人成视频播放 | 另类视频 | 无码aⅴ精品一区二区三区 无码aⅴ精品一区二区三区浪潮 | 国产麻豆剧传媒精品网站 | 国产一级a大黄片毛片视频 国产一级a毛一级a看免 | 国产成人综合亚洲av小说 | 日韩v午夜视频在线观看 | 午夜视频久久久久一区 | 日韩精品青青精品视频 | 成人免费黄色视频 | 亚洲va成高清在线播放人 | 波多野结衣一区二区三区av免费 | 国产日产久久高清欧美一区 | 成人免费无 | 日本成人性爱免费在线观看网站 | 亚洲av高清在线一区二区三区 | 无码丰满熟妇一区二区 | 日本一区二区三 | 亚洲一二三四五区 | 国产网站永久无码最新的 | 91精品啪在线观看国产线免费 | 日韩aⅴ精品国内在线 | 精品无人区一区二区三区在线 | 国产精品兄妹在线观看麻豆 | 可以看av的网址 | 国产拳头交一 | 国产一卡二卡三卡四卡无 | 99精品热在线高清观看视频 | 成人无码区免费aⅴ片在线观看 | 91色中色成人视频 | 久久www香蕉免费人成 | 日本高清va | 国产又黄又大又粗的视频 | 国精产品一品二品国精品69xx | 日本一二三不卡免费视频 | 国产精品国产三级国产v剧情 | 午夜性色福利在线视频福利 | 成人性生交大片免费看vr | 亚洲av成人中文在线观看 | 二区三区三区不卡 | 国内精品久久久久影院蜜芽 | 国产性生交xxxxx免费五月天色 | 91极品反差婊在线观看 | 国产色视频网站免费 | 欧美成人精品三级网站在线观 | 麻豆毛片 | 国产片精品一区在线播放 | 国产av无码专区亚洲awww | 女自慰喷水免费观看www久久 | 国产高清免费av | 黄色免费网站视频 | 欧美在线不卡一区在 | 精品久久无码中文字幕 | 老司机午夜精品99久久免费 | 久久91精品国产91久久户 | 亚洲精品无码h片在线播放 亚洲精品无码mv在线观看 | 亚洲国产激情电影综合在线观看 | 精品人妻va出轨中文字幕 | 午夜精品男人的天堂 | 99久久精品无码一区二区毛片 | 人妻aⅴ无码一区二区三区 人妻av区波多野结衣 | 国产精品美女一区二区三区 | 日韩精品视频在线第一区 | 亚洲午夜福利院在线观看 | 无码日韩免费视频一区二区二区 | 免费一级毛片在线播放 | 欧美三级真做在线 | 无码国内精品久久人妻麻豆按摩 | 亚洲成a人片在线观看无码 亚洲成a人片在线观看无码3d | 国产成人亚洲日本精品 | 白丝兔女郎m开腿sm调教室 | a级国产乱理伦片在线观 | 日本作爱影片在 | 人妻精品久久无码区 | 日韩欧美亚洲另类 | 无码专区一va亚洲v专区在线 | 在线精品免费视频无码的 | 97精品无码永久在线 | 亚洲精品不卡久久久久久 | 变态另类欧美大码日韩 | 国产色无码专区在线观看 | 亚洲女人的天堂网观看 | 熟妇人妻系列aⅴ无码专区友 | 免费一级毛片在线播放 | 爆乳护士一区二区三区在线播放 | 日韩在线免费看网站 | 国产成人精品免费视频大全 | 亚洲伊人精品国产午夜欧美 | 亚洲阿v天堂在线2025免费 | 午夜三级毛片欧美国 | 色噜噜狠狠色综合网 | 国产在线麻豆影院 | 国产一级淫片视频免费看 | 国产成人精品a视频一区 | 国产清纯白嫩美女正无套播放 | 成人在线免费观看大全 | 国产成人a视频高清在线观看 | 天堂综合一区在线 | 国产亚洲欧美另类精品久久久 | 少妇高潮喷水在线观看 | 日韩av无码久久区二区三区 | 91丝袜精品久久久久久无码人妻 | 成人男人的天堂av | 国产精品嫩草影 | 福利在线一区 | 日韩在线中文高清在线资源 | 爱豆传媒免费全集在线观看反转爽剧 | 91国偷自产一区二区三区蜜臀 | 国产精品乱码高清在线观看 | 欧美日本三级 | 久久成人麻豆午夜电影 | 九九精品久久久久久噜噜 | 中文字幕av在线综合网 | 中文无码肉感爆乳在线观看 | 亚洲国产中文高清在线 | 亚洲av日韩精品一区二区三区 | 丰满人妻跪趴高撅肥臀最 | 国内精品91最新在线观看 | 精品三级久久久久久久 | 久久91精品久久91综合 | 国产精品成人久久综合 | 精品国产亚洲av麻豆映画 | 亚洲国产精品一区二区美利 | 亚洲中文字幕无码中文字 | 91九色中文在线播放 | 国产精品国产三级国产αv 国产精品国产三级国产专i | 在线看片人成免费视频播放 | 成仁影视 | 中文字幕在线有码高清视频 | 91无码福利在线观看 | 无码a√毛片一区二区三区 无码aⅴ精 | 国产亚洲欧美一区 | 国产精彩视频一区二区在线观看 | 国产片免费福利片永久不卡 | 日本最新最全无码不卡免费 | 无码精品人妻一区二区 | 亚洲日本韩国在线 | 精品人妻少妇嫩草av无 | 99久久99久久久精品久久 | 无码日韩av一区二区三区 | 国产日产欧洲无码视频 | 亚洲国产中文综合一区第一页 | 免费无遮拦无码视频在线观看 | 精品亚洲欧美v国产一区二区三区 | 国产精品天天在线午夜更新 | 亚洲成a人片在线观看天堂无码 | 日韩漂亮素人在线视频观看 | 极品人妻少妇 | 在线天堂8高清版在线观看 在线天堂官网 | 国产乱人伦偷精品视频色欲 | 91香蕉国产线在线观看免费网友评价 | 亚洲av成人精品日韩在线播放 | 人人妻碰人人免费 | 日韩精品在线第二页 | 欧美天天综合色影久久精品 | 91精品国产综合久久久蜜臀 | 午夜a级理论片在线播放不 午夜a级理论片在线播放不卡 | 午夜在线欧美曰韩精品影视 | 91精品国产福利尤物 | 91在线无码精品秘国产色多多 | 性中国熟女毛耸耸性视频 | 香蕉视频在线播放91国产免费 | 精品亚洲a∨一区二区三区 精品亚洲aⅴ无码午夜在线观看 | 亚洲一本之道高清在线观看 | 久9视频这里只有精品手机版观看 | 午夜三级影院动漫在线观看 | 国产丝袜在线精品丝袜动漫板 | 97人妻免费视频 | 国产精品夜色 | 亚洲国产中文综合一区第一页 | 国产精品国产免费无码专区不卡 | 91精品国产入口 | 国产精品无遮挡永久视频 | 成人午夜福利免费体验区 | 中文字幕人妻一 | 无码丰满熟妇一区二区 | 天天爽天天干天天操 | 91视频| 老司机精品影院一区二区三区 | 深夜国产一区二区三区在线看 | 免费一区二区 | 成人青草亚洲国产 | 亚洲视频东京热无码二区 | 国产永久福剩在线播放 | 国产精品十一区 | 一级片中 | 欧美日本日韩aⅴ在线视频 欧美日本三级 | 91精品全国免费观看含羞草 | 日韩精品熟女一区二区三区中 | 人人做人人爽 | 日本一区二区在线 | 无码人妻精品一区二区三区蜜桃9 | 私密按摩师在线观看 | 超级碰97直线国产免费公开 | 风间中文字幕亚洲一区 | 国产色欲av一区二区三区 | 91精品国产成人网在线观看 | 国产免费第一区久久 | 成人男女av大片在线观看 | 国产a一级无码毛片一区二区三区 | 免费无码国产v片在线观看 免费无码国产白丝视频 | 国产精品免费久久久久影院 | 99国产精品免费观看 | 国产精品7 | 免费一区二区三区手机av | 精人妻无码一区二 | 国产亚洲精品午夜福 | 国产精品美女久久久久久2025 | 国产二级一片内射视频插放 | 欧美亚洲宗合另类在线观看 | 九九精品一区二区三区 | 国产一级a毛一级a看免费视频 | 午夜免费理论片在线看 | 99在线精品免费视频九九视 | 欧美日韩加勒比精品一区 | 韩国精品久久久久精品三级 | 国自产拍偷拍精品啪啪模特 | 日本理伦片午夜理伦片 | 中文午夜乱理片无码av | 波多野结衣办公室双飞 | 在线一区视 | 精品特级一级毛片 | 国产乱了真 | 91精品丝袜国产在线一区 | 午夜福利93波多野结衣 | 午夜毛片不卡免费观看视频 | 国产99久久九九精品无码 | 国产又色又爽又刺激在线播放 | 91免费视频成人 | 国产公开免费人成视频 | 东京热app | 91直播在线观看www免费 | 欧美日韩高清一区 | 国产成人av无码片在线观看 | 一区二区国产高清视频在线 | 麻豆国产精品va在线观看不卡 | 91po国产在线精品免费 | 日韩欧美p片内射久久 | 99久久婷婷免费国产综合精品 | 亚洲国产精品一区二区久久 | 99热手机在线观看 | 成人av鲁丝片 | 亚洲精品午夜久久aaa级久久久 | 午夜插元素背景大全 |