3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

基于Modbus的C#串口调试开发

發(fā)布時(shí)間:2024/5/24 综合教程 37 生活家
生活随笔 收集整理的這篇文章主要介紹了 基于Modbus的C#串口调试开发 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

說(shuō)明:本文主要研究的是使用C# WinForm開發(fā)的串口調(diào)試軟件(其中包含Modbus協(xié)議相關(guān)操作)。Modbus相關(guān)協(xié)議可以查閱百度文庫(kù)等,可參考: 《http://wenku.baidu.com/link?url=J-QZeQVLfvfZh7_lh8Qf0MdwANZuVjEoTqox6zJYrSnKyfgES2RTb_bjC5ZTn8-xgsuUAyiELRYVA3-3FBkBGywWhQ9YGoavJOzwB0IxTyK 》。

  (1)先測(cè)試串口設(shè)置,發(fā)送和接收數(shù)據(jù)。

  (2)發(fā)送modbus的命令幀數(shù)據(jù)和使用DataReceived接收緩沖區(qū)的數(shù)據(jù)。

一、簡(jiǎn)單的串口調(diào)試工具

  下圖為串口調(diào)試工具的界面,主要包括串口基本設(shè)置,功能操作,狀態(tài)框以及發(fā)送接收框。由于這里只是簡(jiǎn)單的初始化數(shù)據(jù),所以當(dāng)需要發(fā)送數(shù)據(jù)的時(shí)候需要點(diǎn)擊“串口檢測(cè)”,來(lái)測(cè)試當(dāng)前可用的串口,然后輸入需要發(fā)送的數(shù)據(jù),最后點(diǎn)擊“發(fā)送數(shù)據(jù)”(由于測(cè)試需要,讓發(fā)送什么數(shù)據(jù)就返回什么數(shù)據(jù),這里的底層硬件做了短接處理,使用短接貌P30-P31,具體操作可以自行百度)

  

  

  1.1 發(fā)送數(shù)據(jù)操作

    (1)點(diǎn)擊 串口檢測(cè)

    (2)輸入發(fā)送數(shù)據(jù)

    (3)點(diǎn)擊 發(fā)送數(shù)據(jù)

    下面開始時(shí)具體代碼:

    #1 軟件打開時(shí)候初始化操作:Form1_Load(),主要初始化操作串口設(shè)置的下拉列表。

 1 private void Form1_Load(object sender, EventArgs e)
 2         {
 3             
 4             //設(shè)置窗口大小固定
 5             this.MaximumSize = this.Size;
 6             this.MinimumSize = this.Size;
 7 
 8             //1、設(shè)置串口下拉列表
 9             for ( int i = 0; i < 10; i++ ) 
10             {
11                 cbxCOMPort.Items.Add("COM" + (i + 1).ToString());
12             }
13             cbxCOMPort.SelectedIndex = 2;//默認(rèn)選項(xiàng)
14 
15 
16             //2、設(shè)置常用波特率
17             int bt = 300;
18             for (int i = 0; i < 8; i++)
19             {
20                 cbxBaudRate.Items.Add(bt.ToString());
21                 bt *= 2;
22             }
23 
24             cbxBaudRate.Items.Add("38400");
25             cbxBaudRate.Items.Add("43000");
26             cbxBaudRate.Items.Add("56000"); 
27             cbxBaudRate.Items.Add("57600");
28             cbxBaudRate.Items.Add("115200");
29             cbxBaudRate.SelectedIndex = 5;
30 
31 
32             //3、列出停止位
33             cbxStopBits.Items.Add("0");
34             cbxStopBits.Items.Add("1");
35             cbxStopBits.Items.Add("1.5");
36             cbxStopBits.Items.Add("2");
37             cbxStopBits.SelectedIndex = 1;
38 
39             //4、設(shè)置奇偶檢驗(yàn)
40             cbxParity.Items.Add("無(wú)");
41             cbxParity.Items.Add("奇校驗(yàn)");
42             cbxParity.Items.Add("偶校驗(yàn)");
43             cbxParity.SelectedIndex = 0;
44 
45             //5、設(shè)置數(shù)據(jù)位
46             cbxDataBits.Items.Add("8");
47             cbxDataBits.Items.Add("7");
48             cbxDataBits.Items.Add("6");
49             cbxDataBits.Items.Add("5");
50             cbxDataBits.SelectedIndex = 0;
51 
52 
53         }

private void Form1_Load(object sender, EventArgs e)

    

    #2 檢查串口基本設(shè)置的參數(shù):CheckPortSetting(),

 1 /// <summary>
 2         /// 【檢測(cè)端口設(shè)置】
 3         /// </summary>
 4         /// <returns></returns>
 5         private bool CheckPortSetting()
 6         {
 7             //檢測(cè)端口設(shè)置
 8             if (cbxCOMPort.Text.Trim() == "" || cbxBaudRate.Text.Trim() == "" || cbxStopBits.Text.Trim() == "" || cbxParity.Text.Trim() == "" || cbxDataBits.Text.Trim() == "")
 9                 return false;
10             return true;
11         }

private bool CheckPortSetting()

    #3 設(shè)置串口屬性,創(chuàng)建SerialPort對(duì)象  

 1 /// <summary>
 2         /// 【設(shè)置串口屬性】
 3         /// </summary>
 4         private void SetPortProperty()
 5         {
 6             //1、設(shè)置串口的屬性
 7             sp = new SerialPort();
 8 
 9             sp.ReceivedBytesThreshold = 1;//獲取DataReceived事件發(fā)生前內(nèi)部緩存區(qū)字節(jié)數(shù)
10             sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);//設(shè)置委托
11 
12             sp.PortName = cbxCOMPort.Text.Trim();
13 
14             //2、設(shè)置波特率
15             sp.BaudRate =  Convert.ToInt32( cbxBaudRate.Text.Trim());
16 
17             //3、設(shè)置停止位
18             float f = Convert.ToSingle( cbxStopBits.Text.Trim());
19 
20             if (f == 0) 
21             {
22                 sp.StopBits = StopBits.None;//表示不使用停止位
23             }
24             else if (f == 1.5)
25             {
26                 sp.StopBits = StopBits.OnePointFive;//使用1.5個(gè)停止位
27             }
28             else if (f == 2)
29             {
30                 sp.StopBits = StopBits.Two;//表示使用兩個(gè)停止位
31             }
32             else
33             {
34                 sp.StopBits = StopBits.One;//默認(rèn)使用一個(gè)停止位
35             }
36 
37             //4、設(shè)置數(shù)據(jù)位
38             sp.DataBits = Convert.ToInt16(cbxDataBits.Text.Trim());
39 
40             //5、設(shè)置奇偶校驗(yàn)位
41             string s = cbxParity.Text.Trim();
42             if (s.CompareTo("無(wú)") == 0) 
43             {
44                 sp.Parity = Parity.None;//不發(fā)生奇偶校驗(yàn)檢查
45             }
46             else if (s.CompareTo("奇校驗(yàn)") == 0)
47             {
48                 sp.Parity = Parity.Odd;//設(shè)置奇校驗(yàn)
49             }
50             else if (s.CompareTo("偶校驗(yàn)") == 0)
51             {
52                 sp.Parity = Parity.Even;//設(shè)置偶檢驗(yàn)
53             }
54             else
55             {
56                 sp.Parity = Parity.None;
57             }
58 
59             //6、設(shè)置超時(shí)讀取時(shí)間
60             sp.ReadTimeout = -1;
61 
62             //7、打開串口
63             try
64             {
65                 sp.Open();
66                 isOpen = true;
67             }
68             catch(Exception)
69             {
70                 lblStatus.Text = "打開串口錯(cuò)誤!";
71             }
72 
73         }

private void SetPortProperty()

    

    #4 “發(fā)送數(shù)據(jù)”按鈕點(diǎn)擊事件:btnSend_Click(), 在發(fā)送數(shù)據(jù)需要進(jìn)行,#2,#3驗(yàn)證,然后開始通過(guò)串口對(duì)象寫入數(shù)據(jù)

 1     /// <summary>
 2         /// 【發(fā)送數(shù)據(jù)】
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void btnSend_Click(object sender, EventArgs e)
 7         {
 8             //發(fā)送串口數(shù)據(jù)
 9 
10             //1、檢查串口設(shè)置
11             if (!CheckPortSetting()) 
12             {
13                 MessageBox.Show("串口未設(shè)置!", "錯(cuò)誤提示");
14                 return;
15             }
16 
17             //2、檢查發(fā)送數(shù)據(jù)是否為空
18             if(tbxSendData.Text.Trim() == ""){
19                  MessageBox.Show("發(fā)送數(shù)據(jù)不能為空");
20                  return;
21             }
22 
23             //3、設(shè)置
24             if (!isSetProperty) 
25             {
26                 SetPortProperty();
27                 isSetProperty = true;
28             }
29 
30             //4、寫串口數(shù)據(jù)
31             if (isOpen)
32             {
33                 //寫出口數(shù)據(jù)
34                 try
35                 {
36                     sp.Write(tbxSendData.Text);
37                     tbxStatus.Text = "發(fā)送成功!";
38                     
39 
40                     tbxRecvData.Text += sp.ReadLine();//讀取發(fā)送的數(shù)據(jù)                    
41 
42                 }
43                 catch
44                 {
45                     tbxStatus.Text = "發(fā)送數(shù)據(jù)錯(cuò)誤";
46                 }
47             }
48             else
49             {
50                 MessageBox.Show("串口未打開", "錯(cuò)誤提示");
51             }
52 
53             
54         }                        

  1.2 接受數(shù)據(jù)操作

    接收數(shù)據(jù)和發(fā)送數(shù)據(jù)有點(diǎn)類似   

 1 /// <summary>
 2         /// 【讀取數(shù)據(jù)】
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void btnRecv_Click(object sender, EventArgs e)
 7         {
 8             if(isOpen)
 9 {
10                 try 
11 {
12                     //讀取串口數(shù)據(jù)
13  
14 tbxRecvData.Text+=sp.ReadLine()+"
";
15 } 
16 catch(Exception)
17 { 
18 lblStatus.Text="讀取串口時(shí)發(fā)生錯(cuò)誤!";
19 return;
20 }
21 }
22 else
23 { 
24 MessageBox.Show("串口未打開!","錯(cuò)誤提示");
25 return;
26                 
27 }
28         }

  最后附上該窗體的后臺(tái)代碼:Form1.cs 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.IO.Ports;
  7 using System.Linq;
  8 using System.Text;
  9 using System.Threading.Tasks;
 10 using System.Windows.Forms;
 11 
 12 
 13 namespace 串口調(diào)試
 14 {
 15     public partial class Form1 : Form
 16     {
 17         SerialPort sp = null;
 18 
 19         bool isOpen = false;//是否打開
 20 
 21         bool isSetProperty = false;//是否通過(guò)串口設(shè)置
 22 
 23 
 24         public Form1()
 25         {
 26             InitializeComponent();
 27         }
 28 
 29         private void Form1_Load(object sender, EventArgs e)
 30         {
 31             
 32             //設(shè)置窗口大小固定
 33             this.MaximumSize = this.Size;
 34             this.MinimumSize = this.Size;
 35 
 36             //1、設(shè)置串口下拉列表
 37             for ( int i = 0; i < 10; i++ ) 
 38             {
 39                 cbxCOMPort.Items.Add("COM" + (i + 1).ToString());
 40             }
 41             cbxCOMPort.SelectedIndex = 2;//默認(rèn)選項(xiàng)
 42 
 43 
 44             //2、設(shè)置常用波特率
 45             int bt = 300;
 46             for (int i = 0; i < 8; i++)
 47             {
 48                 cbxBaudRate.Items.Add(bt.ToString());
 49                 bt *= 2;
 50             }
 51 
 52             cbxBaudRate.Items.Add("38400");
 53             cbxBaudRate.Items.Add("43000");
 54             cbxBaudRate.Items.Add("56000"); 
 55             cbxBaudRate.Items.Add("57600");
 56             cbxBaudRate.Items.Add("115200");
 57             cbxBaudRate.SelectedIndex = 5;
 58 
 59 
 60             //3、列出停止位
 61             cbxStopBits.Items.Add("0");
 62             cbxStopBits.Items.Add("1");
 63             cbxStopBits.Items.Add("1.5");
 64             cbxStopBits.Items.Add("2");
 65             cbxStopBits.SelectedIndex = 1;
 66 
 67             //4、設(shè)置奇偶檢驗(yàn)
 68             cbxParity.Items.Add("無(wú)");
 69             cbxParity.Items.Add("奇校驗(yàn)");
 70             cbxParity.Items.Add("偶校驗(yàn)");
 71             cbxParity.SelectedIndex = 0;
 72 
 73             //5、設(shè)置數(shù)據(jù)位
 74             cbxDataBits.Items.Add("8");
 75             cbxDataBits.Items.Add("7");
 76             cbxDataBits.Items.Add("6");
 77             cbxDataBits.Items.Add("5");
 78             cbxDataBits.SelectedIndex = 0;
 79 
 80 
 81         }
 82 
 83 
 84         /// <summary>
 85         /// 【串口檢測(cè)按鈕】
 86         /// </summary>
 87         /// <param name="sender"></param>
 88         /// <param name="e"></param>
 89         private void btnCheckCOM_Click(object sender, EventArgs e)
 90         {
 91             //1、檢測(cè)哪些端口可用
 92             cbxCOMPort.Items.Clear();
 93             cbxCOMPort.Text = "";
 94             
 95             lblStatus.Text = "執(zhí)行中...";
 96             string str = "";
 97             for (int i = 0; i < 10; i++)
 98             {
 99                 try
100                 {
101             ////把所有可能的串口都測(cè)試一遍,打開關(guān)閉操作,只有可用的串口才可會(huì)放到下拉列表中
102                     SerialPort sp = new SerialPort("COM" + (i + 1).ToString());
103                     sp.Open();
104                     sp.Close();
105                     cbxCOMPort.Items.Add("COM" + (i + 1).ToString());
106                 }
107                 catch
108                 {
109                     str += "COM" + (i + 1).ToString() + "、";
110                     continue;
111                 }
112             }
113         
114         //如果當(dāng)前下拉列表有可用的串口,則默認(rèn)選擇第一個(gè)
115             if(cbxCOMPort.Items.Count > 0)
116                 cbxCOMPort.SelectedIndex = 0;
117             lblStatus.Text = "完成";
118             tbxStatus.Text = str;
119         }
120 
121 
122         /// <summary>
123         /// 【檢測(cè)端口設(shè)置】
124         /// </summary>
125         /// <returns></returns>
126         private bool CheckPortSetting()
127         {
128             //檢測(cè)端口設(shè)置
129             if (cbxCOMPort.Text.Trim() == "" || cbxBaudRate.Text.Trim() == "" || cbxStopBits.Text.Trim() == "" || cbxParity.Text.Trim() == "" || cbxDataBits.Text.Trim() == "")
130                 return false;
131             return true;
132         }
133 
134         /// <summary>
135         /// 【檢測(cè)發(fā)送數(shù)據(jù)是否為空】
136         /// </summary>
137         /// <returns></returns>
138         private bool CheckSendData()
139         {
140             if (tbxSendData.Text.Trim() == "")
141                 return false;
142             return true;
143         }
144 
145 
146         /// <summary>
147         /// 【設(shè)置串口屬性】
148         /// </summary>
149         private void SetPortProperty()
150         {
151             //1、設(shè)置串口的屬性
152             sp = new SerialPort();
153 
154             sp.PortName = cbxCOMPort.Text.Trim();
155 
156             //2、設(shè)置波特率
157             sp.BaudRate =  Convert.ToInt32( cbxBaudRate.Text.Trim());
158 
159             //3、設(shè)置停止位
160             float f = Convert.ToSingle( cbxStopBits.Text.Trim());
161 
162             if (f == 0) 
163             {
164                 sp.StopBits = StopBits.None;//表示不使用停止位
165             }
166             else if (f == 1.5)
167             {
168                 sp.StopBits = StopBits.OnePointFive;//使用1.5個(gè)停止位
169             }
170             else if (f == 2)
171             {
172                 sp.StopBits = StopBits.Two;//表示使用兩個(gè)停止位
173             }
174             else
175             {
176                 sp.StopBits = StopBits.One;//默認(rèn)使用一個(gè)停止位
177             }
178 
179             //4、設(shè)置數(shù)據(jù)位
180             sp.DataBits = Convert.ToInt16(cbxDataBits.Text.Trim());
181 
182             //5、設(shè)置奇偶校驗(yàn)位
183             string s = cbxParity.Text.Trim();
184             if (s.CompareTo("無(wú)") == 0) 
185             {
186                 sp.Parity = Parity.None;//不發(fā)生奇偶校驗(yàn)檢查
187             }
188             else if (s.CompareTo("奇校驗(yàn)") == 0)
189             {
190                 sp.Parity = Parity.Odd;//設(shè)置奇校驗(yàn)
191             }
192             else if (s.CompareTo("偶校驗(yàn)") == 0)
193             {
194                 sp.Parity = Parity.Even;//設(shè)置偶檢驗(yàn)
195             }
196             else
197             {
198                 sp.Parity = Parity.None;
199             }
200 
201             //6、設(shè)置超時(shí)讀取時(shí)間
202             sp.ReadTimeout = -1;
203 
204             //7、打開串口
205             try
206             {
207                 sp.Open();
208                 isOpen = true;
209             }
210             catch(Exception)
211             {
212                 lblStatus.Text = "打開串口錯(cuò)誤!";
213             }
214 
215         }
216 
217        
218 
219         /// <summary>
220         /// 【發(fā)送數(shù)據(jù)】
221         /// </summary>
222         /// <param name="sender"></param>
223         /// <param name="e"></param>
224         private void btnSend_Click(object sender, EventArgs e)
225         {
226             //發(fā)送串口數(shù)據(jù)
227 
228             //1、檢查串口設(shè)置
229             if (!CheckPortSetting()) 
230             {
231                 MessageBox.Show("串口未設(shè)置!", "錯(cuò)誤提示");
232                 return;
233             }
234 
235             2、檢查發(fā)送數(shù)據(jù)是否為空
236             if (!CheckSendData())
237             {
238                 MessageBox.Show("請(qǐng)輸入要發(fā)送的數(shù)據(jù)!", "錯(cuò)誤提示");
239                 return;
240             }
241 
242             //3、設(shè)置
243             if (!isSetProperty) 
244             {
245                 SetPortProperty();
246                 isSetProperty = true;
247             }
248 
249             //4、寫串口數(shù)據(jù)
250             if (isOpen)
251             {
252                 //寫出口數(shù)據(jù)
253                 try
254                 {
255                     sp.Write(tbxSendData.Text);
256                     tbxStatus.Text = "發(fā)送成功!";
257 
258                     tbxRecvData.Text += sp.ReadLine()+"
";
259                 }
260                 catch
261                 {
262                     tbxStatus.Text = "發(fā)送數(shù)據(jù)錯(cuò)誤";
263                 }
264             }
265             else
266             {
267                 MessageBox.Show("串口未打開", "錯(cuò)誤提示");
268             }
269 
270             
271         }
272 
273         /// <summary>
274         /// 【讀取數(shù)據(jù)】
275         /// </summary>
276         /// <param name="sender"></param>
277         /// <param name="e"></param>
278         private void btnRecv_Click(object sender, EventArgs e)
279         {
280             if(isOpen)
281 {
282                 try 
283 {
284                     //讀取串口數(shù)據(jù)
285  
286 tbxRecvData.Text+=sp.ReadLine()+"
";
287 } 
288 catch(Exception)
289 { 
290 lblStatus.Text="讀取串口時(shí)發(fā)生錯(cuò)誤!";
291 return;
292 }
293 }
294 else
295 { 
296 MessageBox.Show("串口未打開!","錯(cuò)誤提示");
297 return;
298                 
299 }
300         }
301  
302     }
303 }

