欧美日韩亚-欧美日韩亚州在线-欧美日韩亚洲-欧美日韩亚洲第一区-欧美日韩亚洲二区在线-欧美日韩亚洲高清精品

金喜正规买球

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
一二三四视频中文成人 | 午夜视频久 | 免费国产一级特黄aa大片在线 | 国内自拍一二三四2025 | 女人的天堂a国产 | 色老板在线精品免费视频 | 国产真实自在自线免费精品 | 日产一线 | 国产亚洲欧美日韩高清专区 | 国产玖玖在线观看 | 免费无人区一码二码乱码区别在哪 | 性开放的欧美大片黑白配 | 村长巨大开嫩苞 | 日韩精品国产另类专区 | 国产一区日韩二区欧美三区 | 在线视频一区二区三区三区不卡 | 性欧美精品一区二区三区在线播放 | 日本免费人成视频在线观看 | 丰满大码熟女在线播放 | 国产日韩成人精品视频 | 日韩精品中文字幕一区 | 国产理论片在线观看 | 1717she精品永久免费视频 | 国产美女淫秽一区二区三区 | 国产精品一区二区三区 | 中文字幕影片免费在线观看 | 自拍偷在线精品自拍偷免费 | 国产精品初高中精品免费观看 | 在线a亚洲视频播放在线观看 | 日本中文字幕乱码aa高清电影 | 免费人成在线观看视频播放 | 一区二区三区四区视频 | 在线观看日韩欧美一区二区 | 秋霞伦理电影在线看 | 国产精品对白交换绿帽视频 | 亚洲精品一区二区三区四区五区 | 国产精品香蕉夜间视频免费播放 | 羞羞视频下载 | 亚洲天堂激情在线看 | 日韩欧美一 | 午夜韩国理论片在线观看 | 日韩精品一区二区三区在线 | 午夜国产一区二区三区在线观看 | 综合亚洲精品 | 精品免费美剧网排行榜在线看 | 国产精品+日韩精品+在 | 日日夜人人澡人人澡人人看免 | 色久悠悠色久在线观看 | 国产美女 | 中文字幕日韩欧免费视频 | 亚洲美女又黄又爽在线观看 | 国产欧美日韩精品第一页 | 一级特黄h厂视频网站 | 高清在线一区 | 日本精品中文字幕有码 | 国产十欧美| 欧美日韩在线一区二区观看 | 999任你躁在线精品免费 | 国产日产欧产精品精品app | 善良的老师中文字 | 中文字幕免费高清电视剧网站 | 国产综合专区一区二区 | 三级日韩 | 亚洲欧洲淘宝天堂日本 | 免费观看网站 | 国产未成女 | 欧美综合自拍亚洲综合区 | 国产欧美精品亚洲日本一区 | 免费a级 | 国产精品免费αv视频 | 欧美国产激情在线播放 | 偷偷要色偷偷网站视频 | 国产午夜福利在线观看污 | 国产亚洲蜜 | 最新好看的影视大全在线观看 | 最新国产精品视频 | 亚洲人成网址在线观看 | 国自产精品手机在线观看视频 | 精品精品国产免费看不卡 | 亚洲日韩不卡综合 | 夜夜夜夜猛噜噜噜噜噜 | 在线天堂新版最新版在线8 中文字幕精品一区二区精品 | 国产免费不卡v片在线观看 日本一区视频在线播放 | 国产精品免费精品自在线观看 | 国产乱理伦片在线午夜观看 | 夜夜爽一区二区三区精品 | 九九热视频在线免费观看 | 九九精品成人免费国产片 | 欧美激情αv一区二区三区 国语在线看免 | 成人精品一区二区户外勾搭野 | 亚洲国产福利一区二区三区 | 国产精品成人自拍在线观看 | 最新色国产精品精品视频 | 在线播放69热精品 | 一级特黄高清aaaa大片 | 国产免费人成视频在线播放播 | 91最新精品视频在线 | 日本韩国三级aⅴ在线观看 老妇小说 | 国语精品91自产拍在线观看二区 | 国产啪亚洲国产 | 亚洲高清aⅴ日本欧美视频 欧美另类69 | 日韩中文字幕v亚洲中文字幕 | 国产日韩精品欧美一区色 | 亚洲黄免费看网站国产福利一区二 | 真实国产日韩欧美全部综合视频 | 国产欧美日韩资源在线观看 | 成人又黄又爽又色的网站 | 日本免费一区二区在线 | 国产午夜福利一区二区三区在 | 欧美日韩一区二区精美视频 | 亚洲亚中文 | 老司机99视频在线免费观看 | 在线日韩中文字幕 | 国产精品福利尤物youwu | 午夜亚洲一区 | 果冻传媒一区二区天美传媒 | 又色又爽又黄刺激在线观看 | 国产一区二区免费视频 | 成人欧美一区二区三区在线 | 在线精品自| 日韩一区二区三区免费播放 | 日韩欧美亚洲国产永久在线观看 | 成在线人永久免费视频播放 | 免费人成黄页在线观看69 | 99热久re这里只有精品小草 | 精品日韩在线一区二区 | 99这里只有精品 | 国产高清精品一区 | 欧美视频一区二区专区 | 成人永久免费视频网站 | 性xxxx | 中文字幕亚洲不卡在线亚瑟 | 成人精品日本亚洲电影院电影 | 欧美不卡一卡二 | 精品国产男人的 | 日韩成人一区二区三区在线观看 | 国产高清国内精品 | 亚洲中文字幕dⅴd | 国产灌醉极品在线观看 | 中文天堂资源在线www | 女人天堂在线观看国产 | 手机国产乱子伦精品视频 | 99国产精品9| 免费看国产精品3a黄的视频 | 在线观看视频欧美 | 91po国产在 | 精品国产高清自在线一区二区三区 | 三年片在线观看免费大全电影 | 欧美一级a人与 | 97人伦色伦成人免费视频 | 亚州图片 | 日本综合欧美一区二区三区 | 日韩中文字幕精品视频在线 | 婷婷婷国产在线视频 | 免费视频播放a | 男人tv天堂精品一区二区 | 精品亚洲永久免费精品9 | 秋霞理伦韩国在线电影 | 色偷偷亚洲女人天堂观看欧 | 亚洲一区欧美一区国产 | 人摸人摸在线视频 | 国产夜趣福利免费 | 天天综合网~永久入口 | 91成人午夜性a一级真人片 | 亚洲精品在 | 欧美亚洲 | 一区二区三区视频在线观看 | 99国产在线精品国自产在 | 黑人巨大videos极度另类 | 国产精品免费视频网站 | 视频在线成人 | 五月婷婷六月丁香 | 国产精品精华液网站 | 午夜成人性刺激免费视频在线观看 | 综合精品三级亚洲 | 神马午夜电影网手机在线播 | 国产人妖专区视频在线一区 | 国产人在线成 | 日本一区二区三区视频 | 亞洲最大 | 国产一区二区三区日韩精品 | 亚洲欧美福利一区二区 | 人在线观看青青 | 激情综合在线观看 | 97在线视频观看在线观看视频 | 宅男66lu国产在线观看 | h片在线观看免 | 国产成a人片在线观看视频下载 | 欧美三级欧美一级在线视频 | 亚洲精品第一国产综合精品 | 亚洲精国产一区二区三区 | 国产午夜高清高清在线观看 | 午夜探花| 国产在线精品国自产拍影院 | 在线观看免费精品国产第一区 | 成人羞羞视频 | 好吊色永久免费视频在线观看 | 欧美激情国产精品视频一区二区 | 网友自拍视频一区二区三区 | 天天草夜夜草 | 2025国产精品自在拍在线播放 | 国产精品高清在线欧美 | 午夜男女福利 | 亚洲精品中文字幕无乱码 | 国产精品男人的天堂 | 视频免费 | 911精品中文在线播放永久 | 国产蜜桃精品 | 国产精品日韩 | 国产免费看视频 | 中文字幕在线播放 | 舔射插啊~在线观 | 国产真实迷奷 | 亚洲中文字幕 | 国内揄拍国内 | 亚洲精品影院 | 日本高清免费观看 | 中文字幕亚洲欧美专区不卡 | 就去吻亚洲精品国产欧美 | 日本三级中文字版电影 | 成人永久免费视频网站在线观看 | 日韩精品欧美一区喷 | 制服丝袜亚洲中文综合 | 午夜性色一区二区三区不卡视频 | 香蕉久人久人青草青草 | 国产乱码精品一区三上 | 在线观看的资源视频 | 永久精品电影在线观看 | 高清精品一区二区三区 | 欧美一区二区三区男人的天堂 | 高清影视电视剧免费在线观看 | 日本在线视频高清不卡 | 欧美精品视频在线观看 | 日本中文字幕乱码aa高清电影 | 亚州精品一区二区三区 | 99精品国产一区二区 | 日本国产性爱观看视频 | 日本美女一级视频 | 日日噜噜夜夜狠狠视频无 | 亚洲精品影院一区二区 | 日本vs欧| 国产女技师按摩在线观看 | a男人的天堂 | 最新电影免费在线观看 | 西瓜影音免费 | 欧美日韩视频在线观看网址 | 精品影院 | 潘金莲与西门庆床戏在线 | 亚洲精品乱拍国产一区二区三区 | 性色aⅴ按摩精品在线 | 日韩视频中文 | 欧美亚洲国产经典 | 自产国产一区二区 | 日本一区二区三区精品 | 日本乱偷 | 91九色露脸 | 午夜伦情电午夜伦情电影 | 亚洲国产日韩欧美综合a | 善良的老师中文字 | 激情小说亚洲图片伦 | 国产美女精品视 | 成人a网站 | 国语对白精品一区二区在线观看 | 性欧美午夜高清在线观看 | 日韩美女欧美精品 | 亚洲国产日韩在线人高清au | 国产电影在线观看 | 182tv精品视频在线播放 | 亚洲人和日本人 | 韩国欧美一区二区 | 三区高清 | 麻花星空影视传 | 女人靠逼视频不卡的 | 青青青国产在线观看资源 | 国产丝袜视频在 | 国产理论片在线观看 | 日本欧美三级成人精品 | 国产一区精品视频 | 日韩精品在线不卡一区二区 | 日本乱妇乱子视频网站 | 午夜电影网在 | 97国产| 日本中文有 | 国产主播福利 | 欧美丰满老妇熟乱xxxxx视频 | 精品日产卡一卡二卡国色天香 | 欧美综合图 | 日韩女优在线观看 | 亚洲精品推荐 | 女性女同性aⅴ免费观看 | 精品国产高清自在线一区二区 | 好屌色在线 | 精品区一 | 成人午夜视频 | 欧美a级片免费看 | 麻花传媒免费网站在线观看 | 国产中文成人精品久v | 国产+日韩+另类+视频一区爱 | 国产日本精品一区二区 | 欧美大片黑寡妇免费观看 | 国产在线观看精品 | 国产高清一 | 手机看片免费永久在线观看 | 好男人www社区 | 每日更新国产精品视频 | 脱岳裙子 | 伦视频中文字幕亚洲天堂网 | 国产亚洲精品成人a在线 | 国产高清在线观看视频 | 午夜免费福利体验 | 正版高清视频在线观看 | 欧美日韩免费一区二区在线观看 | 国产一级做a爱免费观看 | 亚洲手机| 国产综合在线91精品思思 | 日本中文字幕高清7 | 国产午夜福利免费看片 | 亚洲欧美中文字幕在线观看 | 丝袜美腿女邻居人 | 日韩欧美国产91丝袜 | 亚洲日本一线产区和二线 | 在线观看午夜亚洲一区 | 日韩欧美一区二区三区免费观看 | 日本一区二区三区不卡视频中 | 欧美a级影院 | 亚洲成年看片在线观看男男 | а8天堂资源在线官网 | 中文字幕在线永久免费精品 | 精品国产一区在线观看 | 日韩精品o欧美精品亚洲精品 | 亚洲精品国产第一区第二区国 | 91精品国产免费青青碰在线 | 秋霞国产午夜 | 综合影视亚洲中文 | 亚洲欧美日韩在线香蕉 | 日韩在线观看不卡 | 爽又丰满| 亚洲国产精品尤物yw | 欧美日韩深夜视频在线观看 | 国产精品第六页 | 日韩一级| 成年人在线观看视频网站 | 巨臀中文字幕一区二区 | 九九热在线视频观看这里只有精品 | 两个人的视频www中文 | 高清欧美日韩 | 国产亚洲欧美日韩在线观着 | 国产精品网红尤物福利在 | 国产福利免费视频 | 国产欧美亚洲精品a | 骚女影院 | 日本肥老妇色xxxxx日本老妇 | 中文字幕欧美激情 | 日韩在线播放中文字幕 | 国语自产一区第二页欧美 | 91情国产l精品国产亚洲区 | 亚洲欧美一区二区三区久本道 | 天天看片国产精品 | 2025国产精 | 日韩va不卡精品一区二区 | 国产成年女人特黄特色大片免 | 国产日韩精品在线播放 | 亚洲欧美日韩精品中文乱码 | 欧美大片欧美激情性色a∨在线 | 性爱网在线免费 | 免费在线视频观看 | 天天影视人人综合日韩 | 国产精品主播视频 | 日本护士视频欧美无砖专区 | 精品熟女视频一区二区三区 | 91精品啪国产在线观看 | 日本免费一区二区在线观看 | 精品国产自1000在线现拍 | 日本人xxxx高清 | 国产乱子伦视频在线观看 | 欧美日韩在线一区二区三区 | 国产在线精品一区二区中文 | 欧美精品aⅴ一区二区三区 天堂a在线观看视频 | aaaa级少| 亚洲欧洲日产国码久在线观看 | 精品三级视频在线观看 | 色老头在线永久免费视频 | 999在線視頻精品免 欧美一区二区 | 欧美日韩一区二区精美视频 | 亚洲高清免费观看 | 最新日韩欧美不卡一二三 | 就去吻亚洲精品国产欧美 | 精品国产免费一区二区三区四区 | 中文字幕在线二区 | 亚洲精品变态另类虐交 | 国产亚洲自拍一区 | 综合国产日韩亚洲 | 日本aⅴ日 | 思思伊人 | 亚洲精品伊人 | 另类熟女伦乱视频 | 人摸人摸在线视频 | 人免费观看在线视频www | 午夜自产精品一区二区三区 | 欧美极品另类ⅴideosde | 二区三区国产亚洲综合 | 97国语精品自产拍在线观看一 | 国产午夜视 | 精品国产一区 | 福利在线免费 | 免费国产 | 九九热精品在线视频观看 | 国产综合精品 | 国产国语一级在线播放视频 | 免费福利影视 | 亚洲视频日 | 五月婷婷国产在线 | 国产福利在线观看永 | 最新亚洲 | 欧美日韩激情播放 | 丰满岳乱妇 | 97涩涩| 成人涩涩涩视频在线观看 | 国产亚洲欧美日韩在线观着 | 日本最新在线一区二区 | 精品国产亚洲一区二区三区在线观 | 国产欧美一区二区三区精品 | а√新版天堂资源中文8 | 春宵福利app导航中心 | 成人欧美一区二区三区在线蜜 | 老鸭窝laoyaw | 在线观看的资 | 最近日本韩国高清免费大全 | 亚洲色妇网站 | 欧美一级欧美三级在线观看 | 中日欧美精品在线播放 | 午夜综合网 | 亚州一区二区三 | 99爱这里只有精品 | 国产免费一级高清 | 成年人24小时在线免费观看视频 | 曰批视频免费观看完 | 日韩欧美中文字幕在线视频 | 国产一级在视频在线观 | 亚洲国产日韩欧美一级三级 | 国产1区2区3区4区免费 | 解码2025最新电影预告片 | 亚洲欧美在线精品一区二区 | 日韩精品免费在线观看 | 亚洲欧美日韩ⅴ在线观看91 | 精品国产一区二区三区a | 三级特黄60| 亚洲va在线观看日本 | 九九99亚洲精品 | 亚洲国产婷婷综合在线精品五月 | 精品国产一区二区三区四区色 | 精品免费国产影视 | 国产亚洲精品片a77777 | 亚洲女色福利免费视频 | 国产福利免费的网址 | 久9久9精品视频在 | 亚洲欧美精 | 丝袜亚洲日韩另类 | 亚洲日韩一区二区 | 91成人精品一区二区三区四区 | 国产另类亚洲日韩 | 亚洲福利一区福利三区 | 朝鲜女人大白屁股ass孕交 | 成年私人影院网 | 国产色系视频在线观看免费 | 欧美性爱一级a | 亚洲人成电影网站色 | 欧美中文字幕人成在线网站 | 国产福利小电影视福利在线 | 午夜福利一区二区三区在 | 欧美黑人在线免费观看 | 青青草中文字幕在线观看 | 99香蕉国产精品偷在线观看 | 在线观看日韩欧美一区二区 | 亚洲日本欧美日韩在线观看 | 久热韩国综合中文字幕视频 | 国产欧美精品亚洲日本一区 | 亚洲无线一二三四区手机 | 日韩欧美国产电影 | 97精品久| 日本高清色本在线www | 国产日产一区二 | 超前点播最新电影电视剧 | 中文字幕2025 | 亚洲高清国产一区二区三区电影 | 免费精品国产自产拍在线观看 | 免费精品国自产拍在线播放 | 视频一区二区自产在线 | 久拍国产在线观看 | 国产亚洲老 | 国产精品一二三区视频网站 | 精品人伦一区二区三区蜜 | 日韩一区二区三区不卡视频 | 午夜福利国产一区二区视频 | 国产精品欧美一区二区三区 | 好吊色欧美一区二区三区视频 | 成人福利在线视频免费观看 | 国产日韩精品 | 亚洲区日韩精品中文字暮 | 亚洲日本欧美中文幕 | 亚韩精品视频二三四区 | 91激情| 日韩综合网 | 理论片在线观看 | 日韩国产精品va一区二区 | 91青青国产在线观看免费 | 欧美最猛黑人xxxxx猛交 | 国产精品高清全国免费观看 | 国产伦精品一区二区三区免.费 | 免费国产在线精品一区 | 99re在线观看一区 | 日本成本人片免费网站 | 日本夫妻激情生活b区 | 亚洲精品中文字幕码专区 | 污污污免费 | 综合色就爱涩涩涩综合婷婷 | 日本激情在线观看免费观看 | 中文字幕人 | 亚洲天堂一区二区三区 | 亚洲成a人v欧美综合天堂 | 精品日产一区二区三区 | 国产丝袜精品 | 91午夜理伦私 | 免费特级婬片高清视频 | 国产日韩在线视频 | 含羞草影院在线 | 妖精视频| 欧美一级高清视频在线播放 | 国产福利电影一区二区三区 | 精品区一区二区三 | 国产精品勾引上司在线播放 | 日韩高清在线播放不 | 中文在线日韩 | 九九99靖品 | 日本免费一区视频 | 国产视觉 | 玖玖综合九九在线看 | 中文字字幕乱码高清二本道资源站 | 不卡一区二区 | 午夜欧美视频 | 亚洲成年看 | 岳妇伦丰满69xx | 欧美精品在线观看 | а√天堂资| 国产福利在线高清导航大全 | 经典影片免费在线观看 | 亚洲国产区男人本色 | 国色天香精品亚洲精品 | 国产精品私密保养 | 91秒拍国产福利一区 | 91中文字幕 | 国产精品网站不卡在线观看 | 国产在线不 | 日本中文字幕乱码视频在线 | 国产不卡高清在线观看视频 | 精品国产一区二区一区二 | 老司机精品一区在线视 | 免费无人区一码二码乱码区别在哪 | 欧美日韩不卡高清在线看 | 国产小视频免费在线观看 | 2025年精品国产福利在线 | 在线观看亚洲欧美日本 | 亚洲国产精品免费在线观看 | 国产在线精品一区二区 | 午夜激情影 | 中文字幕精品一区 | 日韩免费精品视频一区二区三区 | 精品综合国产高清 | 亚洲精品在线视频 | 国产免费a级特黄的片子 | 国产精品私密保养 | 尤物视频官网 | 亚洲熟女激情秒播 | 亚洲欧美一区二区三区国产 | 亚洲欧美国产va | 成人免费观看做爰视频胸大 | aⅴ人片在线观看 | 国产精品第一区亚洲精品 | 这里只有精品在线视频 | 国产日韩欧美亚洲精品中字 | 日韩精品一区二区三区中 | 亚洲成l人在线观看线路 | 国产精品亲子乱子伦 | 国产伦国 | 中文字幕在线免费专区 | 亚洲欧洲专线 | 亚洲中文字幕一二三区 | 国产v欧美v日韩v亚洲老妇 | 欧美日韩中文国 | 天堂а√中文在线官网 | 91极品美 | 日本一区二区在线不卡 | 99精品国产丝袜在线拍国语 | 国产亚洲精品午夜福利 | 国产蜜桃精品 | 国产亚洲日 | 伊伊人成亚洲综合人网香 | 国产99视频精品草莓 | 正在播放一区二区 | 中文字幕二区在线 | 成人精品一区二区户外勾 | 好看的手机电影 | 亚洲第一免费视频 | 免费无人区一码二码乱码区别在哪 | 福利导航 | 婷婷开心激情综合五月天 | 成年女性特黄午夜视频免费看 | 亚洲色大成网站www永久网站 | 日本成年人黄a大片 | 中文字幕亚洲网址 | 亚洲人成图片小说网站 | 欧美日韩中文在线视频 | 野花免费观看日本一个电影 | 精品国产一区二区 | 国产精品自产拍在线 | 国产免费毛不卡片 | 日本成本人片免费网站 | 三级三级三级a级全黄 | 欧美日韩中文字幕免费看 | 国产精品成人aaaa网站女吊丝 | 2025国产精品香蕉在线观看 | 成版人抖音d2视 | 欧美在线精品 | 日韩精品欧美激情亚洲综合 | 欧美aⅴ激情视频 | 免费电视剧网站 | 日本一区二区在线不卡 | 国产一区二区在线 | 日本免费人成视频在线观看 | 福利一区二区三区视频在线 | 国产成视频 | 99爱在线观看精品视频 | 亚洲免费| 中文子幕在线观看 | 国产精品一区二区在线观看 | 区三区夜色 | 国产熟女乱婬一区二区 | 欧美亚洲色另类偷自拍 | 免费va国产高清大片在线 | 高清在线观看 | 亚洲欧美在线观看视频 | 野花日本大全免费 | 国产又大 | 簧片在线免费观看 | 中国凸偷窥xxxx自由视频 | 91精品国产免费青青碰 | 国产大片中文字幕在线观看 | 国产精品精品 | 亚洲视频免费在线播放 | 中文字幕第一页亚洲 | 欧美日韩中文字幕在线一区二区 | 国色天香精品亚洲精品 | 三级影视| 亚洲高清中文字幕综合网 | 老司机午夜福利 | 国产福利在线观看片 | 日韩中文字幕视频 | 国产一码二码三码区别 | 日韩精品真人荷官 | 日韩美女三级视频 | 亚洲精品| 精品影片在线观看的网站 | 国产精品永久免费自在线观 | 欧美亚洲一区二区三区 | 看黑人巨大精品欧美一区 | 精品欧乱仑在线 | 国产美女爽到喷出水来视频 | 国产v亚 | 亚洲国产精品∨a在线看黑人 | 国产精品勾引上司在线播放 | 在线播放真实国产乱子伦 | 国产精选在线观 | 成人午夜视频精品一 | 国产免费中文综合 | 国产精品日 | 亚洲成国产人片在线观看 | 情趣五月天 | 永久精品免费影院在线观看网 | 天堂网一区二区 | 免费精品日本拍在线不卡 | 国产网红精品紫薇视频 | 播放国语介绍动漫更新视 | 亚洲天堂2025| 视频免费| 国产精品视频一区二区三区四 | 精品国产福利片在 | 亚洲网站免费观看 | 国产第一区 | 欧美一级二级三级在线看 | 99国产精品婷婷 | 欧美日韩国产亚洲综合不卡 | 精品亚洲日韩国产一二三区 | 在线中文字幕 | 99精品无人区乱码1区2区3区 | 亚洲国产一区二区在线免费 | 国产凸凹视频一 | 欧美海外国产 | 天天躁日日躁狠狠很躁 | 成人欧美视频在线观看 | 国产成精品 | 五月天丁香婷深爱综合网 | 韩日精品视频 | 国产香蕉大片在线视频 | 亚洲精品免费看日韩 | 又粗又大又黄又爽的免费视频 | 九九九九九在线精品区 | 国产字幕制服中文在线 | 精品国产aⅴ一区天美传媒 开心五月丁香花综合网 | 色涩网站在线 | 亚洲国产中文在线二区三区免 | 日本一区二区三区四区视频 | 国产亚洲精品字幕在线观看 | 日韩欧美1区| 亚洲欧美精品suv | 香蕉影院中文字幕视频在线观看 | 国产一区二区高清在线国产综合 | 国产性爱在线观看 | 在线亚洲一区二区三区四区 | 制服丝袜日韩欧美国产 | 国产精品99精品 | 国产又色又爽又黄刺激的影视 | 亚洲精品一区二区观看 | 欧美日韩在线播一区二区三区 | 最新免费视频 | 久操免费在线观看 | 国产人妇三级视频在线观看 | 另类在线观看 | 国产欧美日韩综合一区 | 日韩欧美在线综合网高清 | 亚洲春色一区 | 羞羞网站在线观看 | 又色又爽又黄的视频 | 日本三级中文字版电影 | 亚洲影院 | 欧美亚洲人成网站在线观看 | 国产福利小视 | 91香蕉网| 日韩一区高清在线观看 | 国产中文制服丝袜另类 | 日韩国产精品一区二区 | 亚洲精品手机在线 | 日本a优不卡在线播放 | 国产欧美日韩资源在线观看 | 国产高清一 | 日韩精品一区二区三区四区 | 国产va在线观看免费 | 一区二区精品日韩欧美在 | 精品国产午夜福利在线观看 | 亚洲日韩精品欧美一区二区 | 午夜国产精品电影在线观看一区 | 欧美最猛性xxxxx大叫 | 中文字幕在线播放 | 日本一区免费电影 | 国产在线精品观看一区欧美 | 日韩亚洲欧美一区二区三区综合 | 国产精品高清 | 九九在线视频观看只有精品 | 欧美精品一区二区男同专区 | 亚洲精品制服丝袜四区 | 成在线人永久免费播放视频 | 日韩一级香蕉片在线观看 | 一级一人片 | 男女超爽视频免费播放 | 91精品最新国产在线 | 免费的网 | 一区二区亚洲日本欧美激情久婷婷 | 免费国产a国产 | 国产短视频精品区第一页 | 综合三级在线观 | 成人国产 | 成年人在线视频第一页 | 最好看的高清电影在线观看 | 午夜免费福利片观看 | 国产主播一区二区三区在线观 | 草莓社区在线视频 | 老司机永久免费视频网站 | 免费电视剧网站 | 极品女神 | 欧美亚洲高清国产一区二区三区 | 日韩最新免费视频一区二区 | 一二三四区 | 成人免费高清观看在线 | 国产精品直 | 国产精品美脚玉足脚交 | 亚洲第一国产午夜福利电影 | 国产高清亚洲精品视bt天堂频 | 亚洲欧美日本国产—区二区三区 | 国产又黄又爽又猛的免费视频播放 | 成年女人免费毛 | 色综合色综合婷婷热 | 国产不卡视频一 | 神马电影院 | 夜夜精品一区国产 | 国产原创精品在线 | 日本三级视频在线观看 | 中文第一页在线视频 | 亚洲国产精品va在线观看香蕉 | 91精品福利自产拍在线 | 秋霞影视免费播放手机版 |