Form1.cs

二、基于Modbus協(xié)議的數(shù)據(jù)發(fā)送和接收

  這里主要是在前面的基礎(chǔ)上,把發(fā)送和接收的數(shù)據(jù)進(jìn)行格式化(符合Modbus的數(shù)據(jù)幀格式),如下左圖所示,右圖為加入Modbus協(xié)議的窗體,主要添加了命令幀的輸入框組:

  

  

  2.1 獲取字節(jié)的的高位和低位:WORD_LO()、WORD_HI()   

 1 /// <summary>
 2         /// 【獲取低位字節(jié)】
 3         /// </summary>
 4         /// <param name="crcCLo"></param>
 5         /// <returns></returns>
 6         public static byte WORD_LO(ushort crcCLo)
 7         {
 8             crcCLo = (ushort)(crcCLo & 0X00FF);
 9             return (byte)crcCLo;
10         }
11 
12         /// <summary>
13         /// 【獲取高位字節(jié)】
14         /// </summary>
15         /// <param name="crcHI"></param>
16         /// <returns></returns>
17         public static byte WORD_HI(ushort crcHI)
18         {
19             crcHI = (ushort)(crcHI >> 8 & 0X00FF);
20             return (byte)crcHI;
21         }

WORD_LO() WORD_HI()

  

  2.2 CRC高位表和低位表 

 1  #region CRC高位表 byte[] _auchCRCHi
 2         private static readonly byte[] _auchCRCHi = new byte[]//crc高位表
 3         {
 4             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 
 5             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
 6             0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 
 7             0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 
 8             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 
 9             0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 
10             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 
11             0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
12             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 
13             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 
14             0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 
15             0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 
16             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 
17             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 
18             0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 
19             0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 
20             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 
21             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
22             0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 
23             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
24             0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 
25             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 
26             0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 
27             0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
28             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 
29             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
30         };
31         #endregion
32 
33         #region CRC低位表 byte[] _auchCRCLo
34         private static readonly byte[] _auchCRCLo = new byte[]//crc低位表
35         {
36             0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 
37             0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 
38             0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 
39             0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 
40             0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 
41             0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 
42             0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 
43             0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 
44             0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 
45             0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 
46             0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 
47             0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 
48             0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 
49             0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 
50             0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 
51             0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 
52             0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 
53             0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 
54             0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 
55             0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 
56             0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 
57             0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 
58             0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 
59             0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 
60             0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 
61             0x43, 0x83, 0x41, 0x81, 0x80, 0x40
62         };
63         #endregion

CRC高低位表

  2.3 CRC校驗(yàn)方法:CRC16()

 1 /// <summary>
 2         /// 【CRC校驗(yàn)】
 3         /// </summary>
 4         /// <param name="buffer">命令幀合適前6字節(jié)</param>
 5         /// <param name="Sset">開始位</param>
 6         /// <param name="Eset">結(jié)束位</param>
 7         /// <returns>CRC校驗(yàn)碼</returns>
 8         public static ushort CRC16(Byte[] buffer, int Sset, int Eset)
 9         {
10             byte crcHi = 0xff;  // 高位初始化
11 
12             byte crcLo = 0xff;  // 低位初始化
13 
14             for (int i = Sset; i <= Eset; i++)
15             {
16                 int crcIndex = crcHi ^ buffer[i]; //查找crc表值
17 
18                 crcHi = (byte)(crcLo ^ _auchCRCHi[crcIndex]);
19                 crcLo = _auchCRCLo[crcIndex];
20             }
21 
22             return (ushort)(crcHi << 8 | crcLo);
23         }

public static ushort CRC16(Byte[] buffer, int Sset, int Eset)

  

  2.4 獲取數(shù)據(jù)幀,把需要發(fā)送的數(shù)據(jù)格式化成Modbus協(xié)議數(shù)據(jù)幀

  

 1 /// <summary>
 2         /// 【獲取讀數(shù)據(jù)命令,返回命令幀】
 3         /// </summary>
 4         /// <param name="mdaddr">地址碼</param>
 5         /// <param name="R_CMD">功能碼</param>
 6         /// <param name="min_reg">寄存器地址</param>
 7         /// <param name="data_len">寄存器個(gè)數(shù)</param>
 8         /// <param name="R_CMD_LEN">命令長(zhǎng)度</param>
 9         /// <returns></returns>
10         public byte[] GetReadFrame(byte mdaddr, byte R_CMD, ushort min_reg, ushort data_len, int R_CMD_LEN)
11         {
12             //主機(jī)命令幀格式
13             //  字節(jié)    功能描述            例子
14             //
15             //  1         地址碼             0x01
16             //  2         功能碼             0x03
17             //  3         寄存器地址高       0x00
18             //  4         寄存器地址低       0x00
19             //  5         寄存器個(gè)數(shù)高       0x00
20             //  6         寄存器個(gè)數(shù)低       0x02
21             //  7         CRC檢驗(yàn)碼低        0xC4
22             //  8         CRC校驗(yàn)碼高        0x0B
23 
24             ushort crc;
25             byte[] message = new byte[8];
26 
27             //設(shè)置模塊號(hào)
28             message[0] = mdaddr;
29             //設(shè)置命令字
30             message[1] = R_CMD;
31 
32             //設(shè)置開始寄存器
33             message[2] = WORD_HI(min_reg);
34             message[3] = WORD_LO(min_reg);
35 
36             //設(shè)置數(shù)據(jù)長(zhǎng)度
37             message[4] = WORD_HI(data_len);
38             message[5] = WORD_LO(data_len);
39 
40             //設(shè)置 CRC
41             crc = CRC16(message, 0, R_CMD_LEN - 3);
42 
43             message[6] = WORD_HI(crc);//CRC校驗(yàn)碼高位
44             message[7] = WORD_LO(crc);//CRC校驗(yàn)碼低位
45 
46 
47             return message;
48         }

  2.6 對(duì)于DataReceived的使用

    #1 設(shè)置委托和方法

      1 private delegate void myDelegate(byte[] readBuffer);    

1 /// <summary>
2         /// 【顯示接收返回的數(shù)據(jù)】
3         /// </summary>
4         /// <param name="resbuffer"></param>
5         public void ShowRst(byte[] resbuffer) 
6         {
7             MyModbus modbus = new MyModbus();
8             tbxRecvData.Text += "Recv:" + modbus.SetText(resbuffer) + "
";
9         }

    #2 設(shè)置屬性:ReceivedBytesThreshold = 1

1  //1、設(shè)置串口的屬性
2             sp = new SerialPort();
3 
4             sp.ReceivedBytesThreshold = 1;//獲取DataReceived事件發(fā)生前內(nèi)部緩存區(qū)字節(jié)數(shù)
5             sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);//設(shè)置委托

    #3 點(diǎn)擊“發(fā)送數(shù)據(jù)”按鈕的事件如下:  

 1         /// <summary>
 2         /// 【發(fā)送數(shù)據(jù)】
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void btnSend_Click(object sender, EventArgs e)
 7         {
 8             //發(fā)送串口數(shù)據(jù)
 9 
10             //1、檢查串口設(shè)置
11             if (!CheckPortSetting()) 
12             {
13                 MessageBox.Show("串口未設(shè)置!", "錯(cuò)誤提示");
14                 return;
15             }
16 
17             //2、檢查發(fā)送數(shù)據(jù)是否為空
18             //if (!CheckSendData())
19             //{
20             //    MessageBox.Show("請(qǐng)輸入要發(fā)送的數(shù)據(jù)!", "錯(cuò)誤提示");
21             //    return;
22             //}
23 
24             //3、設(shè)置
25             if (!isSetProperty) 
26             {
27                 SetPortProperty();
28                 isSetProperty = true;
29             }
30 
31             //4、寫串口數(shù)據(jù)
32             if (isOpen)
33             {
34                 //寫出口數(shù)據(jù)
35                 try
36                 {
37                     //sp.Write(tbxSendData.Text);
38                     tbxStatus.Text = "發(fā)送成功!";
39                     //tbxSendData.Text += tbxAddress.Text;
40                     
41                 
42                     byte address = Convert.ToByte( tbxAddress.Text.Trim(), 16);//地址碼
43                     byte cmd = Convert.ToByte(tbxCmd.Text.Trim(),16);//命令幀
44                     byte regAddr = Convert.ToByte(tbxRegAddr.Text.Trim(), 16);//寄存器地址
45                     byte regNum = Convert.ToByte(tbxRegNum.Text.Trim(), 16);//寄存器數(shù)量
46 
47                     
48                     //Modbus相關(guān)處理對(duì)象
49                     MyModbus modbus = new MyModbus();
50                     byte[] text = modbus.GetReadFrame(address, cmd, regAddr, regNum, 8);
51 
52                     sp.Write(text, 0, 8);
53                     tbxRecvData.Text += "Send:" + BitConverter.ToString(text)+ "
";      
54 
55                 }
56                 catch
57                 {
58                     tbxStatus.Text = "發(fā)送數(shù)據(jù)錯(cuò)誤";
59                 }
60             }
61             else
62             {
63                 MessageBox.Show("串口未打開", "錯(cuò)誤提示");
64             }
65 
66             
67         }

    

  2.7 附加代碼

    #1 這里的MyModbus主要為Modbus相關(guān)一些操作,包括把發(fā)送數(shù)據(jù)封裝成Modbus數(shù)據(jù)幀等。   

  1 using System;
  2 using System.Collections.Generic;
  3 using System.IO.Ports;
  4 using System.Linq;
  5 using System.Text;
  6 using System.Threading.Tasks;
  7 
  8 namespace 串口調(diào)試
  9 {
 10     class MyModbus
 11     {
 12        
 13         #region CRC高位表 byte[] _auchCRCHi
 14         private static readonly byte[] _auchCRCHi = new byte[]//crc高位表
 15         {
 16             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 
 17             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
 18             0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 
 19             0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 
 20             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 
 21             0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 
 22             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 
 23             0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
 24             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 
 25             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 
 26             0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 
 27             0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 
 28             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 
 29             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 
 30             0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 
 31             0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 
 32             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 
 33             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
 34             0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 
 35             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
 36             0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 
 37             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 
 38             0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 
 39             0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
 40             0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 
 41             0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
 42         };
 43         #endregion
 44 
 45         #region CRC低位表 byte[] _auchCRCLo
 46         private static readonly byte[] _auchCRCLo = new byte[]//crc低位表
 47         {
 48             0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 
 49             0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 
 50             0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 
 51             0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 
 52             0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 
 53             0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 
 54             0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 
 55             0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 
 56             0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 
 57             0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 
 58             0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 
 59             0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 
 60             0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 
 61             0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 
 62             0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 
 63             0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 
 64             0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 
 65             0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 
 66             0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 
 67             0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 
 68             0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 
 69             0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 
 70             0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 
 71             0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 
 72             0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 
 73             0x43, 0x83, 0x41, 0x81, 0x80, 0x40
 74         };
 75         #endregion
 76 
 77         /// <summary>
 78         /// 【獲取讀數(shù)據(jù)命令,返回命令幀】
 79         /// </summary>
 80         /// <param name="mdaddr">地址碼</param>
 81         /// <param name="R_CMD">功能碼</param>
 82         /// <param name="min_reg">寄存器地址</param>
 83         /// <param name="data_len">寄存器個(gè)數(shù)</param>
 84         /// <param name="R_CMD_LEN">命令長(zhǎng)度</param>
 85         /// <returns></returns>
 86         public byte[] GetReadFrame(byte mdaddr, byte R_CMD, ushort min_reg, ushort data_len, int R_CMD_LEN)
 87         {
 88             //主機(jī)命令幀格式
 89             //  字節(jié)    功能描述            例子
 90             //
 91             //  1         地址碼             0x01
 92             //  2         功能碼             0x03
 93             //  3         寄存器地址高       0x00
 94             //  4         寄存器地址低       0x00
 95             //  5         寄存器個(gè)數(shù)高       0x00
 96             //  6         寄存器個(gè)數(shù)低       0x02
 97             //  7         CRC檢驗(yàn)碼低        0xC4
 98             //  8         CRC校驗(yàn)碼高        0x0B
 99 
100             ushort crc;
101             byte[] message = new byte[8];
102 
103             //設(shè)置模塊號(hào)
104             message[0] = mdaddr;
105             //設(shè)置命令字
106             message[1] = R_CMD;
107 
108             //設(shè)置開始寄存器
109             message[2] = WORD_HI(min_reg);
110             message[3] = WORD_LO(min_reg);
111 
112             //設(shè)置數(shù)據(jù)長(zhǎng)度
113             message[4] = WORD_HI(data_len);
114             message[5] = WORD_LO(data_len);
115 
116             //設(shè)置 CRC
117             crc = CRC16(message, 0, R_CMD_LEN - 3);
118 
119             message[6] = WORD_HI(crc);//CRC校驗(yàn)碼高位
120             message[7] = WORD_LO(crc);//CRC校驗(yàn)碼低位
121 
122 
123             return message;
124         }
125 
126         /// <summary>
127         /// 【格式化輸出,校驗(yàn)讀取的數(shù)據(jù)】
128         /// </summary>
129         /// <param name="readBuffer"></param>
130         /// <returns></returns>
131         public string SetText(byte[] readBuffer)
132         {
133             //將byte 轉(zhuǎn)換成string 用于顯示
134             //string readstr = string.Empty;
135             if (readBuffer != null)
136             {
137                 ushort crc = CRC16(readBuffer, 0, readBuffer.Length - 3);
138                 if (readBuffer[readBuffer.Length - 2] == WORD_HI(crc) && readBuffer[readBuffer.Length - 1] == WORD_LO(crc))//crc校驗(yàn)
139                 { 
140                     return ToHexString(readBuffer);
141                 }
142                 else
143                 {
144                     return "CRC校驗(yàn)錯(cuò)誤";
145                 }
146             }
147 
148             return "程序出錯(cuò)";
149         }
150 
151 
152         /// <summary>
153         /// 【CRC校驗(yàn)】
154         /// </summary>
155         /// <param name="buffer">命令幀合適前6字節(jié)</param>
156         /// <param name="Sset">開始位</param>
157         /// <param name="Eset">結(jié)束位</param>
158         /// <returns>CRC校驗(yàn)碼</returns>
159         public static ushort CRC16(Byte[] buffer, int Sset, int Eset)
160         {
161             byte crcHi = 0xff;  // 高位初始化
162 
163             byte crcLo = 0xff;  // 低位初始化
164 
165             for (int i = Sset; i <= Eset; i++)
166             {
167                 int crcIndex = crcHi ^ buffer[i]; //查找crc表值
168 
169                 crcHi = (byte)(crcLo ^ _auchCRCHi[crcIndex]);
170                 crcLo = _auchCRCLo[crcIndex];
171             }
172 
173             return (ushort)(crcHi << 8 | crcLo);
174         }
175 
176         /// <summary>
177         /// 【獲取大寫字母】
178         /// </summary>
179         /// <param name="bytes"></param>
180         /// <returns></returns>
181         public static string ToHexString(byte[] bytes) // 0xae00cf => "AE00CF "
182         {
183             string hexString = string.Empty;
184 
185             if (bytes != null)
186             {
187 
188                 StringBuilder strB = new StringBuilder();
189 
190                 for (int i = 0; i < bytes.Length; i++)
191                 {
192 
193                     strB.Append(bytes[i].ToString("X2"));
194 
195                 }
196 
197                 hexString = strB.ToString();
198 
199             } return hexString;
200 
201         }
202 
203         //取Word變量的高位字節(jié)、低位字節(jié)
204         /// <summary>
205         /// 【獲取低位字節(jié)】
206         /// </summary>
207         /// <param name="crcCLo"></param>
208         /// <returns></returns>
209         public static byte WORD_LO(ushort crcCLo)
210         {
211             crcCLo = (ushort)(crcCLo & 0X00FF);
212             return (byte)crcCLo;
213         }
214 
215         /// <summary>
216         /// 【獲取高位字節(jié)】
217         /// </summary>
218         /// <param name="crcHI"></param>
219         /// <returns></returns>
220         public static byte WORD_HI(ushort crcHI)
221         {
222             crcHI = (ushort)(crcHI >> 8 & 0X00FF);
223             return (byte)crcHI;
224         }
225     }
226 }

MyModbus.cs

    

    #2 下面為Form1.cs的代碼,主要包括窗體一些基本操作。  

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.IO.Ports;
  7 using System.Linq;
  8 using System.Text;
  9 using System.Threading.Tasks;
 10 using System.Windows.Forms;
 11 
 12 
 13 namespace 串口調(diào)試
 14 {
 15     public partial class Form1 : Form
 16     {
 17         SerialPort sp = null;
 18 
 19         bool isOpen = false;//是否打開
 20 
 21         bool isSetProperty = false;
 22 
 23 
 24         //數(shù)據(jù)接收使用的代理
 25         private delegate void myDelegate(byte[] readBuffer);
 26 
 27         public Form1()
 28         {
 29             InitializeComponent();
 30         }
 31 
 32         private void Form1_Load(object sender, EventArgs e)
 33         {
 34             
 35             //設(shè)置窗口大小固定
 36             this.MaximumSize = this.Size;
 37             this.MinimumSize = this.Size;
 38 
 39             //1、設(shè)置串口下拉列表
 40             for ( int i = 0; i < 10; i++ ) 
 41             {
 42                 cbxCOMPort.Items.Add("COM" + (i + 1).ToString());
 43             }
 44             cbxCOMPort.SelectedIndex = 2;//默認(rèn)選項(xiàng)
 45 
 46 
 47             //2、設(shè)置常用波特率
 48             int bt = 300;
 49             for (int i = 0; i < 8; i++)
 50             {
 51                 cbxBaudRate.Items.Add(bt.ToString());
 52                 bt *= 2;
 53             }
 54 
 55             cbxBaudRate.Items.Add("38400");
 56             cbxBaudRate.Items.Add("43000");
 57             cbxBaudRate.Items.Add("56000"); 
 58             cbxBaudRate.Items.Add("57600");
 59             cbxBaudRate.Items.Add("115200");
 60             cbxBaudRate.SelectedIndex = 5;
 61 
 62 
 63             //3、列出停止位
 64             cbxStopBits.Items.Add("0");
 65             cbxStopBits.Items.Add("1");
 66             cbxStopBits.Items.Add("1.5");
 67             cbxStopBits.Items.Add("2");
 68             cbxStopBits.SelectedIndex = 1;
 69 
 70             //4、設(shè)置奇偶檢驗(yàn)
 71             cbxParity.Items.Add("無(wú)");
 72             cbxParity.Items.Add("奇校驗(yàn)");
 73             cbxParity.Items.Add("偶校驗(yàn)");
 74             cbxParity.SelectedIndex = 0;
 75 
 76             //5、設(shè)置數(shù)據(jù)位
 77             cbxDataBits.Items.Add("8");
 78             cbxDataBits.Items.Add("7");
 79             cbxDataBits.Items.Add("6");
 80             cbxDataBits.Items.Add("5");
 81             cbxDataBits.SelectedIndex = 0;
 82 
 83 
 84         }
 85 
 86 
 87         /// <summary>
 88         /// 【串口檢測(cè)按鈕】
 89         /// </summary>
 90         /// <param name="sender"></param>
 91         /// <param name="e"></param>
 92         private void btnCheckCOM_Click(object sender, EventArgs e)
 93         {
 94             //1、檢測(cè)哪些端口可用
 95             cbxCOMPort.Items.Clear();
 96             cbxCOMPort.Text = "";
 97             
 98             lblStatus.Text = "執(zhí)行中...";
 99             string str = "";
100             for (int i = 0; i < 10; i++)
101             {
102                 try
103                 {
104                     SerialPort sp = new SerialPort("COM" + (i + 1).ToString());
105                     sp.Open();
106                     sp.Close();
107                     cbxCOMPort.Items.Add("COM" + (i + 1).ToString());
108                 }
109                 catch
110                 {
111                     str += "COM" + (i + 1).ToString() + "、";
112                     continue;
113                 }
114             }
115 
116             if(cbxCOMPort.Items.Count > 0)
117                 cbxCOMPort.SelectedIndex = 0;
118             lblStatus.Text = "完成";
119             tbxStatus.Text = str;
120         }
121 
122 
123         public void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
124         {
125             myDelegate md = new myDelegate(ShowRst);
126             try
127             {
128                 if (sp.IsOpen)
129                 {
130                     int count = sp.BytesToRead;
131                     if (count > 0)
132                     {
133                         byte[] readBuffer = new byte[count];
134                         sp.Read(readBuffer, 0, count);//讀取串口數(shù)據(jù)
135                         //     serialPort1.Write(readBuffer, 0, count);
136                         Invoke(md, readBuffer);
137                     }
138                 }
139             }
140             catch (Exception err)
141             {
142                 throw err;
143             }
144 
145         }
146 
147         /// <summary>
148         /// 【顯示接收返回的數(shù)據(jù)】
149         /// </summary>
150         /// <param name="resbuffer"></param>
151         public void ShowRst(byte[] resbuffer) 
152         {
153             MyModbus modbus = new MyModbus();
154             tbxRecvData.Text += "Recv:" + modbus.SetText(resbuffer) + "
";
155             tbxRecvData.Text += "
";
156         }
157 
158         /// <summary>
159         /// 【檢測(cè)端口設(shè)置】
160         /// </summary>
161         /// <returns></returns>
162         private bool CheckPortSetting()
163         {
164             //檢測(cè)端口設(shè)置
165             if (cbxCOMPort.Text.Trim() == "" || cbxBaudRate.Text.Trim() == "" || cbxStopBits.Text.Trim() == "" || cbxParity.Text.Trim() == "" || cbxDataBits.Text.Trim() == "")
166                 return false;
167             return true;
168         }
169 
170         /// <summary>
171         /// 【檢測(cè)發(fā)送數(shù)據(jù)是否為空】
172         /// </summary>
173         /// <returns></returns>
174         private bool CheckSendData()
175         {
176             if (tbxSendData.Text.Trim() == "")
177                 return false;
178             return true;
179         }
180 
181 
182         /// <summary>
183         /// 【設(shè)置串口屬性】
184         /// </summary>
185         private void SetPortProperty()
186         {
187             //1、設(shè)置串口的屬性
188             sp = new SerialPort();
189 
190             sp.ReceivedBytesThreshold = 1;//獲取DataReceived事件發(fā)生前內(nèi)部緩存區(qū)字節(jié)數(shù)
191             sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);//設(shè)置委托
192 
193             sp.PortName = cbxCOMPort.Text.Trim();
194 
195             //2、設(shè)置波特率
196             sp.BaudRate =  Convert.ToInt32( cbxBaudRate.Text.Trim());
197 
198             //3、設(shè)置停止位
199             float f = Convert.ToSingle( cbxStopBits.Text.Trim());
200 
201             if (f == 0) 
202             {
203                 sp.StopBits = StopBits.None;//表示不使用停止位
204             }
205             else if (f == 1.5)
206             {
207                 sp.StopBits = StopBits.OnePointFive;//使用1.5個(gè)停止位
208             }
209             else if (f == 2)
210             {
211                 sp.StopBits = StopBits.Two;//表示使用兩個(gè)停止位
212             }
213             else
214             {
215                 sp.StopBits = StopBits.One;//默認(rèn)使用一個(gè)停止位
216             }
217 
218             //4、設(shè)置數(shù)據(jù)位
219             sp.DataBits = Convert.ToInt16(cbxDataBits.Text.Trim());
220 
221             //5、設(shè)置奇偶校驗(yàn)位
222             string s = cbxParity.Text.Trim();
223             if (s.CompareTo("無(wú)") == 0) 
224             {
225                 sp.Parity = Parity.None;//不發(fā)生奇偶校驗(yàn)檢查
226             }
227             else if (s.CompareTo("奇校驗(yàn)") == 0)
228             {
229                 sp.Parity = Parity.Odd;//設(shè)置奇校驗(yàn)
230             }
231             else if (s.CompareTo("偶校驗(yàn)") == 0)
232             {
233                 sp.Parity = Parity.Even;//設(shè)置偶檢驗(yàn)
234             }
235             else
236             {
237                 sp.Parity = Parity.None;
238             }
239 
240             //6、設(shè)置超時(shí)讀取時(shí)間
241             sp.ReadTimeout = -1;
242 
243             //7、打開串口
244             try
245             {
246                 sp.Open();
247                 isOpen = true;
248             }
249             catch(Exception)
250             {
251                 lblStatus.Text = "打開串口錯(cuò)誤!";
252             }
253 
254         }
255 
256        
257 
258         /// <summary>
259         /// 【發(fā)送數(shù)據(jù)】
260         /// </summary>
261         /// <param name="sender"></param>
262         /// <param name="e"></param>
263         private void btnSend_Click(object sender, EventArgs e)
264         {
265             //發(fā)送串口數(shù)據(jù)
266 
267             //1、檢查串口設(shè)置
268             if (!CheckPortSetting()) 
269             {
270                 MessageBox.Show("串口未設(shè)置!", "錯(cuò)誤提示");
271                 return;
272             }
273 
274             //2、檢查發(fā)送數(shù)據(jù)是否為空
275             //if (!CheckSendData())
276             //{
277             //    MessageBox.Show("請(qǐng)輸入要發(fā)送的數(shù)據(jù)!", "錯(cuò)誤提示");
278             //    return;
279             //}
280 
281             //3、設(shè)置
282             if (!isSetProperty) 
283             {
284                 SetPortProperty();
285                 isSetProperty = true;
286             }
287 
288             //4、寫串口數(shù)據(jù)
289             if (isOpen)
290             {
291                 //寫出口數(shù)據(jù)
292                 try
293                 {
294                     //sp.Write(tbxSendData.Text);
295                     tbxStatus.Text = "發(fā)送成功!";
296                     //tbxSendData.Text += tbxAddress.Text;
297                     
298                 
299                     byte address = Convert.ToByte( tbxAddress.Text.Trim(), 16);//地址碼
300                     byte cmd = Convert.ToByte(tbxCmd.Text.Trim(),16);//命令幀
301                     byte regAddr = Convert.ToByte(tbxRegAddr.Text.Trim(), 16);//寄存器地址
302                     byte regNum = Convert.ToByte(tbxRegNum.Text.Trim(), 16);//寄存器數(shù)量
303 
304                     
305                     //Modbus相關(guān)處理對(duì)象
306                     MyModbus modbus = new MyModbus();
307                     byte[] text = modbus.GetReadFrame(address, cmd, regAddr, regNum, 8);
308 
309                     sp.Write(text, 0, 8);
310                     tbxRecvData.Text += "Send:" + BitConverter.ToString(text)+ "
";      
311 
312                 }
313                 catch
314                 {
315                     tbxStatus.Text = "發(fā)送數(shù)據(jù)錯(cuò)誤";
316                 }
317             }
318             else
319             {
320                 MessageBox.Show("串口未打開", "錯(cuò)誤提示");
321             }
322 
323             
324         }
325 
326         /// <summary>
327         /// 【讀取數(shù)據(jù)】
328         /// </summary>
329         /// <param name="sender"></param>
330         /// <param name="e"></param>
331         private void btnRecv_Click(object sender, EventArgs e)
332         {
333             if(isOpen)
334 {
335                 try 
336 {
337                     //讀取串口數(shù)據(jù)
338  
339 tbxRecvData.Text+=sp.ReadLine()+"
";
340 } 
341 catch(Exception)
342 { 
343 lblStatus.Text="讀取串口時(shí)發(fā)生錯(cuò)誤!";
344 return;
345 }
346 }
347 else
348 { 
349 MessageBox.Show("串口未打開!","錯(cuò)誤提示");
350 return;
351                 
352 }
353         }
354  
355     
356     }
357 }

Form1.cs

三、最后說(shuō)一句

  由于需要查詢大量資料,有些代碼是引用別人的,所以這里要感謝那些分享的人,秉著分享精神,希望可以幫助更多的人。

  如果發(fā)現(xiàn)有什么錯(cuò)誤,或者建議,請(qǐng)留言,謝謝!

總結(jié)

以上是生活随笔為你收集整理的基于Modbus的C#串口调试开发的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

鲁一鲁av2019在线 | 国产三级精品三级男人的天堂 | 狠狠亚洲超碰狼人久久 | 久久这里只有精品视频9 | 久久人人97超碰a片精品 | 亚洲国产午夜精品理论片 | 中文无码伦av中文字幕 | 精品久久8x国产免费观看 | 偷窥村妇洗澡毛毛多 | 欧美国产亚洲日韩在线二区 | 日本一区二区三区免费高清 | 伊人久久大香线蕉av一区二区 | 亚洲一区二区三区含羞草 | 国产精品美女久久久久av爽李琼 | 狠狠色噜噜狠狠狠狠7777米奇 | 九九热爱视频精品 | 久久综合给久久狠狠97色 | 中文无码精品a∨在线观看不卡 | 领导边摸边吃奶边做爽在线观看 | 性欧美牲交xxxxx视频 | 成人三级无码视频在线观看 | 人妻体内射精一区二区三四 | 熟女俱乐部五十路六十路av | 精品国产一区二区三区四区在线看 | 一本一道久久综合久久 | 国产精品久久国产精品99 | 精品国偷自产在线 | 国产精品国产自线拍免费软件 | 青青青爽视频在线观看 | 无码av最新清无码专区吞精 | 久久天天躁狠狠躁夜夜免费观看 | 国产精品二区一区二区aⅴ污介绍 | 在线播放亚洲第一字幕 | 国产精品久免费的黄网站 | 国产亚洲精品久久久久久国模美 | 综合激情五月综合激情五月激情1 | 欧美精品国产综合久久 | 亚洲欧美精品aaaaaa片 | 久久伊人色av天堂九九小黄鸭 | 成人一在线视频日韩国产 | 欧美性生交xxxxx久久久 | 国产另类ts人妖一区二区 | 成人av无码一区二区三区 | 小sao货水好多真紧h无码视频 | 欧美兽交xxxx×视频 | 99国产精品白浆在线观看免费 | 无码人妻久久一区二区三区不卡 | a片免费视频在线观看 | 精品一二三区久久aaa片 | 国产午夜精品一区二区三区嫩草 | 一个人免费观看的www视频 | 无码一区二区三区在线 | 国产精品手机免费 | 亚洲人成人无码网www国产 | 精品 日韩 国产 欧美 视频 | 乱人伦人妻中文字幕无码久久网 | 99久久人妻精品免费一区 | 亚洲中文字幕无码一久久区 | 中文字幕乱码中文乱码51精品 | 国产 精品 自在自线 | 国产亚洲美女精品久久久2020 | 乱中年女人伦av三区 | 麻豆蜜桃av蜜臀av色欲av | av在线亚洲欧洲日产一区二区 | 欧美老人巨大xxxx做受 | 特级做a爰片毛片免费69 | 午夜精品一区二区三区的区别 | 国产成人无码午夜视频在线观看 | 欧美丰满熟妇xxxx性ppx人交 | 在线亚洲高清揄拍自拍一品区 | 久久久久成人精品免费播放动漫 | 丝袜人妻一区二区三区 | 国产精品人妻一区二区三区四 | 亚洲日韩中文字幕在线播放 | 性生交片免费无码看人 | www国产亚洲精品久久久日本 | 97精品人妻一区二区三区香蕉 | 蜜臀aⅴ国产精品久久久国产老师 | 香蕉久久久久久av成人 | 亚洲成av人片在线观看无码不卡 | 最新国产麻豆aⅴ精品无码 | 国产人妻精品午夜福利免费 | 国产精品无码一区二区桃花视频 | 欧洲熟妇色 欧美 | 久久午夜无码鲁丝片 | 亚洲精品久久久久久一区二区 | 亚欧洲精品在线视频免费观看 | 四虎影视成人永久免费观看视频 | 久久熟妇人妻午夜寂寞影院 | 丰满人妻一区二区三区免费视频 | 成 人影片 免费观看 | 亚洲乱码日产精品bd | 无码免费一区二区三区 | 亚洲中文字幕无码中文字在线 | 亚洲欧美国产精品专区久久 | 啦啦啦www在线观看免费视频 | 任你躁在线精品免费 | 中文字幕人妻无码一夲道 | 无码人妻出轨黑人中文字幕 | 国产激情精品一区二区三区 | 国产成人无码av一区二区 | 少妇邻居内射在线 | а√天堂www在线天堂小说 | 四虎影视成人永久免费观看视频 | 高清国产亚洲精品自在久久 | 日本饥渴人妻欲求不满 | 国产精品美女久久久 | 精品午夜福利在线观看 | 超碰97人人做人人爱少妇 | 人妻体内射精一区二区三四 | 九九在线中文字幕无码 | 日本又色又爽又黄的a片18禁 | 人妻夜夜爽天天爽三区 | 久久成人a毛片免费观看网站 | 人妻体内射精一区二区三四 | 亚洲色偷偷男人的天堂 | 人妻天天爽夜夜爽一区二区 | 国产在线精品一区二区高清不卡 | 欧美喷潮久久久xxxxx | 亚洲色欲色欲欲www在线 | 狠狠噜狠狠狠狠丁香五月 | 人人妻人人澡人人爽欧美精品 | 欧美高清在线精品一区 | 亚洲aⅴ无码成人网站国产app | 精品偷自拍另类在线观看 | 亚洲成a人片在线观看无码3d | 久久久久久久久888 | 人人妻人人澡人人爽人人精品浪潮 | 1000部夫妻午夜免费 | 无码人妻黑人中文字幕 | 男女作爱免费网站 | 国产猛烈高潮尖叫视频免费 | 2019午夜福利不卡片在线 | 亚洲国产一区二区三区在线观看 | 永久黄网站色视频免费直播 | 国产两女互慰高潮视频在线观看 | 大地资源中文第3页 | 午夜男女很黄的视频 | 国产色视频一区二区三区 | 国产精品久久久久久亚洲毛片 | 亚洲 另类 在线 欧美 制服 | 亚洲成av人片天堂网无码】 | 亚洲色www成人永久网址 | 自拍偷自拍亚洲精品10p | 亚洲日韩一区二区三区 | 中文字幕 亚洲精品 第1页 | 性欧美熟妇videofreesex | 97色伦图片97综合影院 | 中文字幕乱妇无码av在线 | 男人扒开女人内裤强吻桶进去 | 国产香蕉尹人综合在线观看 | 国内揄拍国内精品少妇国语 | 沈阳熟女露脸对白视频 | 扒开双腿吃奶呻吟做受视频 | 亚洲 激情 小说 另类 欧美 | 国产无遮挡又黄又爽又色 | 国产亚洲日韩欧美另类第八页 | а√资源新版在线天堂 | 无码人妻久久一区二区三区不卡 | 久久国产精品二国产精品 | 国产人妻精品一区二区三区不卡 | 亚洲小说春色综合另类 | 300部国产真实乱 | 午夜精品久久久内射近拍高清 | 国产人妻人伦精品 | 麻花豆传媒剧国产免费mv在线 | 天堂久久天堂av色综合 | 巨爆乳无码视频在线观看 | 亚洲精品成a人在线观看 | 少妇的肉体aa片免费 | 午夜精品久久久久久久 | 国产精品永久免费视频 | 亚洲最大成人网站 | 欧美亚洲国产一区二区三区 | 欧美激情内射喷水高潮 | 扒开双腿吃奶呻吟做受视频 | 国产做国产爱免费视频 | 日本乱偷人妻中文字幕 | 日韩av无码一区二区三区 | 97色伦图片97综合影院 | 国产香蕉尹人综合在线观看 | 东京无码熟妇人妻av在线网址 | 亚洲aⅴ无码成人网站国产app | 国产精品爱久久久久久久 | 国产农村妇女高潮大叫 | 亚洲自偷自偷在线制服 | 一区二区三区高清视频一 | 无码av最新清无码专区吞精 | 又粗又大又硬又长又爽 | 久久久久se色偷偷亚洲精品av | 少女韩国电视剧在线观看完整 | 国产婷婷色一区二区三区在线 | 99精品久久毛片a片 | 伊人久久大香线蕉午夜 | 女人被男人躁得好爽免费视频 | 亚洲成av人影院在线观看 | 九一九色国产 | 性欧美疯狂xxxxbbbb | 国产三级久久久精品麻豆三级 | 亚洲一区二区三区国产精华液 | 领导边摸边吃奶边做爽在线观看 | 女人被爽到呻吟gif动态图视看 | 国产超级va在线观看视频 | 久久综合久久自在自线精品自 | 国产成人午夜福利在线播放 | 天堂亚洲2017在线观看 | 国内少妇偷人精品视频免费 | 国产精品99爱免费视频 | 久久99精品久久久久婷婷 | 亚洲高清偷拍一区二区三区 | 99久久久国产精品无码免费 | 窝窝午夜理论片影院 | 真人与拘做受免费视频 | 精品无码一区二区三区爱欲 | 国产成人综合色在线观看网站 | 亚洲综合在线一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 未满成年国产在线观看 | 日韩欧美成人免费观看 | 人妻无码久久精品人妻 | 久久综合香蕉国产蜜臀av | 思思久久99热只有频精品66 | 无码人妻丰满熟妇区毛片18 | 丰满肥臀大屁股熟妇激情视频 | 国产高清av在线播放 | 国产超碰人人爽人人做人人添 | 国产精品自产拍在线观看 | 精品无码一区二区三区的天堂 | 草草网站影院白丝内射 | 18禁黄网站男男禁片免费观看 | 正在播放老肥熟妇露脸 | 嫩b人妻精品一区二区三区 | 国产美女极度色诱视频www | 国产精品成人av在线观看 | 精品久久久中文字幕人妻 | 国产精品久久久久9999小说 | 一本久久伊人热热精品中文字幕 | 爽爽影院免费观看 | 亚洲成色在线综合网站 | 亚洲精品无码人妻无码 | 久久综合给久久狠狠97色 | 久久久婷婷五月亚洲97号色 | 国产精品99久久精品爆乳 | 日韩精品乱码av一区二区 | 国产在线精品一区二区三区直播 | 宝宝好涨水快流出来免费视频 | 国产成人无码午夜视频在线观看 | 国产国语老龄妇女a片 | 麻豆精品国产精华精华液好用吗 | 国产亚洲精品久久久久久 | 精品国偷自产在线 | 无套内射视频囯产 | 丰满少妇弄高潮了www | 无遮无挡爽爽免费视频 | 欧美人与物videos另类 | 真人与拘做受免费视频一 | 日日鲁鲁鲁夜夜爽爽狠狠 | 老太婆性杂交欧美肥老太 | 亚洲精品午夜无码电影网 | 131美女爱做视频 | 女人高潮内射99精品 | 国产99久久精品一区二区 | 国产极品视觉盛宴 | 久久综合给久久狠狠97色 | 亚洲人亚洲人成电影网站色 | 国产精品.xx视频.xxtv | 天天综合网天天综合色 | 欧美兽交xxxx×视频 | 青青草原综合久久大伊人精品 | 乱中年女人伦av三区 | 欧美 日韩 亚洲 在线 | 成人无码视频免费播放 | 好男人www社区 | 内射欧美老妇wbb | 亚洲精品美女久久久久久久 | 又紧又大又爽精品一区二区 | 狠狠躁日日躁夜夜躁2020 | 内射欧美老妇wbb | 午夜精品一区二区三区在线观看 | 人妻插b视频一区二区三区 | 欧美成人午夜精品久久久 | a国产一区二区免费入口 | 国产亚av手机在线观看 | 国产精品亚洲а∨无码播放麻豆 | 日本精品高清一区二区 | 免费无码av一区二区 | 精品偷拍一区二区三区在线看 | 久久亚洲国产成人精品性色 | 亚洲国产成人av在线观看 | 国产卡一卡二卡三 | 特黄特色大片免费播放器图片 | 免费无码一区二区三区蜜桃大 | 亚洲成熟女人毛毛耸耸多 | 亚洲精品无码人妻无码 | 日本成熟视频免费视频 | 亚洲毛片av日韩av无码 | 丝袜美腿亚洲一区二区 | 中文字幕无线码免费人妻 | 亚洲精品中文字幕乱码 | av无码久久久久不卡免费网站 | 欧美三级不卡在线观看 | 精品水蜜桃久久久久久久 | 久久精品国产99久久6动漫 | 亚洲爆乳精品无码一区二区三区 | 伊人久久大香线蕉午夜 | 国产人妻精品一区二区三区 | 免费看少妇作爱视频 | 十八禁真人啪啪免费网站 | 国产精品亚洲а∨无码播放麻豆 | 娇妻被黑人粗大高潮白浆 | 国产又爽又黄又刺激的视频 | 亚洲高清偷拍一区二区三区 | 一二三四在线观看免费视频 | 国内精品久久毛片一区二区 | 少妇性荡欲午夜性开放视频剧场 | 国产无套粉嫩白浆在线 | 国产va免费精品观看 | 天天拍夜夜添久久精品 | 成年美女黄网站色大免费全看 | 99久久精品日本一区二区免费 | 精品久久久中文字幕人妻 | 国产成人午夜福利在线播放 | 特黄特色大片免费播放器图片 | 性啪啪chinese东北女人 | 国产精品毛片一区二区 | 日本va欧美va欧美va精品 | 亚洲精品一区二区三区四区五区 | 熟妇人妻中文av无码 | 亚洲熟妇自偷自拍另类 | 精品亚洲韩国一区二区三区 | 99国产欧美久久久精品 | 亚洲中文无码av永久不收费 | 美女毛片一区二区三区四区 | 天天摸天天透天天添 | 麻豆蜜桃av蜜臀av色欲av | 国产精品资源一区二区 | 精品欧美一区二区三区久久久 | 5858s亚洲色大成网站www | 蜜臀aⅴ国产精品久久久国产老师 | 18无码粉嫩小泬无套在线观看 | 国产精品久久久 | 5858s亚洲色大成网站www | 久久视频在线观看精品 | 国产麻豆精品一区二区三区v视界 | 国产av无码专区亚洲a∨毛片 | 亚洲成av人综合在线观看 | 老熟妇仑乱视频一区二区 | 国产在线精品一区二区高清不卡 | 国产精品亚洲а∨无码播放麻豆 | 国产偷国产偷精品高清尤物 | 熟女少妇在线视频播放 | 久久久久久久女国产乱让韩 | 大乳丰满人妻中文字幕日本 | 撕开奶罩揉吮奶头视频 | 久久久精品欧美一区二区免费 | 久久伊人色av天堂九九小黄鸭 | 欧美阿v高清资源不卡在线播放 | 欧美日韩视频无码一区二区三 | 清纯唯美经典一区二区 | 天天做天天爱天天爽综合网 | 色窝窝无码一区二区三区色欲 | 人妻夜夜爽天天爽三区 | 婷婷五月综合激情中文字幕 | 兔费看少妇性l交大片免费 | 熟妇人妻无乱码中文字幕 | 成年美女黄网站色大免费全看 | 一本大道久久东京热无码av | 1000部夫妻午夜免费 | 欧美丰满老熟妇xxxxx性 | 永久免费观看美女裸体的网站 | 日本丰满熟妇videos | 久久成人a毛片免费观看网站 | 欧美性猛交内射兽交老熟妇 | 领导边摸边吃奶边做爽在线观看 | 国产内射爽爽大片视频社区在线 | 国产精品久久精品三级 | 综合网日日天干夜夜久久 | 红桃av一区二区三区在线无码av | 亚欧洲精品在线视频免费观看 | 99久久精品无码一区二区毛片 | 久久亚洲中文字幕无码 | 人妻少妇精品无码专区动漫 | 亚洲精品综合一区二区三区在线 | 熟妇人妻无码xxx视频 | 久久99精品久久久久婷婷 | 亚洲区欧美区综合区自拍区 | 免费无码av一区二区 | 一本无码人妻在中文字幕免费 | 欧美国产日韩亚洲中文 | 性欧美牲交xxxxx视频 | 日韩人妻无码中文字幕视频 | 久久午夜无码鲁丝片秋霞 | ass日本丰满熟妇pics | 亚洲一区二区三区在线观看网站 | 国产成人精品必看 | 欧美 日韩 亚洲 在线 | 国内少妇偷人精品视频 | 成人免费视频在线观看 | 成年美女黄网站色大免费全看 | 久久久久久九九精品久 | 久久精品视频在线看15 | 午夜理论片yy44880影院 | 国产精品亚洲五月天高清 | 亚洲精品午夜无码电影网 | 综合网日日天干夜夜久久 | 动漫av一区二区在线观看 | 亚洲精品久久久久久一区二区 | 一区二区三区乱码在线 | 欧洲 | 日韩 欧美 动漫 国产 制服 | 天堂亚洲免费视频 | 亚洲欧美中文字幕5发布 | 久久aⅴ免费观看 | 99精品视频在线观看免费 | 国产精品久久久久久亚洲毛片 | 国产无遮挡又黄又爽免费视频 | 99久久无码一区人妻 | 亚洲一区二区观看播放 | 中文字幕乱码亚洲无线三区 | 双乳奶水饱满少妇呻吟 | 97夜夜澡人人双人人人喊 | 国产亚洲精品久久久ai换 | 国产香蕉97碰碰久久人人 | 天天摸天天透天天添 | 在线a亚洲视频播放在线观看 | 香港三级日本三级妇三级 | 夜先锋av资源网站 | 蜜桃视频插满18在线观看 | 少妇性俱乐部纵欲狂欢电影 | 巨爆乳无码视频在线观看 | 97久久精品无码一区二区 | 偷窥村妇洗澡毛毛多 | 国产乱人无码伦av在线a | 18禁黄网站男男禁片免费观看 | 红桃av一区二区三区在线无码av | 欧美激情综合亚洲一二区 | 纯爱无遮挡h肉动漫在线播放 | 国产精品福利视频导航 | 无码av免费一区二区三区试看 | 丰满少妇高潮惨叫视频 | 亚洲欧美日韩国产精品一区二区 | 少妇性l交大片欧洲热妇乱xxx | 国产肉丝袜在线观看 | 人妻少妇精品无码专区动漫 | 欧美精品无码一区二区三区 | 亚洲综合久久一区二区 | 人人澡人人妻人人爽人人蜜桃 | 国产熟女一区二区三区四区五区 | 久久婷婷五月综合色国产香蕉 | 国产凸凹视频一区二区 | 成人三级无码视频在线观看 | 国产亚洲欧美在线专区 | 午夜精品一区二区三区的区别 | 亚洲最大成人网站 | 国产精品第一区揄拍无码 | 俺去俺来也www色官网 | 亚洲s码欧洲m码国产av | 国产精品自产拍在线观看 | 国产特级毛片aaaaaaa高清 | 超碰97人人做人人爱少妇 | 国产精品久久久久久久影院 | 玩弄人妻少妇500系列视频 | 国产深夜福利视频在线 | 欧美日本精品一区二区三区 | 中文字幕乱码中文乱码51精品 | 久久久国产精品无码免费专区 | 正在播放老肥熟妇露脸 | 伊人久久大香线蕉av一区二区 | 国产乱子伦视频在线播放 | 国产精品高潮呻吟av久久4虎 | 性欧美熟妇videofreesex | 国产精品久久久av久久久 | 国产精品人人妻人人爽 | 天堂无码人妻精品一区二区三区 | 女人被男人爽到呻吟的视频 | 国产9 9在线 | 中文 | 国产欧美亚洲精品a | 性啪啪chinese东北女人 | 亚洲精品一区三区三区在线观看 | 极品嫩模高潮叫床 | 国产av久久久久精东av | 少妇久久久久久人妻无码 | 亚洲经典千人经典日产 | 少妇高潮一区二区三区99 | 成人一在线视频日韩国产 | 亚洲欧美日韩国产精品一区二区 | 又色又爽又黄的美女裸体网站 | 欧洲vodafone精品性 | 黑人玩弄人妻中文在线 | 小鲜肉自慰网站xnxx | 日韩少妇白浆无码系列 | 国产 浪潮av性色四虎 | 欧美放荡的少妇 | 亚洲精品中文字幕乱码 | 大胆欧美熟妇xx | 精品国产青草久久久久福利 | www国产亚洲精品久久久日本 | 中文字幕人妻无码一夲道 | 国产亚洲tv在线观看 | 国内综合精品午夜久久资源 | 亚洲国精产品一二二线 | 亚洲色在线无码国产精品不卡 | 国产一区二区三区四区五区加勒比 | 成 人 网 站国产免费观看 | 内射巨臀欧美在线视频 | 亚洲成熟女人毛毛耸耸多 | 麻豆国产97在线 | 欧洲 | 国产精品久久国产三级国 | 九九综合va免费看 | 在线成人www免费观看视频 | 国产人妖乱国产精品人妖 | 欧美xxxxx精品 | 精品无码av一区二区三区 | 乱码av麻豆丝袜熟女系列 | 老子影院午夜伦不卡 | 国产在线精品一区二区高清不卡 | 国产99久久精品一区二区 | 人妻夜夜爽天天爽三区 | 女人被男人躁得好爽免费视频 | 亚欧洲精品在线视频免费观看 | 帮老师解开蕾丝奶罩吸乳网站 | 国产超级va在线观看视频 | 国产亚洲视频中文字幕97精品 | 狠狠色噜噜狠狠狠7777奇米 | 性欧美videos高清精品 | aⅴ亚洲 日韩 色 图网站 播放 | 熟女俱乐部五十路六十路av | 亚洲国产精品无码一区二区三区 | 国产超级va在线观看视频 | 久久精品中文闷骚内射 | 好男人社区资源 | 九九在线中文字幕无码 | 扒开双腿疯狂进出爽爽爽视频 | 日韩av无码一区二区三区不卡 | 国产区女主播在线观看 | 扒开双腿疯狂进出爽爽爽视频 | 宝宝好涨水快流出来免费视频 | 天天躁夜夜躁狠狠是什么心态 | 男人的天堂av网站 | 精品人妻中文字幕有码在线 | 国产黑色丝袜在线播放 | 日韩精品久久久肉伦网站 | 未满小14洗澡无码视频网站 | 国产成人精品必看 | 亚洲国产成人a精品不卡在线 | 任你躁国产自任一区二区三区 | 色 综合 欧美 亚洲 国产 | 夜精品a片一区二区三区无码白浆 | 成人女人看片免费视频放人 | 亚洲日本一区二区三区在线 | 在线 国产 欧美 亚洲 天堂 | 三上悠亚人妻中文字幕在线 | 国产一精品一av一免费 | 学生妹亚洲一区二区 | 夜夜躁日日躁狠狠久久av | 东京一本一道一二三区 | 熟妇人妻无乱码中文字幕 | 日韩亚洲欧美精品综合 | 男女爱爱好爽视频免费看 | 久久久无码中文字幕久... | 亚洲日韩一区二区 | 国产深夜福利视频在线 | 99视频精品全部免费免费观看 | 又黄又爽又色的视频 | 亚洲综合在线一区二区三区 | 亚洲高清偷拍一区二区三区 | 一个人免费观看的www视频 | 国产艳妇av在线观看果冻传媒 | 亚洲精品一区二区三区在线观看 | 3d动漫精品啪啪一区二区中 | 午夜福利一区二区三区在线观看 | 少妇高潮一区二区三区99 | 中文字幕 亚洲精品 第1页 | 夜夜高潮次次欢爽av女 | 熟女体下毛毛黑森林 | 少妇高潮一区二区三区99 | 四虎国产精品一区二区 | 亚洲爆乳精品无码一区二区三区 | a国产一区二区免费入口 | 强辱丰满人妻hd中文字幕 | 国产激情艳情在线看视频 | 人妻少妇精品无码专区二区 | 亚洲中文字幕va福利 | 国产黑色丝袜在线播放 | 午夜精品一区二区三区的区别 | 亚洲欧美综合区丁香五月小说 | 国产人妻人伦精品 | 人人妻人人澡人人爽欧美一区九九 | 无码吃奶揉捏奶头高潮视频 | 国产极品视觉盛宴 | 亚洲国产精品久久久天堂 | 一本久久a久久精品亚洲 | 激情内射亚州一区二区三区爱妻 | 麻豆果冻传媒2021精品传媒一区下载 | 丰满人妻被黑人猛烈进入 | 国产欧美精品一区二区三区 | 亚洲国产综合无码一区 | 无码吃奶揉捏奶头高潮视频 | 人妻插b视频一区二区三区 | 国产亚洲人成a在线v网站 | 精品国产一区二区三区四区在线看 | 成年女人永久免费看片 | 日本熟妇浓毛 | 欧美国产日韩久久mv | 精品国产成人一区二区三区 | 女人色极品影院 | 国产成人无码a区在线观看视频app | 色诱久久久久综合网ywww | 成人精品天堂一区二区三区 | 人人妻人人澡人人爽欧美精品 | 亚洲成a人片在线观看日本 | 亚洲色大成网站www | 亚洲精品午夜无码电影网 | 99久久无码一区人妻 | 亚洲精品久久久久久久久久久 | 一本精品99久久精品77 | 亚洲中文字幕av在天堂 | 亚洲国产精品美女久久久久 | 国产猛烈高潮尖叫视频免费 | 乱人伦人妻中文字幕无码 | 国产在线精品一区二区三区直播 | 西西人体www44rt大胆高清 | 免费无码肉片在线观看 | 日本熟妇人妻xxxxx人hd | а天堂中文在线官网 | 极品嫩模高潮叫床 | 88国产精品欧美一区二区三区 | 99视频精品全部免费免费观看 | 天堂а√在线地址中文在线 | 亚洲gv猛男gv无码男同 | 精品国产aⅴ无码一区二区 | 亚洲精品综合一区二区三区在线 | 熟女俱乐部五十路六十路av | 牲交欧美兽交欧美 | 在线a亚洲视频播放在线观看 | 色婷婷香蕉在线一区二区 | 内射后入在线观看一区 | 永久免费精品精品永久-夜色 | 激情内射亚州一区二区三区爱妻 | 日韩成人一区二区三区在线观看 | 又大又黄又粗又爽的免费视频 | 国产麻豆精品精东影业av网站 | 天堂久久天堂av色综合 | 国产在线aaa片一区二区99 | 亚洲国产高清在线观看视频 | 娇妻被黑人粗大高潮白浆 | 亚洲人交乣女bbw | 国内老熟妇对白xxxxhd | 中文字幕人妻无码一区二区三区 | 2020最新国产自产精品 | 六月丁香婷婷色狠狠久久 | 99riav国产精品视频 | 国精产品一区二区三区 | 久久亚洲日韩精品一区二区三区 | 亚洲一区二区三区无码久久 | 午夜精品久久久久久久 | 在线精品国产一区二区三区 | 中文字幕久久久久人妻 | 国产精品无套呻吟在线 | 精品国产一区二区三区av 性色 | 玩弄人妻少妇500系列视频 | 麻豆av传媒蜜桃天美传媒 | 丰满少妇高潮惨叫视频 | 两性色午夜视频免费播放 | 中文字幕日产无线码一区 | 国产精品内射视频免费 | 国产精品对白交换视频 | 中文字幕无码日韩专区 | 亚洲欧美色中文字幕在线 | 国产又粗又硬又大爽黄老大爷视 | 狠狠综合久久久久综合网 | 亚洲国产一区二区三区在线观看 | 夜夜影院未满十八勿进 | 精品厕所偷拍各类美女tp嘘嘘 | 久久精品国产大片免费观看 | 中文字幕无码乱人伦 | 熟妇人妻无码xxx视频 | 国产人妻大战黑人第1集 | 永久免费精品精品永久-夜色 | 亚洲中文字幕久久无码 | 国产精品第一国产精品 | 国产在线一区二区三区四区五区 | 亚洲欧美精品伊人久久 | 国产成人无码av在线影院 | 午夜理论片yy44880影院 | 色一情一乱一伦一视频免费看 | 曰本女人与公拘交酡免费视频 | 精品熟女少妇av免费观看 | 欧美日韩一区二区免费视频 | 无码人妻丰满熟妇区五十路百度 | 欧美国产日产一区二区 | 精品无码成人片一区二区98 | 国产精品亚洲一区二区三区喷水 | 天堂在线观看www | 国产色视频一区二区三区 | 亚洲中文字幕在线无码一区二区 | 熟女少妇人妻中文字幕 | 久久精品国产99久久6动漫 | 久久久久99精品国产片 | 日本熟妇人妻xxxxx人hd | av香港经典三级级 在线 | 国产精品沙发午睡系列 | 丰腴饱满的极品熟妇 | 嫩b人妻精品一区二区三区 | 国产激情精品一区二区三区 | 又紧又大又爽精品一区二区 | 国内丰满熟女出轨videos | 国产va免费精品观看 | 狠狠色欧美亚洲狠狠色www | 国产极品美女高潮无套在线观看 | 国产亚洲人成a在线v网站 | 精品国产一区二区三区四区 | 久久99国产综合精品 | 国产av人人夜夜澡人人爽麻豆 | 久久精品国产一区二区三区 | 亚洲精品中文字幕 | 一个人看的www免费视频在线观看 | 亚洲gv猛男gv无码男同 | 亚洲 日韩 欧美 成人 在线观看 | 国产成人精品必看 | 国产一区二区三区日韩精品 | 欧美喷潮久久久xxxxx | 午夜熟女插插xx免费视频 | a在线观看免费网站大全 | 露脸叫床粗话东北少妇 | 99精品无人区乱码1区2区3区 | 美女毛片一区二区三区四区 | 无套内谢的新婚少妇国语播放 | 99视频精品全部免费免费观看 | 亚洲精品午夜无码电影网 | 爱做久久久久久 | 久久国产精品二国产精品 | 牲交欧美兽交欧美 | 内射后入在线观看一区 | 欧美成人午夜精品久久久 | 高清不卡一区二区三区 | 国产乡下妇女做爰 | 日韩人妻无码中文字幕视频 | 国产成人综合色在线观看网站 | 亚洲精品久久久久久久久久久 | 久久久无码中文字幕久... | 免费无码的av片在线观看 | 成人无码精品一区二区三区 | 成人动漫在线观看 | 学生妹亚洲一区二区 | 亚洲 另类 在线 欧美 制服 | 日本熟妇浓毛 | 国产激情精品一区二区三区 | 四虎永久在线精品免费网址 | 夜夜夜高潮夜夜爽夜夜爰爰 | 内射爽无广熟女亚洲 | 99久久久无码国产精品免费 | 久久人人97超碰a片精品 | 国产成人精品视频ⅴa片软件竹菊 | 精品国产福利一区二区 | 久久99精品国产麻豆蜜芽 | 国产精品无套呻吟在线 | 性生交片免费无码看人 | 麻花豆传媒剧国产免费mv在线 | 国产特级毛片aaaaaa高潮流水 | 国产精品无套呻吟在线 | 国产真实夫妇视频 | 国产麻豆精品一区二区三区v视界 | 国产两女互慰高潮视频在线观看 | 国产在线精品一区二区高清不卡 | 色综合久久久久综合一本到桃花网 | 欧美人与物videos另类 | 久久99精品国产.久久久久 | 色爱情人网站 | 精品人妻中文字幕有码在线 | 国产精品理论片在线观看 | 中文字幕无码av激情不卡 | 永久免费观看美女裸体的网站 | 国产在线一区二区三区四区五区 | 亚洲综合无码一区二区三区 | 亚洲成av人片在线观看无码不卡 | 色婷婷av一区二区三区之红樱桃 | 国内揄拍国内精品少妇国语 | 国产又爽又黄又刺激的视频 | 国产两女互慰高潮视频在线观看 | 蜜臀aⅴ国产精品久久久国产老师 | 熟妇女人妻丰满少妇中文字幕 | 强伦人妻一区二区三区视频18 | 亚洲国产综合无码一区 | 精品熟女少妇av免费观看 | 2020久久香蕉国产线看观看 | 国产激情精品一区二区三区 | 国产熟妇高潮叫床视频播放 | 欧美性生交活xxxxxdddd | 国产偷抇久久精品a片69 | 成人一在线视频日韩国产 | 99久久精品午夜一区二区 | 色噜噜亚洲男人的天堂 | 午夜精品一区二区三区的区别 | 大胆欧美熟妇xx | 国产午夜亚洲精品不卡 | 日本www一道久久久免费榴莲 | 曰本女人与公拘交酡免费视频 | 日本乱人伦片中文三区 | 67194成是人免费无码 | 国产两女互慰高潮视频在线观看 | aa片在线观看视频在线播放 | 人妻少妇精品无码专区二区 | 亚洲日本va中文字幕 | 1000部啪啪未满十八勿入下载 | 久久久久亚洲精品中文字幕 | 国产婷婷色一区二区三区在线 | www成人国产高清内射 | 国产精品资源一区二区 | 超碰97人人射妻 | 久久精品国产一区二区三区肥胖 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲精品鲁一鲁一区二区三区 | 97资源共享在线视频 | 麻豆国产97在线 | 欧洲 | 中文字幕人妻无码一夲道 | 麻豆果冻传媒2021精品传媒一区下载 | 日韩人妻少妇一区二区三区 | 国产亚洲精品久久久ai换 | 国产极品美女高潮无套在线观看 | 呦交小u女精品视频 | 永久免费观看国产裸体美女 | 国产精品福利视频导航 | 少妇性荡欲午夜性开放视频剧场 | 中文字幕无码av波多野吉衣 | 亚洲欧美日韩成人高清在线一区 | 亚洲精品国产第一综合99久久 | 国产精品第一区揄拍无码 | 亚洲天堂2017无码 | 亲嘴扒胸摸屁股激烈网站 | 无码人妻久久一区二区三区不卡 | 国产av无码专区亚洲a∨毛片 | 国产精品资源一区二区 | 黑人大群体交免费视频 | 狂野欧美性猛xxxx乱大交 | 东北女人啪啪对白 | 97久久超碰中文字幕 | 久久久久久亚洲精品a片成人 | 久久综合激激的五月天 | 亚洲中文字幕va福利 | 中文字幕无线码免费人妻 | 美女张开腿让人桶 | 亚洲综合另类小说色区 | 人妻中文无码久热丝袜 | 乱码午夜-极国产极内射 | 少妇人妻av毛片在线看 | 婷婷六月久久综合丁香 | 亚洲中文字幕av在天堂 | 国产成人精品视频ⅴa片软件竹菊 | 人妻夜夜爽天天爽三区 | 欧美xxxx黑人又粗又长 | 色情久久久av熟女人妻网站 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 狠狠色噜噜狠狠狠7777奇米 | 无码人妻出轨黑人中文字幕 | 久久久久久国产精品无码下载 | 大屁股大乳丰满人妻 | 一本无码人妻在中文字幕免费 | 国内丰满熟女出轨videos | 黑森林福利视频导航 | 免费男性肉肉影院 | 国产成人一区二区三区在线观看 | 国产免费观看黄av片 | 久久精品人人做人人综合 | 又粗又大又硬又长又爽 | 偷窥日本少妇撒尿chinese | 欧美一区二区三区视频在线观看 | 国产办公室秘书无码精品99 | 久久久久久久女国产乱让韩 | 精品国产麻豆免费人成网站 | 国产午夜无码精品免费看 | 久热国产vs视频在线观看 | 久久国语露脸国产精品电影 | 麻花豆传媒剧国产免费mv在线 | 国产精品美女久久久网av | 亚洲毛片av日韩av无码 | 国产高清不卡无码视频 | 亚洲自偷精品视频自拍 | 久久99精品国产麻豆 | 麻豆国产丝袜白领秘书在线观看 | 成人免费视频视频在线观看 免费 | 欧美一区二区三区 | 久久无码人妻影院 | 日本一区二区更新不卡 | 色综合视频一区二区三区 | 人妻无码久久精品人妻 | 国产精品高潮呻吟av久久4虎 | 大乳丰满人妻中文字幕日本 | 精品久久久中文字幕人妻 | 玩弄少妇高潮ⅹxxxyw | 亚洲午夜久久久影院 | 欧美精品在线观看 | 国产在线aaa片一区二区99 | 性欧美牲交在线视频 | 久久久久久久人妻无码中文字幕爆 | 亚洲综合久久一区二区 | 性欧美熟妇videofreesex | 国产精品亚洲专区无码不卡 | 最近的中文字幕在线看视频 | 久久久精品欧美一区二区免费 | 欧美黑人性暴力猛交喷水 | 亚洲中文字幕乱码av波多ji | 亚洲欧美日韩成人高清在线一区 | 中文久久乱码一区二区 | 午夜丰满少妇性开放视频 | 三上悠亚人妻中文字幕在线 | 女人被爽到呻吟gif动态图视看 | 久久久久久亚洲精品a片成人 | 三级4级全黄60分钟 | 国产精品高潮呻吟av久久 | 天堂无码人妻精品一区二区三区 | 99久久精品日本一区二区免费 | а√天堂www在线天堂小说 | 天堂а√在线中文在线 | 天堂在线观看www | 日本熟妇浓毛 | 国产精品人人妻人人爽 | 国内揄拍国内精品少妇国语 | 国产精品无码永久免费888 | 国产一区二区三区四区五区加勒比 | 亚洲精品一区二区三区大桥未久 | 亚洲色在线无码国产精品不卡 | 久久精品女人天堂av免费观看 | 国产成人无码一二三区视频 | 亚洲第一无码av无码专区 | 曰韩无码二三区中文字幕 | 99久久婷婷国产综合精品青草免费 | 波多野结衣乳巨码无在线观看 | 欧洲vodafone精品性 | 国产成人无码av在线影院 | 欧洲vodafone精品性 | 亚洲欧美色中文字幕在线 | 国产精品久久久久久亚洲毛片 | 国产亚洲人成在线播放 | 无码国模国产在线观看 | 男人和女人高潮免费网站 | 午夜精品久久久久久久久 | 国产亲子乱弄免费视频 | 99久久人妻精品免费一区 | 人妻少妇精品无码专区二区 | 精品久久久无码中文字幕 | 欧美肥老太牲交大战 | 丰满少妇熟乱xxxxx视频 | 中文字幕无码乱人伦 | 97精品国产97久久久久久免费 | 麻花豆传媒剧国产免费mv在线 | 爆乳一区二区三区无码 | 日韩无套无码精品 | 香港三级日本三级妇三级 | 成人毛片一区二区 | 鲁一鲁av2019在线 | 欧美喷潮久久久xxxxx | 婷婷五月综合缴情在线视频 | 国产成人精品一区二区在线小狼 | 亚洲精品美女久久久久久久 | 亚洲va中文字幕无码久久不卡 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 97se亚洲精品一区 | 扒开双腿疯狂进出爽爽爽视频 | 久久久中文字幕日本无吗 | 欧美人与牲动交xxxx | 精品成人av一区二区三区 | 无码中文字幕色专区 | 亚洲精品国产品国语在线观看 | 精品国产乱码久久久久乱码 | 成人片黄网站色大片免费观看 | 久久精品国产日本波多野结衣 | 亚洲小说春色综合另类 | 女人高潮内射99精品 | 成人毛片一区二区 | 巨爆乳无码视频在线观看 | 亚洲狠狠色丁香婷婷综合 | 免费无码午夜福利片69 | 欧美性猛交内射兽交老熟妇 | 亚洲成在人网站无码天堂 | 最近中文2019字幕第二页 | 免费男性肉肉影院 | 中文字幕av日韩精品一区二区 | 色婷婷久久一区二区三区麻豆 | 日韩亚洲欧美中文高清在线 | 黄网在线观看免费网站 | 少妇性俱乐部纵欲狂欢电影 | 性欧美大战久久久久久久 | 国产精品福利视频导航 | 亚洲 欧美 激情 小说 另类 | 久久国产精品萌白酱免费 | 国产精品99久久精品爆乳 | 人人澡人人透人人爽 | 日本护士xxxxhd少妇 | 国产明星裸体无码xxxx视频 | 性欧美videos高清精品 | 天天燥日日燥 | 双乳奶水饱满少妇呻吟 | 亚洲 欧美 激情 小说 另类 | 日产精品高潮呻吟av久久 | 无码人妻丰满熟妇区毛片18 | 人妻中文无码久热丝袜 | 六十路熟妇乱子伦 | 夜夜躁日日躁狠狠久久av | 国产午夜精品一区二区三区嫩草 | 无码播放一区二区三区 | 日产精品99久久久久久 | 欧美性色19p | 日欧一片内射va在线影院 | 国产av剧情md精品麻豆 | 亚洲日韩一区二区三区 | 欧美亚洲日韩国产人成在线播放 | 日韩精品无码免费一区二区三区 | 亚洲 欧美 激情 小说 另类 | 久久久婷婷五月亚洲97号色 | 无套内谢老熟女 | 国产在线精品一区二区三区直播 | 无套内谢的新婚少妇国语播放 | 精品久久久无码中文字幕 | 久久无码人妻影院 | 午夜精品一区二区三区在线观看 | 18禁黄网站男男禁片免费观看 | 亚洲另类伦春色综合小说 | 色窝窝无码一区二区三区色欲 | 久久人人爽人人爽人人片av高清 | 色五月五月丁香亚洲综合网 | 欧美日韩综合一区二区三区 | 理论片87福利理论电影 | 少妇无码av无码专区在线观看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 久久久av男人的天堂 | 国产在线一区二区三区四区五区 | 国产亚洲欧美日韩亚洲中文色 | 高清不卡一区二区三区 | 亚洲成a人片在线观看无码 | 成在人线av无码免观看麻豆 | 亚洲日韩一区二区三区 | 在线观看国产一区二区三区 | 亚洲精品久久久久avwww潮水 | 激情五月综合色婷婷一区二区 | 欧美国产日产一区二区 | 小sao货水好多真紧h无码视频 | 久久久精品456亚洲影院 | 强伦人妻一区二区三区视频18 | 亚洲の无码国产の无码影院 | 国产精品对白交换视频 | 欧美日韩一区二区综合 | 国产亚洲精品久久久久久久 | 丰满少妇女裸体bbw | 国产办公室秘书无码精品99 | 老司机亚洲精品影院无码 | 国产av人人夜夜澡人人爽麻豆 | 蜜臀av在线播放 久久综合激激的五月天 | www国产亚洲精品久久网站 | 国产亚av手机在线观看 | 成人无码视频免费播放 | 噜噜噜亚洲色成人网站 | 丰满肥臀大屁股熟妇激情视频 | 一本一道久久综合久久 | 日本护士毛茸茸高潮 | 纯爱无遮挡h肉动漫在线播放 | 久久久成人毛片无码 | 麻豆蜜桃av蜜臀av色欲av | 精品国产国产综合精品 | 亚洲精品久久久久久久久久久 | 内射巨臀欧美在线视频 | 给我免费的视频在线观看 | 亚洲国产精华液网站w | 无码精品国产va在线观看dvd | 两性色午夜免费视频 | www成人国产高清内射 | 97久久超碰中文字幕 | 免费观看黄网站 | 国产99久久精品一区二区 | 97夜夜澡人人爽人人喊中国片 | 免费中文字幕日韩欧美 | 天天拍夜夜添久久精品大 | www国产亚洲精品久久久日本 | 欧美精品无码一区二区三区 | 无码任你躁久久久久久久 | 日本精品久久久久中文字幕 | 性做久久久久久久久 | 国产精品第一区揄拍无码 | 男女猛烈xx00免费视频试看 | 天堂а√在线中文在线 | 日韩精品成人一区二区三区 | 国产在线一区二区三区四区五区 | 丰满岳乱妇在线观看中字无码 | 131美女爱做视频 | 女人被男人躁得好爽免费视频 | 久久久婷婷五月亚洲97号色 | 日产精品高潮呻吟av久久 | 成年美女黄网站色大免费视频 | 久久国产精品精品国产色婷婷 | 97人妻精品一区二区三区 | 亚洲精品欧美二区三区中文字幕 | 国产色视频一区二区三区 | 乱人伦人妻中文字幕无码久久网 | 内射后入在线观看一区 | 六十路熟妇乱子伦 | 76少妇精品导航 | 久久亚洲a片com人成 | 成人性做爰aaa片免费看不忠 | 国产电影无码午夜在线播放 | 亚洲 欧美 激情 小说 另类 | 人妻无码久久精品人妻 | 成人aaa片一区国产精品 | www一区二区www免费 | 俄罗斯老熟妇色xxxx | 红桃av一区二区三区在线无码av | 精品国产青草久久久久福利 | 美女张开腿让人桶 | 人人妻人人澡人人爽欧美一区 | 18禁黄网站男男禁片免费观看 | 国产精品久久福利网站 | 又黄又爽又色的视频 | 日韩欧美群交p片內射中文 | 特级做a爰片毛片免费69 | 性欧美熟妇videofreesex | 99精品视频在线观看免费 | 强伦人妻一区二区三区视频18 | 国产特级毛片aaaaaa高潮流水 | 亚洲自偷自拍另类第1页 | 亚洲精品综合五月久久小说 | 黑人巨大精品欧美一区二区 | 久久国产精品二国产精品 | 久久精品国产精品国产精品污 | 国产超级va在线观看视频 | www国产亚洲精品久久网站 | 蜜桃视频插满18在线观看 | 无码精品国产va在线观看dvd | 国产午夜亚洲精品不卡 | 老司机亚洲精品影院 | 又大又硬又爽免费视频 | 图片小说视频一区二区 | 国产激情无码一区二区app | 欧美日韩人成综合在线播放 | 一本久久伊人热热精品中文字幕 | 亚洲乱亚洲乱妇50p | 无码中文字幕色专区 | 男人扒开女人内裤强吻桶进去 | 国产九九九九九九九a片 | 国产黄在线观看免费观看不卡 | 水蜜桃av无码 | 日本xxxx色视频在线观看免费 | 国产在线精品一区二区高清不卡 | 最新国产乱人伦偷精品免费网站 | 亚洲日韩av一区二区三区中文 | 老太婆性杂交欧美肥老太 | 人人妻人人澡人人爽精品欧美 | 精品国产aⅴ无码一区二区 | 午夜福利电影 | 99久久无码一区人妻 | 偷窥日本少妇撒尿chinese | 97资源共享在线视频 | 日韩视频 中文字幕 视频一区 | 日产精品99久久久久久 | 国产福利视频一区二区 | 动漫av网站免费观看 | 少妇性l交大片 | 欧美丰满熟妇xxxx | 鲁一鲁av2019在线 | 青青草原综合久久大伊人精品 | 免费中文字幕日韩欧美 | 国产人妖乱国产精品人妖 | 亚洲狠狠色丁香婷婷综合 | 色婷婷久久一区二区三区麻豆 | 国产午夜无码视频在线观看 | 亚洲の无码国产の无码步美 | 亚洲综合另类小说色区 | 国产尤物精品视频 | 清纯唯美经典一区二区 | 国精产品一品二品国精品69xx | 亚洲精品国产第一综合99久久 | 亚洲男人av天堂午夜在 | aⅴ亚洲 日韩 色 图网站 播放 | 2020最新国产自产精品 | 久久久成人毛片无码 | 鲁大师影院在线观看 | 精品少妇爆乳无码av无码专区 | 国产美女精品一区二区三区 | 玩弄中年熟妇正在播放 | 51国偷自产一区二区三区 | 牲欲强的熟妇农村老妇女视频 | 亚洲自偷自拍另类第1页 | 日本大香伊一区二区三区 | 精品人妻人人做人人爽夜夜爽 | 中文字幕日产无线码一区 | 午夜成人1000部免费视频 | 久久精品女人的天堂av | 久久99精品久久久久久 | 免费无码一区二区三区蜜桃大 | 国产激情无码一区二区 | 亚洲熟妇色xxxxx欧美老妇y | 在线观看国产一区二区三区 | 亚洲第一无码av无码专区 | 麻豆果冻传媒2021精品传媒一区下载 | 国产精品久久久午夜夜伦鲁鲁 | 久久亚洲中文字幕精品一区 | 又粗又大又硬毛片免费看 | 熟妇人妻激情偷爽文 | 亚洲爆乳精品无码一区二区三区 | 国产乱人伦偷精品视频 | 亚洲欧美中文字幕5发布 | 国产偷国产偷精品高清尤物 | 亚洲综合无码久久精品综合 | 久久久精品欧美一区二区免费 | 国产综合色产在线精品 | 久久人人爽人人爽人人片av高清 | 亚洲精品国产精品乱码视色 | 国产香蕉尹人综合在线观看 | 好屌草这里只有精品 | 国产精品99久久精品爆乳 | 日本精品人妻无码77777 天堂一区人妻无码 | 1000部夫妻午夜免费 | 国产综合在线观看 | 日本欧美一区二区三区乱码 | 18禁黄网站男男禁片免费观看 | 免费无码av一区二区 | 亚洲成av人片天堂网无码】 | 狠狠色欧美亚洲狠狠色www | 欧美性猛交内射兽交老熟妇 | 蜜桃av抽搐高潮一区二区 | 激情五月综合色婷婷一区二区 | 激情五月综合色婷婷一区二区 | 乱人伦人妻中文字幕无码 | 日韩亚洲欧美精品综合 | 噜噜噜亚洲色成人网站 | 中文字幕无码人妻少妇免费 | 亚洲日韩av一区二区三区四区 | 亚洲国产精品美女久久久久 | 亚洲男人av天堂午夜在 | 国产成人精品三级麻豆 | 色婷婷av一区二区三区之红樱桃 | 国产成人一区二区三区在线观看 | 亚洲s色大片在线观看 | 熟妇人妻中文av无码 | 日本大香伊一区二区三区 | 欧美三级a做爰在线观看 | 国产高清av在线播放 | 亚洲精品国产第一综合99久久 | 久久亚洲精品中文字幕无男同 | 午夜精品久久久久久久 | 日日鲁鲁鲁夜夜爽爽狠狠 | 日韩亚洲欧美精品综合 | 久激情内射婷内射蜜桃人妖 | 撕开奶罩揉吮奶头视频 | 欧美老熟妇乱xxxxx | 亚洲阿v天堂在线 | 中文字幕av伊人av无码av | 国产熟妇另类久久久久 | 夜精品a片一区二区三区无码白浆 | 性做久久久久久久免费看 | 国产手机在线αⅴ片无码观看 | 国产精品理论片在线观看 | 精品aⅴ一区二区三区 | 久久亚洲日韩精品一区二区三区 | 奇米影视888欧美在线观看 | 嫩b人妻精品一区二区三区 | 国产精品国产自线拍免费软件 | 国产偷国产偷精品高清尤物 | 九一九色国产 | 扒开双腿吃奶呻吟做受视频 | 在线播放亚洲第一字幕 | 大色综合色综合网站 | 久久综合给合久久狠狠狠97色 | 欧美丰满少妇xxxx性 | 中文字幕人妻无码一夲道 | 我要看www免费看插插视频 | 亚洲s色大片在线观看 | 色窝窝无码一区二区三区色欲 | 三上悠亚人妻中文字幕在线 | 色综合久久久无码网中文 | 午夜精品一区二区三区在线观看 | 久久zyz资源站无码中文动漫 | 亚洲自偷自偷在线制服 | 国产精品成人av在线观看 | 国产亚洲精品久久久ai换 | 老熟女重囗味hdxx69 | 无码av免费一区二区三区试看 | 性色欲情网站iwww九文堂 | 亚洲热妇无码av在线播放 | 特黄特色大片免费播放器图片 | 男人扒开女人内裤强吻桶进去 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚欧洲精品在线视频免费观看 | 国产在线精品一区二区高清不卡 | 国产香蕉尹人综合在线观看 | 亚洲熟悉妇女xxx妇女av | 波多野42部无码喷潮在线 | 日本熟妇大屁股人妻 | 久久精品国产一区二区三区肥胖 | 久久久久免费看成人影片 | 午夜无码人妻av大片色欲 | 久久亚洲精品成人无码 | 成人免费视频在线观看 | 5858s亚洲色大成网站www | av小次郎收藏 | 欧美丰满少妇xxxx性 | 六十路熟妇乱子伦 | www成人国产高清内射 | 国产婷婷色一区二区三区在线 | 自拍偷自拍亚洲精品10p | 成 人 免费观看网站 | 在线a亚洲视频播放在线观看 | 欧美黑人性暴力猛交喷水 | 午夜精品久久久久久久 | 日本xxxx色视频在线观看免费 | 国产av剧情md精品麻豆 | 日韩亚洲欧美精品综合 | 国产精品亚洲一区二区三区喷水 | 无码任你躁久久久久久久 | 任你躁国产自任一区二区三区 | 国产人成高清在线视频99最全资源 | 国产精品高潮呻吟av久久 | 真人与拘做受免费视频 | 丁香花在线影院观看在线播放 | 亚洲国产欧美在线成人 | 丰腴饱满的极品熟妇 | 国内精品人妻无码久久久影院蜜桃 | 纯爱无遮挡h肉动漫在线播放 | 7777奇米四色成人眼影 | 日韩少妇白浆无码系列 | 日日躁夜夜躁狠狠躁 | 亚洲国产精品无码一区二区三区 | 亚洲欧美日韩成人高清在线一区 | 国产9 9在线 | 中文 | 又大又硬又爽免费视频 | 奇米影视888欧美在线观看 | 亚洲爆乳精品无码一区二区三区 | 日本精品高清一区二区 | 国产亚洲精品久久久久久国模美 | 精品无码一区二区三区的天堂 | 国产亲子乱弄免费视频 | 成人毛片一区二区 | 免费人成网站视频在线观看 | 无码人妻精品一区二区三区下载 | 久久99精品国产麻豆蜜芽 | 精品国产一区二区三区四区在线看 | 国产精品多人p群无码 | 久久久精品成人免费观看 | www国产亚洲精品久久久日本 | 国产乱码精品一品二品 | 成人性做爰aaa片免费看不忠 | 国产激情精品一区二区三区 | 九九热爱视频精品 | 国产舌乚八伦偷品w中 | 中文亚洲成a人片在线观看 | 欧美日韩综合一区二区三区 | 午夜精品一区二区三区的区别 | 国产av一区二区精品久久凹凸 | 欧美日韩久久久精品a片 | 无套内谢的新婚少妇国语播放 | 亚洲精品无码国产 | 国内丰满熟女出轨videos | 超碰97人人射妻 | 国产精品亚洲专区无码不卡 | 99麻豆久久久国产精品免费 | 久久综合给久久狠狠97色 | 极品嫩模高潮叫床 | 一本久久伊人热热精品中文字幕 | 天天躁夜夜躁狠狠是什么心态 | 无码人妻精品一区二区三区不卡 | 九九综合va免费看 | 4hu四虎永久在线观看 | 国产欧美精品一区二区三区 | 日韩av无码中文无码电影 | 国产特级毛片aaaaaaa高清 | 久久久精品成人免费观看 | 国产真实乱对白精彩久久 | 欧美日韩亚洲国产精品 | 国产成人无码av在线影院 | 国内老熟妇对白xxxxhd | 强开小婷嫩苞又嫩又紧视频 | 精品久久8x国产免费观看 | 一本色道婷婷久久欧美 | 亚洲精品www久久久 | 在线天堂新版最新版在线8 | 国产两女互慰高潮视频在线观看 | 精品国产精品久久一区免费式 | 亚洲色大成网站www国产 | 久久精品一区二区三区四区 | 狠狠色噜噜狠狠狠7777奇米 | 国产熟女一区二区三区四区五区 | 荡女精品导航 | 亚洲精品www久久久 | 国产人妻大战黑人第1集 | 天天拍夜夜添久久精品大 | 人妻夜夜爽天天爽三区 | 国产成人午夜福利在线播放 | 国产在线aaa片一区二区99 | 亚洲一区二区三区无码久久 | 久久久精品456亚洲影院 | 国产午夜福利100集发布 | 蜜桃视频韩日免费播放 | 51国偷自产一区二区三区 | 亚洲综合在线一区二区三区 | 性开放的女人aaa片 | 成人精品天堂一区二区三区 | 国产乱人伦av在线无码 | 精品欧洲av无码一区二区三区 | 黑人大群体交免费视频 | 久久人人爽人人爽人人片av高清 | 成人av无码一区二区三区 | 中文字幕+乱码+中文字幕一区 | 欧美日韩色另类综合 | 亚洲中文字幕在线观看 | 午夜无码人妻av大片色欲 | 成人欧美一区二区三区黑人 | 99re在线播放 | 亚洲精品无码人妻无码 | 九九久久精品国产免费看小说 | 成在人线av无码免观看麻豆 | 四虎4hu永久免费 | 国产精品第一区揄拍无码 | 亚洲精品www久久久 | 久久午夜无码鲁丝片 | 日韩av无码中文无码电影 | 99精品国产综合久久久久五月天 | 无码人妻少妇伦在线电影 | 精品偷拍一区二区三区在线看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲另类伦春色综合小说 | 欧美35页视频在线观看 | 亚洲精品成人av在线 | 国产精品永久免费视频 | 99久久久无码国产aaa精品 | 在线精品国产一区二区三区 | 麻豆国产人妻欲求不满谁演的 | 高清不卡一区二区三区 | 久久国语露脸国产精品电影 | 人人妻在人人 | av无码久久久久不卡免费网站 | 亚洲成a人一区二区三区 | 一区二区传媒有限公司 | 99久久99久久免费精品蜜桃 | 人人爽人人澡人人高潮 | 97资源共享在线视频 | 国产精品毛片一区二区 | 国产偷抇久久精品a片69 | 理论片87福利理论电影 | 亚洲gv猛男gv无码男同 | 一本色道久久综合亚洲精品不卡 | 久久 国产 尿 小便 嘘嘘 | 野外少妇愉情中文字幕 | 国产精品第一国产精品 | 精品国偷自产在线 | 欧美色就是色 | 国产精品99久久精品爆乳 | 国产av无码专区亚洲awww | 无码人妻精品一区二区三区下载 | 亚洲а∨天堂久久精品2021 | 成 人 免费观看网站 | 中国大陆精品视频xxxx | 一本久道久久综合狠狠爱 | 国产精品自产拍在线观看 | 性开放的女人aaa片 | 国产人妻精品午夜福利免费 | 成人无码视频在线观看网站 | 亚洲经典千人经典日产 | 久9re热视频这里只有精品 | 亚洲伊人久久精品影院 | 亚洲精品久久久久avwww潮水 | 日本大乳高潮视频在线观看 | 激情五月综合色婷婷一区二区 | 曰本女人与公拘交酡免费视频 | 亚洲高清偷拍一区二区三区 | 99久久精品无码一区二区毛片 | 学生妹亚洲一区二区 | 精品偷拍一区二区三区在线看 | a在线观看免费网站大全 | 麻豆蜜桃av蜜臀av色欲av | 狠狠躁日日躁夜夜躁2020 | 欧美freesex黑人又粗又大 | 亚洲精品无码人妻无码 | 人妻无码αv中文字幕久久琪琪布 | 精品国产aⅴ无码一区二区 | 国产精品无码一区二区三区不卡 | 亚洲成av人片在线观看无码不卡 | 日韩在线不卡免费视频一区 | 97久久超碰中文字幕 | 少妇厨房愉情理9仑片视频 | 国产精品无码一区二区桃花视频 | a在线亚洲男人的天堂 | 无码人妻精品一区二区三区下载 | 国产精品无码永久免费888 | 亚洲精品鲁一鲁一区二区三区 | 女人被男人爽到呻吟的视频 | 丰腴饱满的极品熟妇 | 日本一区二区更新不卡 | 国产亚洲人成a在线v网站 | 久久综合九色综合欧美狠狠 | 无码国内精品人妻少妇 | 蜜臀av无码人妻精品 | 麻豆国产人妻欲求不满 | 无码毛片视频一区二区本码 | 色窝窝无码一区二区三区色欲 | 波多野结衣一区二区三区av免费 | 牲交欧美兽交欧美 | 亚洲中文字幕va福利 | 国精产品一区二区三区 | 四虎影视成人永久免费观看视频 | 亚洲人成网站色7799 | 性生交大片免费看女人按摩摩 | 亚洲综合无码久久精品综合 | 亚洲精品美女久久久久久久 | 在线播放亚洲第一字幕 | 亚洲高清偷拍一区二区三区 | 色综合天天综合狠狠爱 | 欧美乱妇无乱码大黄a片 | 国产精品亚洲lv粉色 | 国产精品人妻一区二区三区四 | 久久久精品成人免费观看 | 天堂无码人妻精品一区二区三区 | 人妻插b视频一区二区三区 | 377p欧洲日本亚洲大胆 | 国产无套粉嫩白浆在线 | aa片在线观看视频在线播放 | 丰满妇女强制高潮18xxxx | 国产av无码专区亚洲awww | 成人精品视频一区二区三区尤物 | 亚洲色成人中文字幕网站 | 日日躁夜夜躁狠狠躁 | 精品无码国产一区二区三区av | 麻豆蜜桃av蜜臀av色欲av | 思思久久99热只有频精品66 | 欧美野外疯狂做受xxxx高潮 | 亚洲日本在线电影 | 国产口爆吞精在线视频 | 亚洲国产精品无码久久久久高潮 | 亚洲欧美日韩成人高清在线一区 | aa片在线观看视频在线播放 | 亚洲一区二区三区无码久久 | 亚洲中文字幕在线观看 | 色婷婷av一区二区三区之红樱桃 | 人妻天天爽夜夜爽一区二区 | 亚洲国产欧美在线成人 | 国产精品亚洲综合色区韩国 | 久久综合激激的五月天 | 少妇太爽了在线观看 | 少女韩国电视剧在线观看完整 | 中文无码精品a∨在线观看不卡 | 国产成人精品三级麻豆 | 99久久亚洲精品无码毛片 | 呦交小u女精品视频 | 亚洲欧洲日本无在线码 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 欧洲vodafone精品性 | 国产超碰人人爽人人做人人添 | 色老头在线一区二区三区 | 国产亚洲精品久久久久久国模美 | 亚洲国产精品成人久久蜜臀 | √天堂资源地址中文在线 | 欧美人与牲动交xxxx | 亚洲天堂2017无码中文 | 国产免费观看黄av片 | 性生交大片免费看女人按摩摩 | 国产亚洲美女精品久久久2020 | 亚洲热妇无码av在线播放 | 久久无码中文字幕免费影院蜜桃 | 午夜嘿嘿嘿影院 | av香港经典三级级 在线 | 日本在线高清不卡免费播放 | 国色天香社区在线视频 | 欧美人与物videos另类 | 九九久久精品国产免费看小说 | 色婷婷久久一区二区三区麻豆 | 亚欧洲精品在线视频免费观看 | 亚洲一区av无码专区在线观看 | 日本高清一区免费中文视频 | 水蜜桃色314在线观看 | 中文字幕 亚洲精品 第1页 | 国产成人精品一区二区在线小狼 | 国产精品va在线观看无码 | 国产色在线 | 国产 | 精品人妻人人做人人爽 | 天天躁日日躁狠狠躁免费麻豆 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 丰满少妇高潮惨叫视频 | 最近中文2019字幕第二页 | 亚洲中文字幕成人无码 | 久久99精品国产麻豆 | 无码免费一区二区三区 | а天堂中文在线官网 | 亚洲の无码国产の无码步美 | 亚洲精品成人av在线 | 人人澡人人透人人爽 | 欧美黑人巨大xxxxx | 大色综合色综合网站 | 香港三级日本三级妇三级 | 精品无码国产一区二区三区av | 国产精品va在线观看无码 | 午夜精品久久久久久久 | 国产成人无码a区在线观看视频app | 日韩精品乱码av一区二区 | 午夜免费福利小电影 | 少妇人妻av毛片在线看 | 亚洲欧洲中文日韩av乱码 | 成年美女黄网站色大免费视频 | 亚洲第一无码av无码专区 | 激情五月综合色婷婷一区二区 | 强伦人妻一区二区三区视频18 | 国产xxx69麻豆国语对白 | 亚洲国产一区二区三区在线观看 | 亚洲精品久久久久中文第一幕 | 理论片87福利理论电影 | 奇米影视888欧美在线观看 | 色欲人妻aaaaaaa无码 | 亚洲爆乳无码专区 | 高清无码午夜福利视频 | 成人三级无码视频在线观看 | 自拍偷自拍亚洲精品被多人伦好爽 | 99久久99久久免费精品蜜桃 | 国产熟女一区二区三区四区五区 | 亚洲啪av永久无码精品放毛片 | 丰满人妻被黑人猛烈进入 | 东京热一精品无码av | 天堂а√在线中文在线 | 久久99久久99精品中文字幕 | 国产尤物精品视频 | 亚洲精品国产品国语在线观看 | 欧美精品在线观看 | 成人aaa片一区国产精品 | 国产情侣作爱视频免费观看 | 欧美 日韩 亚洲 在线 | 成人三级无码视频在线观看 | 色窝窝无码一区二区三区色欲 | 波多野结衣高清一区二区三区 | 丰满肥臀大屁股熟妇激情视频 | 无码成人精品区在线观看 | 日韩av无码中文无码电影 | √天堂中文官网8在线 | 六十路熟妇乱子伦 | 午夜精品久久久内射近拍高清 | 国产精品久久久久久久9999 | 国产人妻久久精品二区三区老狼 | 亚洲国产精品美女久久久久 | 国产综合久久久久鬼色 | 玩弄人妻少妇500系列视频 | 蜜臀aⅴ国产精品久久久国产老师 | 久久婷婷五月综合色国产香蕉 | 乱中年女人伦av三区 | 大地资源中文第3页 | 精品国偷自产在线视频 | 人人爽人人爽人人片av亚洲 | 亚洲中文字幕乱码av波多ji | 无码吃奶揉捏奶头高潮视频 | 少妇邻居内射在线 | 亚洲精品国产精品乱码不卡 | 日本免费一区二区三区最新 | 对白脏话肉麻粗话av | 免费无码午夜福利片69 | 97精品国产97久久久久久免费 | 亚洲精品无码国产 | 波多野42部无码喷潮在线 | 丰满人妻被黑人猛烈进入 | 午夜肉伦伦影院 | 色一情一乱一伦一视频免费看 | 国产精品多人p群无码 | 亚洲无人区午夜福利码高清完整版 | 欧美人与物videos另类 | 波多野结衣av在线观看 | 中文字幕乱码中文乱码51精品 | 麻豆成人精品国产免费 | 娇妻被黑人粗大高潮白浆 | 国产麻豆精品一区二区三区v视界 | 亚洲国产欧美国产综合一区 | 日日摸天天摸爽爽狠狠97 | 三级4级全黄60分钟 | 狂野欧美激情性xxxx | 久久伊人色av天堂九九小黄鸭 | 久久精品国产一区二区三区 | 黑人巨大精品欧美一区二区 | 熟妇女人妻丰满少妇中文字幕 | 午夜精品一区二区三区在线观看 | 日欧一片内射va在线影院 | 日日碰狠狠丁香久燥 | 亚洲欧美精品伊人久久 | 亚洲熟妇自偷自拍另类 | 久久久精品欧美一区二区免费 | 麻花豆传媒剧国产免费mv在线 | 色欲久久久天天天综合网精品 |