日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++串口通信原理及读写与操作

發(fā)布時(shí)間:2023/12/18 c/c++ 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++串口通信原理及读写与操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://wangbaiyuan.cn/c-serial-communication-write-reading.html

?

?

[展開]文章目錄

?

在工業(yè)控制中,工控機(jī)(一般都基于Windows平臺(tái))經(jīng)常需要與智能儀表通過串口進(jìn)行通信。串口通信方便易行,應(yīng)用廣泛。

一般情況下,工控機(jī)和各智能儀表通過RS485總線進(jìn)行通信。RS485的通信方式是半雙工的,只能由作為主節(jié)點(diǎn)的工控PC機(jī)依次輪詢網(wǎng)絡(luò)上的各智能控制單元子節(jié)點(diǎn)。每次通信都是由PC機(jī)通過串口向智能控制單元發(fā)布命令,智能控制單元在接收到正確的命令后作出應(yīng)答。

在Win32下,可以使用兩種編程方式實(shí)現(xiàn)串口通信,其一是使用ActiveX控件,這種方法程序簡單,但欠靈活。其二是調(diào)用Windows的API函數(shù),這種方法可以清楚地掌握串口通信的機(jī)制,并且自由靈活。本文我們只介紹API串口通信部分。

串口的操作可以有兩種操作方式:同步操作方式和重疊操作方式(又稱為異步操作方式)。

同步操作時(shí),API函數(shù)會(huì)阻塞直到操作完成以后才能返回(在多線程方式中,雖然不會(huì)阻塞主線程,但是仍然會(huì)阻塞監(jiān)聽線程);而重疊操作方式,API函數(shù)會(huì)立即返回,操作在后臺(tái)進(jìn)行,避免線程的阻塞。

無論那種操作方式,一般都通過四個(gè)步驟來完成:

  • (1) 打開串口
  • (2) 配置串口
  • (3) 讀寫串口
  • (4) 關(guān)閉串口

1、打開串口

Win32系統(tǒng)把文件的概念進(jìn)行了擴(kuò)展。無論是文件、通信設(shè)備、命名管道、郵件槽、磁盤、還是控制臺(tái),都是用API函數(shù)CreateFile來打開或創(chuàng)建的。該函數(shù)的原型為:

C++代碼

?

1

HANDLE?CreateFile(?LPCTSTR?lpFileName,?DWORD?dwDesiredAccess,?DWORD?dwShareMode,?LPSECURITY_ATTRIBUTES?lpSecurityAttributes,?DWORD?dwCreationDistribution,?DWORD?dwFlagsAndAttributes,?HANDLE?hTemplateFile);

  • lpFileName:將要打開的串口邏輯名,如"COM1";
  • dwDesiredAccess:指定串口訪問的類型,可以是讀取、寫入或二者并列;
  • dwShareMode:指定共享屬性,由于串口不能共享,該參數(shù)必須置為0;
  • lpSecurityAttributes:引用安全性屬性結(jié)構(gòu),缺省值為NULL;
  • dwCreationDistribution:創(chuàng)建標(biāo)志,對(duì)串口操作該參數(shù)必須置為OPEN_EXISTING;
  • dwFlagsAndAttributes:屬性描述,用于指定該串口是否進(jìn)行異步操作,該值為FILE_FLAG_OVERLAPPED,表示使用異步的I/O;該值為0,表示同步I/O操作;
  • hTemplateFile:對(duì)串口而言該參數(shù)必須置為NULL。

同步I/O方式打開串口的示例代碼:C++代碼

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

HANDLE?hCom;?//全局變量,串口句柄

hCom=CreateFile("COM1",//COM1口

GENERIC_READ|GENERIC_WRITE,?//允許讀和寫

0,?//獨(dú)占方式

NULL,

OPEN_EXISTING,?//打開而不是創(chuàng)建

0,?//同步方式

NULL);

if(hCom==(HANDLE)-1)

{

AfxMessageBox("打開COM失敗!");

return?FALSE;

}

return?TRUE;

?

重疊I/O打開串口的示例代碼:

C++代碼

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

HANDLE?hCom;?//全局變量,串口句柄

hCom?=CreateFile("COM1",?//COM1口

GENERIC_READ|GENERIC_WRITE,?//允許讀和寫

0,?//獨(dú)占方式

NULL,

OPEN_EXISTING,?//打開而不是創(chuàng)建

FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,?//重疊方式

NULL);

if(hCom?==INVALID_HANDLE_VALUE)

{

AfxMessageBox("打開COM失敗!");

return?FALSE;

}

return?TRUE;

?

2、配置串口

在打開通訊設(shè)備句柄后,常常需要對(duì)串口進(jìn)行一些初始化配置工作。這需要通過一個(gè)DCB結(jié)構(gòu)來進(jìn)行。DCB結(jié)構(gòu)包含了諸如波特率、數(shù)據(jù)位數(shù)、奇偶校驗(yàn)和停止位數(shù)等信息。在查詢或配置串口的屬性時(shí),都要用DCB結(jié)構(gòu)來作為緩沖區(qū)。

一般用CreateFile打開串口后,可以調(diào)用GetCommState函數(shù)來獲取串口的初始配置。要修改串口的配置,應(yīng)該先修改DCB結(jié)構(gòu),然后再調(diào)用SetCommState函數(shù)設(shè)置串口。
DCB結(jié)構(gòu)包含了串口的各項(xiàng)參數(shù)設(shè)置,下面僅介紹幾個(gè)該結(jié)構(gòu)常用的變量:

typedef struct _DCB{ ………

DWORD BaudRate;//波特率,指定通信設(shè)備的傳輸速率。這個(gè)成員可以是實(shí)際波特率值或者下面的常量值之一:? CBR_110,CBR_300,CBR_600,CBR_1200,CBR_2400,CBR_4800,CBR_9600,CBR_19200, CBR_38400, CBR_56000, CBR_57600, CBR_115200, CBR_128000, CBR_256000, CBR_14400

DWORD fParity; // 指定奇偶校驗(yàn)使能。若此成員為1,允許奇偶校驗(yàn)檢查 …

BYTE ByteSize; // 通信字節(jié)位數(shù),4—8

BYTE Parity; //指定奇偶校驗(yàn)方法。此成員可以有下列值: EVENPARITY 偶校驗(yàn) NOPARITY 無校驗(yàn) MARKPARITY 標(biāo)記校驗(yàn) ODDPARITY 奇校驗(yàn)

BYTE StopBits; //指定停止位的位數(shù)。此成員可以有下列值: ONESTOPBIT 1位停止位 TWOSTOPBITS 2位停止位
ON 5STOPBITS?? 1.5位停止位
GetCommState函數(shù)可以獲得COM口的設(shè)備控制塊,從而獲得相關(guān)參數(shù):

?

1

2

3

4

5

BOOL?GetCommState(

HANDLE?hFile,?//標(biāo)識(shí)通訊端口的句柄

LPDCB?lpDCB?//指向一個(gè)設(shè)備控制塊(DCB結(jié)構(gòu))的指針 );

SetCommState函數(shù)設(shè)置COM口的設(shè)備控制塊:

BOOL?SetCommState(?HANDLE?hFile,?LPDCB?lpDCB?);

?

除了在BCD中的設(shè)置外,程序一般還需要設(shè)置I/O緩沖區(qū)的大小和超時(shí)。Windows用I/O緩沖區(qū)來暫存串口輸入和輸出的數(shù)據(jù)。如果通信的速率較高,則應(yīng)該設(shè)置較大的緩沖區(qū)。調(diào)用SetupComm函數(shù)可以設(shè)置串行口的輸入和輸出緩沖區(qū)的大小。
BOOL SetupComm( HANDLE hFile, // 通信設(shè)備的句柄

DWORD dwInQueue, // 輸入緩沖區(qū)的大小(字節(jié)數(shù))

DWORD dwOutQueue // 輸出緩沖區(qū)的大小(字節(jié)數(shù)) );
在用ReadFile和WriteFile讀寫串行口時(shí),需要考慮超時(shí)問題。超時(shí)的作用是在指定的時(shí)間內(nèi)沒有讀入或發(fā)送指定數(shù)量的字符,ReadFile或WriteFile的操作仍然會(huì)結(jié)束。
要查詢當(dāng)前的超時(shí)設(shè)置應(yīng)調(diào)用GetCommTimeouts函數(shù),該函數(shù)會(huì)填充一個(gè)COMMTIMEOUTS結(jié)構(gòu)。調(diào)用SetCommTimeouts可以用某一個(gè)COMMTIMEOUTS結(jié)構(gòu)的內(nèi)容來設(shè)置超時(shí)。
讀寫串口的超時(shí)有兩種:間隔超時(shí)和總超時(shí)。間隔超時(shí)是指在接收時(shí)兩個(gè)字符之間的最大時(shí)延。總超時(shí)是指讀寫操作總共花費(fèi)的最大時(shí)間。寫操作只支持總超時(shí),而讀操作兩種超時(shí)均支持。用COMMTIMEOUTS結(jié)構(gòu)可以規(guī)定讀寫操作的超時(shí)。
COMMTIMEOUTS結(jié)構(gòu)的定義為:

?

1

2

3

4

5

6

7

typedef?struct?_COMMTIMEOUTS?{

DWORD?ReadIntervalTimeout;?//讀間隔超時(shí)

DWORD?ReadTotalTimeoutMultiplier;?//讀時(shí)間系數(shù)

DWORD?ReadTotalTimeoutConstant;?//讀時(shí)間常量

DWORD?WriteTotalTimeoutMultiplier;?// 寫時(shí)間系數(shù)

DWORD?WriteTotalTimeoutConstant;?//寫時(shí)間常量

}?COMMTIMEOUTS,*LPCOMMTIMEOUTS;

?

COMMTIMEOUTS結(jié)構(gòu)的成員都以毫秒為單位。

總超時(shí)的計(jì)算公式是:總超時(shí)=時(shí)間系數(shù)×要求讀/寫的字符數(shù)+時(shí)間常量
例如,要讀入10個(gè)字符,那么讀操作的總超時(shí)的計(jì)算公式為:
讀總超時(shí)=ReadTotalTimeoutMultiplier×10+ReadTotalTimeoutConstant
可以看出:間隔超時(shí)和總超時(shí)的設(shè)置是不相關(guān)的,這可以方便通信程序靈活地設(shè)置各種超時(shí)。

如果所有寫超時(shí)參數(shù)均為0,那么就不使用寫超時(shí)。如果ReadIntervalTimeout為0,那么就不使用讀間隔超時(shí)。如果ReadTotalTimeoutMultiplier 和 ReadTotalTimeoutConstant 都為0,則不使用讀總超時(shí)。如果讀間隔超時(shí)被設(shè)置成MAXDWORD并且讀時(shí)間系數(shù)和讀時(shí)間常量都為0,那么在讀一次輸入緩沖區(qū)的內(nèi)容后讀操作就立即返回,而不管是否讀入了要求的字符。
在用重疊方式讀寫串口時(shí),雖然ReadFile和WriteFile在完成操作以前就可能返回,但超時(shí)仍然是起作用的。在這種情況下,超時(shí)規(guī)定的是操作的完成時(shí)間,而不是ReadFile和WriteFile的返回時(shí)間。

配置串口的示例代碼:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

SetupComm(hCom,1024,1024);?//輸入緩沖區(qū)和輸出緩沖區(qū)的大小都是1024

COMMTIMEOUTS?TimeOuts;?//設(shè)定讀超時(shí)

TimeOuts.ReadIntervalTimeout=1000;

TimeOuts.ReadTotalTimeoutMultiplier=500;

TimeOuts.ReadTotalTimeoutConstant=5000;?//設(shè)定寫超時(shí)

TimeOuts.WriteTotalTimeoutMultiplier=500;

TimeOuts.WriteTotalTimeoutConstant=2000;

SetCommTimeouts(hCom,&TimeOuts);?//設(shè)置超時(shí)

DCB?dcb;

GetCommState(hCom,&dcb);

dcb.BaudRate=9600;?//波特率為9600

dcb.ByteSize=8;?//每個(gè)字節(jié)有8位

dcb.Parity=NOPARITY;?//無奇偶校驗(yàn)位

dcb.StopBits=TWOSTOPBITS;?//兩個(gè)停止位

SetCommState(hCom,&dcb);

PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR);

?

在讀寫串口之前,還要用PurgeComm()函數(shù)清空緩沖區(qū),該函數(shù)原型:
BOOL PurgeComm( HANDLE hFile, //串口句柄

DWORD dwFlags // 需要完成的操作 );
參數(shù)dwFlags指定要完成的操作,可以是下列值的組合:
PURGE_TXABORT 中斷所有寫操作并立即返回,即使寫操作還沒有完成。

PURGE_RXABORT 中斷所有讀操作并立即返回,即使讀操作還沒有完成。

PURGE_TXCLEAR 清除輸出緩沖區(qū)

PURGE_RXCLEAR 清除輸入緩沖區(qū)

3、讀寫串口

我們使用ReadFile和WriteFile讀寫串口,下面是兩個(gè)函數(shù)的聲明:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

BOOL?ReadFile(?HANDLE?hFile,?//串口的句柄

// 讀入的數(shù)據(jù)存儲(chǔ)的地址,

// 即讀入的數(shù)據(jù)將存儲(chǔ)在以該指針的值為首地址的一片內(nèi)存區(qū)

LPVOID?lpBuffer,

// 要讀入的數(shù)據(jù)的字節(jié)數(shù)

DWORD?nNumberOfBytesToRead,

// 指向一個(gè)DWORD數(shù)值,該數(shù)值返回讀操作實(shí)際讀入的字節(jié)數(shù)

LPDWORD?lpNumberOfBytesRead,

// 重疊操作時(shí),該參數(shù)指向一個(gè)OVERLAPPED結(jié)構(gòu),同步操作時(shí),該參數(shù)為NULL。

LPOVERLAPPED?lpOverlapped?);

BOOL?WriteFile(?HANDLE?hFile,?//串口的句柄

// 寫入的數(shù)據(jù)存儲(chǔ)的地址,

// 即以該指針的值為首地址的

LPCVOID?lpBuffer,

//要寫入的數(shù)據(jù)的字節(jié)數(shù)

DWORD?nNumberOfBytesToWrite,

// 指向指向一個(gè)DWORD數(shù)值,該數(shù)值返回實(shí)際寫入的字節(jié)數(shù)

LPDWORD?lpNumberOfBytesWritten,

// 重疊操作時(shí),該參數(shù)指向一個(gè)OVERLAPPED結(jié)構(gòu),

// 同步操作時(shí),該參數(shù)為NULL。

LPOVERLAPPED?lpOverlapped?);

在用ReadFile和WriteFile讀寫串口時(shí),既可以同步執(zhí)行,也可以重疊執(zhí)行。在同步執(zhí)行時(shí),函數(shù)直到操作完成后才返回。這意味著同步執(zhí)行時(shí)線程會(huì)被阻塞,從而導(dǎo)致效率下降。在重疊執(zhí)行時(shí),即使操作還未完成,這兩個(gè)函數(shù)也會(huì)立即返回,費(fèi)時(shí)的I/O操作在后臺(tái)進(jìn)行。
ReadFile和WriteFile函數(shù)是同步還是異步由CreateFile函數(shù)決定,如果在調(diào)用CreateFile創(chuàng)建句柄時(shí)指定了FILE_FLAG_OVERLAPPED標(biāo)志,那么調(diào)用ReadFile和WriteFile對(duì)該句柄進(jìn)行的操作就應(yīng)該是重疊的;如果未指定重疊標(biāo)志,則讀寫操作應(yīng)該是同步的。ReadFile和WriteFile函數(shù)的同步或者異步應(yīng)該和CreateFile函數(shù)相一致。
ReadFile函數(shù)只要在串口輸入緩沖區(qū)中讀入指定數(shù)量的字符,就算完成操作。而WriteFile函數(shù)不但要把指定數(shù)量的字符拷入到輸出緩沖區(qū),而且要等這些字符從串行口送出去后才算完成操作。
如果操作成功,這兩個(gè)函數(shù)都返回TRUE。需要注意的是,當(dāng)ReadFile和WriteFile返回FALSE時(shí),不一定就是操作失敗,線程應(yīng)該調(diào)用GetLastError函數(shù)分析返回的結(jié)果。例如,在重疊操作時(shí)如果操作還未完成函數(shù)就返回,那么函數(shù)就返回FALSE,而且GetLastError函數(shù)返回ERROR_IO_PENDING。這說明重疊操作還未完成。

同步方式讀寫串口比較簡單,下面先例舉同步方式讀寫串口的代碼:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

//同步讀串口

?

char?str[100];

?

DWORD?wCount;//讀取的字節(jié)數(shù)

?

BOOL?bReadStat;

?

bReadStat=ReadFile(hCom,str,100,&wCount,NULL);

?

if(!bReadStat)?{?AfxMessageBox("讀串口失敗!");?return?FALSE;?}?return?TRUE;?//同步寫串口

?

char?lpOutBuffer[100];

?

DWORD?dwBytesWrite=100;

?

COMSTAT?ComStat;

?

DWORD?dwErrorFlags;

?

BOOL?bWriteStat;

?

ClearCommError(hCom,&dwErrorFlags,&ComStat);

?

bWriteStat=WriteFile(hCom,lpOutBuffer,dwBytesWrite,&?dwBytesWrite,NULL);

?

if(!bWriteStat)?{?AfxMessageBox("寫串口失敗!");?}

?

PurgeComm(hCom,?PURGE_TXABORT|?PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);

?

在重疊操作時(shí),操作還未完成函數(shù)就返回。

重疊I/O非常靈活,它也可以實(shí)現(xiàn)阻塞(例如我們可以設(shè)置一定要讀取到一個(gè)數(shù)據(jù)才能進(jìn)行到下一步操作)。有兩種方法可以等待操作完成:一種方法是用象WaitForSingleObject這樣的等待函數(shù)來等待OVERLAPPED結(jié)構(gòu)的hEvent成員;另一種方法是調(diào)用GetOverlappedResult函數(shù)等待,后面將演示說明。
下面我們先簡單說一下OVERLAPPED結(jié)構(gòu)和GetOverlappedResult函數(shù):
OVERLAPPED結(jié)構(gòu)
OVERLAPPED結(jié)構(gòu)包含了重疊I/O的一些信息,定義如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

typedef?struct?_OVERLAPPED?{?// o

?

DWORD?Internal;

?

DWORD?InternalHigh;

?

DWORD?Offset;

?

DWORD?OffsetHigh;

?

HANDLE?hEvent;

?

}?OVERLAPPED;

?

在使用ReadFile和WriteFile重疊操作時(shí),線程需要?jiǎng)?chuàng)建OVERLAPPED結(jié)構(gòu)以供這兩個(gè)函數(shù)使用。線程通過OVERLAPPED結(jié)構(gòu)獲得當(dāng)前的操作狀態(tài),該結(jié)構(gòu)最重要的成員是hEvent。hEvent是讀寫事件。當(dāng)串口使用異步通訊時(shí),函數(shù)返回時(shí)操作可能還沒有完成,程序可以通過檢查該事件得知是否讀寫完畢。
當(dāng)調(diào)用ReadFile, WriteFile 函數(shù)的時(shí)候,該成員會(huì)自動(dòng)被置為無信號(hào)狀態(tài);當(dāng)重疊操作完成后,該成員變量會(huì)自動(dòng)被置為有信號(hào)狀態(tài)。
GetOverlappedResult函數(shù) BOOL GetOverlappedResult( HANDLE hFile, // 串口的句柄 // 指向重疊操作開始時(shí)指定的OVERLAPPED結(jié)構(gòu) LPOVERLAPPED lpOverlapped, // 指向一個(gè)32位變量,該變量的值返回實(shí)際讀寫操作傳輸?shù)淖止?jié)數(shù)。 LPDWORD lpNumberOfBytesTransferred, // 該參數(shù)用于指定函數(shù)是否一直等到重疊操作結(jié)束。 // 如果該參數(shù)為TRUE,函數(shù)直到操作結(jié)束才返回。 // 如果該參數(shù)為FALSE,函數(shù)直接返回,這時(shí)如果操作沒有完成, // 通過調(diào)用GetLastError()函數(shù)會(huì)返回ERROR_IO_INCOMPLETE。 BOOL bWait );
該函數(shù)返回重疊操作的結(jié)果,用來判斷異步操作是否完成,它是通過判斷OVERLAPPED結(jié)構(gòu)中的hEvent是否被置位來實(shí)現(xiàn)的。

異步讀串口的示例代碼:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

char?lpInBuffer[1024];

?

DWORD?dwBytesRead=1024;

?

COMSTAT?ComStat;

?

DWORD?dwErrorFlags;

?

OVERLAPPED?m_osRead;

?

memset(&m_osRead,0,sizeof(OVERLAPPED));

?

m_osRead.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);

?

ClearCommError(hCom,&dwErrorFlags,&ComStat);

?

dwBytesRead=min(dwBytesRead,(DWORD)ComStat.cbInQue);

?

if(!dwBytesRead)?return?FALSE;

?

BOOL?bReadStatus;

?

bReadStatus=ReadFile(hCom,lpInBuffer,?dwBytesRead,&dwBytesRead,&m_osRead);

?

if(!bReadStatus)

?

//如果ReadFile函數(shù)返回FALSE

?

{

?

if(GetLastError()==ERROR_IO_PENDING)

?

//GetLastError()函數(shù)返回ERROR_IO_PENDING,表明串口正在進(jìn)行讀操作

?

{

?

WaitForSingleObject(m_osRead.hEvent,2000);

?

//使用WaitForSingleObject函數(shù)等待,直到讀操作完成或延時(shí)已達(dá)到2秒鐘

?

//當(dāng)串口讀操作進(jìn)行完畢后,m_osRead的hEvent事件會(huì)變?yōu)橛行盘?hào)

?

PurgeComm(hCom,?PURGE_TXABORT|?PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);

?

return?dwBytesRead;

?

}

?

return?0;

?

}

?

PurgeComm(hCom,?PURGE_TXABORT|?PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);

?

return?dwBytesRead;

?

對(duì)以上代碼再作簡要說明:

在使用ReadFile 函數(shù)進(jìn)行讀操作前,應(yīng)先使用ClearCommError函數(shù)清除錯(cuò)誤。

ClearCommError函數(shù)的原型如下:

?

1

2

3

4

5

BOOL?ClearCommError(?HANDLE?hFile,

?

// 串口句柄LPDWORD lpErrors, // 指向接收錯(cuò)誤碼的變量

?

LPCOMSTAT?lpStat?// 指向通訊狀態(tài)緩沖區(qū) );

?

該函數(shù)獲得通信錯(cuò)誤并報(bào)告串口的當(dāng)前狀態(tài),同時(shí),該函數(shù)清除串口的錯(cuò)誤標(biāo)志以便繼續(xù)輸入、輸出操作。

參數(shù)lpStat指向一個(gè)COMSTAT結(jié)構(gòu),該結(jié)構(gòu)返回串口狀態(tài)信息。

COMSTAT結(jié)構(gòu) COMSTAT結(jié)構(gòu)包含串口的信息,

結(jié)構(gòu)定義如下:
typedef struct _COMSTAT { // cst DWORD fCtsHold : 1; // Tx waiting for CTS signal DWORD fDsrHold : 1; // Tx waiting for DSR signal DWORD fRlsdHold : 1; // Tx waiting for RLSD signal DWORD fXoffHold : 1; // Tx waiting, XOFF char rec''d DWORD fXoffSent : 1; // Tx waiting, XOFF char sent DWORD fEof : 1; // EOF character sent DWORD fTxim : 1; // character waiting for Tx DWORD fReserved : 25; // reserved DWORD cbInQue; // bytes in input buffer DWORD cbOutQue; // bytes in output buffer } COMSTAT, *LPCOMSTAT;
本文只用到了cbInQue成員變量,該成員變量的值代表輸入緩沖區(qū)的字節(jié)數(shù)。

最后用PurgeComm函數(shù)清空串口的輸入輸出緩沖區(qū)。
這段代碼用WaitForSingleObject函數(shù)來等待OVERLAPPED結(jié)構(gòu)的hEvent成員,下面我們?cè)傺菔疽欢握{(diào)用GetOverlappedResult函數(shù)等待的

異步讀串口示例代碼:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

char?lpInBuffer[1024];

DWORD?dwBytesRead=1024;

BOOL?bReadStatus;

DWORD?dwErrorFlags;

COMSTAT?ComStat;

OVERLAPPED?m_osRead;

ClearCommError(hCom,&dwErrorFlags,&ComStat);

if(!ComStat.cbInQue)?return?0;

dwBytesRead=min(dwBytesRead,(DWORD)ComStat.cbInQue);

bReadStatus=ReadFile(hCom,?lpInBuffer,dwBytesRead,?&dwBytesRead,&m_osRead);

if(!bReadStatus)?//如果ReadFile函數(shù)返回FALSE

{?if(GetLastError()==ERROR_IO_PENDING)

{?GetOverlappedResult(hCom,?&m_osRead,&dwBytesRead,TRUE);

// GetOverlappedResult函數(shù)的最后一個(gè)參數(shù)設(shè)為TRUE,

//函數(shù)會(huì)一直等待,直到讀操作完成或由于錯(cuò)誤而返回。

return?dwBytesRead;?}

return?0;?}

return?dwBytesRead;

?

異步寫串口的示例代碼:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

char?buffer[1024];

DWORD?dwBytesWritten=1024;

DWORD?dwErrorFlags;

COMSTAT?ComStat;

OVERLAPPED?m_osWrite;

BOOL?bWriteStat;

bWriteStat=WriteFile(hCom,buffer,dwBytesWritten,?&dwBytesWritten,&m_OsWrite);

if(!bWriteStat)

{?if(GetLastError()==ERROR_IO_PENDING)

{?WaitForSingleObject(m_osWrite.hEvent,1000);

return?dwBytesWritten;?}

return?0;?}

return?dwBytesWritten;

?

4、關(guān)閉串口

利用API函數(shù)關(guān)閉串口非常簡單,只需使用CreateFile函數(shù)返回的句柄作為參數(shù)調(diào)用CloseHandle即可:

?

1

2

3

BOOL?CloseHandle(

HANDLE?hObject;?//handle to object to close

);

?

總結(jié)

以上是生活随笔為你收集整理的C/C++串口通信原理及读写与操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

日韩免费在线观看视频 | 精品国偷自产国产一区 | 国产在线观看免费 | 99久久久国产精品 | 婷婷深爱五月 | 欧美性大战 | 中国一级特黄毛片大片久久 | www看片网站 | 久久免费国产精品1 | 中文字幕国产精品一区二区 | 中文字幕久久精品一区 | 久久久国产精华液 | 国产黄色片免费 | 亚洲国产精品视频在线观看 | 综合色婷婷 | av成人免费 | 一区二区三区在线免费观看视频 | 五月激情久久 | 亚洲国产精品久久久 | 人人搞人人爽 | 97在线影视| 欧美激情视频一二区 | 国产精品久久久久久久久久久久久久 | 国产成人一区三区 | 九色精品免费永久在线 | 日韩精品在线看 | 精品国模一区二区三区 | 中文字幕在线看片 | 日韩一二三在线 | 91精彩视频在线观看 | 六月丁香久久 | 久久综合免费视频 | 麻豆激情电影 | 精品国产一区二区三区久久 | 国产黄免费在线观看 | 亚洲精品久久久久中文字幕二区 | 欧美视频18 | 色999视频 | 日韩精品三区四区 | 色婷婷综合久久久中文字幕 | 国产精品久久久久久69 | 国产亲近乱来精品 | 国产精品久久久久免费观看 | 天堂在线一区二区三区 | 免费视频99 | 天天综合色天天综合 | adn—256中文在线观看 | 97久久久免费福利网址 | 黄色在线观看www | 伊人首页| 天天插综合 | 狠狠狠狠狠狠狠 | 国产精品va在线播放 | 成人在线免费小视频 | 一本一道波多野毛片中文在线 | 中国一级片视频 | 午夜在线免费视频 | 国产精品二区三区 | 国产97av| 有码视频在线观看 | 国产精品美女免费视频 | 国产女人18毛片水真多18精品 | 人人狠狠综合久久亚洲 | 一本一本久久aa综合精品 | 国产成人久久久77777 | 狠狠干综合 | 又湿又紧又大又爽a视频国产 | 久久精品这里热有精品 | 久久99热久久99精品 | 91亚洲视频在线观看 | 国产成人三级在线观看 | 日韩av区| 国产精品视频永久免费播放 | a在线免费观看视频 | 一本一道久久a久久综合蜜桃 | 91av在| 免费看日韩片 | 麻豆91网站| 国产一区二区三区在线免费观看 | 欧美一级性 | 久草免费在线视频 | 在线有码中文 | 日本三级在线观看中文字 | 欧美日韩久久一区 | 麻豆一级视频 | 久久国产高清 | 在线观看视频一区二区三区 | 亚洲精品视频国产 | 日韩欧美高清免费 | 成人性生爱a∨ | 婷婷综合av | 韩日精品视频 | 人人超在线公开视频 | 六月丁香婷婷久久 | 亚洲精品1234区 | 黄网站色视频免费观看 | 国产精品9999| 免费看久久 | 日韩精品一区二区三区在线播放 | 天天干天天拍 | 国产精品久久久久av免费 | 中文字幕第一 | 最近久乱中文字幕 | a国产精品 | 日韩中文字幕视频在线观看 | 99热国内精品 | 奇米影视777影音先锋 | 国产91精品看黄网站 | 黄色片软件网站 | 日韩精品免费在线观看视频 | 国产精品嫩草影视久久久 | 在线亚洲欧美视频 | 97热久久免费频精品99 | 国产精品久久久久久超碰 | 国产一区二区综合 | 日日夜夜狠狠干 | 色综合天天狠狠 | 国产精品久久久久久久久久99 | 欧美性成人 | 黄色a在线观看 | 亚洲永久国产精品 | 黄污视频网站大全 | 99久久精品国 | 国产丝袜网站 | 色综合天 | 正在播放国产精品 | 视频在线观看一区 | 中文字幕在线一区观看 | a天堂免费 | 国产一区视频在线播放 | 久久久国产一区二区三区四区小说 | 亚洲精品一区二区网址 | 久久久亚洲麻豆日韩精品一区三区 | 成人免费一区二区三区在线观看 | 精品一区 在线 | 99在线精品视频观看 | 国产精品不卡在线观看 | 日本女人的性生活视频 | av网站在线观看免费 | 操久久网 | 亚洲国产一区二区精品专区 | 成人中文字幕+乱码+中文字幕 | 亚洲美女免费精品视频在线观看 | 国产福利一区二区三区视频 | 96久久精品 | 亚洲国产精选 | 韩日视频在线 | 黄色av电影在线 | 国产成人免费在线观看 | 久久不见久久见免费影院 | 欧美久久久久久 | 欧美日韩在线免费观看视频 | 久久国产精品99久久人人澡 | 网站在线观看日韩 | 亚洲综合色视频在线观看 | 精品久久电影 | 成人在线观看资源 | 成人av高清在线观看 | 91成人免费在线视频 | 亚洲天天摸日日摸天天欢 | 久久激情五月丁香伊人 | 久久精品看 | 日韩激情视频 | 国产精品一二三 | 99高清视频有精品视频 | 亚洲精品高清在线观看 | 国产精品久久久久久爽爽爽 | 久久精彩视频 | 美女网站在线播放 | 久久黄色美女 | 免费国产黄线在线观看视频 | 在线观看免费黄视频 | 婷婷在线看 | 久久这里只精品 | 国产中文字幕在线 | 国产无遮挡又黄又爽在线观看 | 久久久精品 一区二区三区 国产99视频在线观看 | 亚洲精品网站 | 国产欧美精品在线观看 | 超碰av在线播放 | 国产在线观看91 | 午夜精品久久久久久久99无限制 | 日本不卡123 | 热久久精品在线 | 中文av一区二区 | 91九色视频在线观看 | 久久免费观看少妇a级毛片 久久久久成人免费 | 免费午夜网站 | 98久9在线 | 免费 | 日韩精品极品视频 | 国产小视频免费在线观看 | 国产视频首页 | 91精品对白一区国产伦 | 91完整版观看 | 免费在线播放视频 | 成年人在线观看视频免费 | 久久夜色电影 | 亚洲国产中文字幕在线视频综合 | 天天天天天天干 | 在线不卡中文字幕播放 | 五月婷婷狠狠 | 国产色综合天天综合网 | 欧美成人猛片 | 久99久在线 | 亚洲国产精品久久久久久 | 国产精久久久久久妇女av | 色噜噜在线观看 | 欧美日韩在线视频一区 | 97视频在线免费 | 国产在线观看免费 | 91精品夜夜 | 久久综合之合合综合久久 | 国产欧美在线一区 | 人操人 | 欧美精品免费在线观看 | 久久国产精品网站 | 久久综合影院 | 九九久久电影 | 日韩在线无| 99在线视频精品 | 国产精品无 | 日韩av美女 | 欧美美女激情18p | 国产精品久久久久一区二区 | 亚洲成人av一区二区 | 亚洲黄色成人网 | 国产综合激情 | 亚洲天天摸日日摸天天欢 | 精品视频国产 | 日本中文字幕在线一区 | 99免费在线播放99久久免费 | 欧美福利在线播放 | 久久精品96 | 日韩精品中文字幕在线观看 | 久久久www成人免费精品 | 日韩欧美一区二区三区在线观看 | 麻豆成人精品视频 | 色噜噜日韩精品一区二区三区视频 | 精品一区电影国产 | 精品视频免费播放 | 最新色站 | 日韩精品免费在线 | 激情综合五月网 | 中文字幕在线观看的网站 | 国产视频手机在线 | 五月婷婷色 | 国模一二三区 | 日韩 在线 | 久久久久久久久久亚洲精品 | 五月婷婷色播 | 国产 色| 国产超碰在线 | 国产成人在线播放 | 国产精品系列在线观看 | 97在线播放视频 | 亚洲电影一区二区 | 2019av在线视频 | 国产高清精品在线观看 | 五月天久久狠狠 | 婷婷久久网站 | 亚洲国产精品va在线看黑人动漫 | 亚洲国产网站 | 精品亚洲欧美无人区乱码 | 美女视频黄在线 | 97涩涩视频 | 久久久精品高清 | 久久a v电影 | 啪啪小视频网站 | 制服丝袜在线91 | 久久久久久久久久影院 | www国产亚洲精品久久网站 | 国产视频中文字幕 | 99在线视频精品 | 狠狠综合久久 | 天天·日日日干 | 在线观看视频三级 | 丁香婷婷激情啪啪 | 亚洲免费国产视频 | 九九电影在线 | 视频在线播放国产 | 日本不卡123区 | 亚洲欧美成人在线 | 91| 亚洲国产精品va在线看 | 国产精品久久久久毛片大屁完整版 | 成人免费在线观看电影 | 96精品视频| 最近的中文字幕大全免费版 | 国产小视频你懂的在线 | 久久久久久久久久电影 | 五月天综合色 | www.天天色.com | 夜夜躁狠狠躁 | 久久国产三级 | 成人av免费在线观看 | 综合婷婷| 欧美性一级观看 | 国产精品久久99综合免费观看尤物 | 久久国产精品精品国产色婷婷 | 日日夜夜婷婷 | 久久久观看| av一区二区在线观看中文字幕 | 91亚洲精品国产 | 国产一级免费在线观看 | 国产真实精品久久二三区 | 久久精品爱爱视频 | 国产精品v a免费视频 | 亚洲最新在线视频 | 亚洲一区美女视频在线观看免费 | 久久久久久久久久伊人 | 在线观看日本韩国电影 | 91麻豆国产福利在线观看 | 久热色超碰 | 日本性xxx| 国产亚洲婷婷免费 | 国产网红在线观看 | 精品在线视频一区二区三区 | 亚洲欧美一区二区三区孕妇写真 | 天天摸天天操天天爽 | 99视频偷窥在线精品国自产拍 | 久草视频看看 | 日韩中文字幕免费电影 | 欧美日韩中文字幕综合视频 | 日韩在线大片 | 免费av试看| 国产字幕在线看 | 国产精品第一 | 久久99热这里只有精品国产 | 91在线小视频 | 天天操网址 | 98超碰在线观看 | 国产黑丝一区二区 | 国产99久久久国产精品免费二区 | 国产日韩精品一区二区在线观看播放 | 色橹橹欧美在线观看视频高清 | 欧美久久综合 | 国产精品ssss在线亚洲 | 欧美日一级片 | 国产福利久久 | 超碰人人做 | 国产欧美精品在线观看 | 国产精品aⅴ | 国产午夜精品福利视频 | av亚洲产国偷v产偷v自拍小说 | 欧美另类高潮 | 国产精品毛片一区视频播不卡 | 国产中文字幕国产 | 国产传媒中文字幕 | 欧美91精品久久久久国产性生爱 | 五月婷婷久 | 成年人免费电影 | 黄色软件在线观看 | 国产精品久久久久av免费 | 日本99精品 | 国产在线观看你懂的 | 激情婷婷久久 | 91九色视频在线 | 日韩在线激情 | 波多野结衣一区 | 日韩啪啪小视频 | 日韩三级成人 | a天堂最新版中文在线地址 久久99久久精品国产 | 99久久综合国产精品二区 | 精品欧美小视频在线观看 | 国产亚洲欧美精品久久久久久 | 高清不卡一区二区三区 | 国产黄在线免费观看 | 黄色大片中国 | 99视频在线免费播放 | 国产va在线| 一区二区三区av在线 | 国产丝袜在线 | 欧美日韩国产区 | 一区二区三区在线视频观看58 | japanesefreesex中国少妇 | 超碰av在线| 四虎8848免费高清在线观看 | 国产精品第一 | 97在线看片 | 久草网首页 | 国产精品原创视频 | 久久精精品| 色爱成人网 | 色视频在线 | 免费高清无人区完整版 | www.99热精品 | 精品亚洲va在线va天堂资源站 | 国产精品久久久久一区 | 亚洲一区 影院 | 亚洲精品久久视频 | 成人中心免费视频 | 色99中文字幕 | 久久久99国产精品免费 | 免费在线观看一级片 | 午夜精品久久久久久久久久久久久久 | 久久99亚洲精品 | www.久草.com| 亚洲精品91天天久久人人 | www.黄色片网站 | 精品美女在线视频 | 亚洲第一区在线观看 | 99热最新在线 | 91尤物国产尤物福利在线播放 | 91视频免费网站 | www.夜夜| 美女福利视频一区二区 | 国产精品99久久久久久久久久久久 | 午夜久久 | 手机在线看永久av片免费 | 日韩视频免费播放 | 五月开心婷婷 | 国产999精品久久久影片官网 | 2022中文字幕在线观看 | 亚洲一区精品二人人爽久久 | 久久亚洲综合国产精品99麻豆的功能介绍 | 人人玩人人弄 | 三级性生活视频 | 日韩视频一区二区三区在线播放免费观看 | 不卡电影免费在线播放一区 | 国产福利精品视频 | 精品久久久久久久久久久久 | 中文字幕综合在线 | 午夜电影一区 | 午夜在线观看一区 | 激情五月激情综合网 | 欧美精品一二三 | 欧美一区日韩精品 | 一本一道波多野毛片中文在线 | 日韩精品一区二区三区高清免费 | 日本精品视频免费 | 久久国产乱 | 亚洲欧美国产精品久久久久 | 99综合视频 | av中文在线影视 | 国产打女人屁股调教97 | 午夜丁香网 | 99在线视频精品 | 成人h在线 | 欧美色图东方 | 婷婷丁香自拍 | 波多野结衣在线播放一区 | 看v片 | av中文字幕免费在线观看 | 国产毛片aaa | 国产精品免费观看久久 | 免费av大片| 精品免费国产一区二区三区四区 | 在线国产一区二区三区 | 青青河边草观看完整版高清 | 久久成人黄色 | 91精品国产一区二区三区 | 美女黄频免费 | 色综合色综合久久综合频道88 | 欧美日韩免费在线视频 | 在线中文字幕一区二区 | 丁香六月婷| 午夜性色 | 91av在线不卡 | 在线观看av黄色 | 手机av电影在线观看 | 成人91在线| 蜜臀aⅴ国产精品久久久国产 | 96久久 | 天天操天天干天天爱 | 人人干人人做 | 欧美日韩高清一区 | 免费av片在线 | 国产精久久久久久妇女av | 在线成人性视频 | 狠狠躁夜夜躁人人爽视频 | 国际精品久久 | 精品国产伦一区二区三区 | 国产偷国产偷亚洲清高 | 国产精品嫩草影视久久久 | 中文字幕在线播放日韩 | 91精品高清 | 日韩综合精品 | 亚洲精品看片 | 日韩在线观看第一页 | 欧美国产高清 | www.888av| 欧美黄色特级片 | 成人av高清 | 色婷婷成人网 | 婷婷六月在线 | 国产二区精品 | 91成人在线网站 | 在线观看免费av网 | 久久电影日韩 | 91看片在线播放 | 成人亚洲精品国产www | 91大神精品视频在线观看 | 色在线网 | 丁香六月在线 | 五月激情在线 | 国产综合视频在线观看 | 在线观看成人小视频 | 在线电影av | 色在线免费 | 91看片成人| 中文字幕一区二区三区四区 | 五月婷婷另类国产 | 涩涩资源网| 久久男人视频 | 青草视频在线免费 | 一级黄色a视频 | 日韩理论电影在线观看 | 久久免费在线观看视频 | 免费av在线网 | 久久精品国产一区二区三 | 婷婷亚洲五月 | 成人午夜精品久久久久久久3d | 亚洲一级影院 | 久久国产高清视频 | 午夜精品一区二区三区在线播放 | 欧美精品v国产精品v日韩精品 | 成人综合日日夜夜 | 黄在线| 超碰免费在线公开 | 欧美性黄网官网 | 欧美一区中文字幕 | 伊人丁香 | 网址你懂的在线观看 | 免费色视频在线 | 色综合久久综合中文综合网 | 免费看三级网站 | 亚洲区精品视频 | a黄色| 中文字幕第一页在线播放 | 久久精品中文 | 精品xxx | 免费看黄色毛片 | 久久久久久国产精品 | 91免费网站在线观看 | 一区二区三区影院 | 国产成人av一区二区三区在线观看 | 黄色com | 日韩视频免费在线观看 | 在线看成人 | 国产91精品高清一区二区三区 | 中文字幕免费观看 | 日韩色视频在线观看 | 精品亚洲午夜久久久久91 | 久久久久北条麻妃免费看 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 午夜av电影 | 在线观看的a站 | 美女性爽视频国产免费app | 97在线精品视频 | 午夜精品久久久久久99热明星 | 久久免费精彩视频 | 国产精品福利视频 | 国产一级在线观看视频 | 国产精品国产自产拍高清av | 国产精品一区二区三区在线播放 | 久久亚洲成人网 | 国产免费作爱视频 | 国产精品成人一区二区三区 | 中文字幕有码在线 | 一本—道久久a久久精品蜜桃 | 久久久久亚洲精品国产 | 在线观看视频 | 涩五月婷婷 | 人人干天天干 | 激情图片区 | 久久午夜国产 | 99免费| 久久久高清免费视频 | 激情欧美网 | 久久精品电影网 | 99精品区| 免费在线激情电影 | 国产精品久久免费看 | 最新中文字幕 | 成人av一区二区在线观看 | www最近高清中文国语在线观看 | 在线观看一 | 欧美激情视频一二区 | 国产成人99av超碰超爽 | 午夜久久久久 | 久久久久久久久毛片精品 | 国产剧情在线一区 | 波多野结衣在线观看一区二区三区 | 免费中文字幕在线观看 | 成人黄色大片 | 91免费版在线观看 | 婷婷夜夜 | 狠狠色噜噜狠狠狠合久 | 久久永久视频 | 免费电影一区二区三区 | 国产专区日韩专区 | 久久人人爽人人人人片 | 日韩免费电影网 | 午夜 在线| 久久人人爽人人爽人人片 | 亚洲综合在线五月天 | 中文字幕av网站 | 天天躁日日躁狠狠躁av麻豆 | 99精品视频在线观看 | 日韩深夜在线观看 | 久青草视频| 国产日韩视频在线播放 | 人人澡人人草 | 精品国产免费一区二区三区五区 | 狠狠久久综合 | 久草免费福利在线观看 | 久久精品一区二区国产 | 91视频在线看 | 深夜免费小视频 | 精品一区二区三区久久 | 天天射天天干天天操 | 色天天综合久久久久综合片 | 九九精品在线观看 | 亚洲精品一区二区三区四区高清 | 天天操天天干天天爱 | 久色小说 | www.天天射| 中文国产字幕在线观看 | 日韩1级片 | 亚洲免费公开视频 | 成年人在线免费看视频 | 久久免费福利视频 | 中文字幕免费高清av | 亚洲精品久久久久久中文传媒 | 在线a人v观看视频 | av激情五月 | 亚洲最新在线 | 免费精品视频在线 | 中国老女人日b | 久久兔费看a级 | 日韩黄色免费 | 日本中文乱码卡一卡二新区 | 96久久欧美麻豆网站 | 91成人在线视频 | 亚洲精品在线免费 | 超碰免费在线公开 | 不卡的av在线播放 | 99久热在线精品视频观看 | 国产日韩欧美在线观看视频 | 在线免费中文字幕 | 欧美成年网站 | 超级碰碰碰免费视频 | 99在线热播精品免费 | 久久久私人影院 | 人人草人人草 | 色a4yy| 中文字幕在线视频一区二区 | 久久久久成人精品亚洲国产 | 在线观看一区 | 成人中文字幕在线 | 91资源在线免费观看 | 国产精品视频一二三 | 亚洲乱码精品久久久 | 亚洲欧洲日韩在线观看 | 成人动漫一区二区 | 国产视频精品在线 | 欧美九九视频 | 亚洲老妇xxxxxx| 日韩影片在线观看 | 天天操天天草 | 国产一二三在线视频 | 中文字幕色综合网 | 免费看国产一级片 | 精品久久久久久久久久岛国gif | 天天操天天射天天舔 | 综合激情网... | 日韩美女久久 | 久久久久久蜜桃一区二区 | 精品国偷自产国产一区 | 国产精彩视频一区二区 | 亚洲午夜久久久久久久久电影网 | 久久任你操| 亚洲最大色| 国产一级h | 在线播放视频一区 | 欧美一级电影片 | 日韩欧美国产免费播放 | 天天操夜夜逼 | 午夜视频在线观看一区二区 | 国产日韩欧美在线观看 | 91亚洲欧美激情 | 99精品在线免费观看 | 久久久久久久久久国产精品 | 欧美性脚交 | 成年人在线观看免费视频 | 国产日韩精品一区二区三区 | 久草视频免费在线观看 | 成人av直播 | 国产 日韩 欧美 在线 | 91精品网站在线观看 | 97在线成人 | 免费看污网站 | 人人干人人干人人干 | 久人人 | 久久精品视频在线看 | 在线免费观看麻豆 | 特黄特色特刺激视频免费播放 | 五月婷婷影院 | 日日夜夜狠狠操 | 91视频国产高清 | 黄色软件网站在线观看 | 97视频在线观看免费 | 中文字幕观看在线 | 黄色aaa级片 | 久久免费视频国产 | 免费a网址 | 久久久久99精品国产片 | 操高跟美女| 人人精品久久 | 免费黄色在线网站 | 99久久精品免费看国产免费软件 | 国产精品igao视频网入口 | 天天综合网 天天综合色 | 午夜三级影院 | 久久国产精品色婷婷 | 中文字幕精品久久 | 国产黑丝一区二区三区 | 91精品国产自产91精品 | 91大神免费视频 | 免费在线视频一区二区 | 国产粉嫩在线 | 欧美成人视| 成人久久免费视频 | 国产成人中文字幕 | 在线精品视频免费播放 | 91精品久久久久久久91蜜桃 | 亚洲视频精品 | 丁香九月激情综合 | 福利视频导航网址 | 在线观看小视频 | 日韩在线观看电影 | 99久久久久久久久久 | 激情小说网站亚洲综合网 | 日韩资源视频 | 欧美99精品 | 久草在线看片 | 色婷婷在线视频 | 伊人久久精品久久亚洲一区 | 成年人毛片在线观看 | 精品国产精品久久一区免费式 | 久久性生活片 | 久久国内精品视频 | 国产成人a亚洲精品v | 色婷婷在线播放 | 午夜国产在线 | 九九综合久久 | 精品国产一区二区三区四 | 超碰人人国产 | 91麻豆精品 | www.狠狠操 | 毛片网免费 | 日韩精品大片 | 毛片www| 嫩小bbbb摸bbb摸bbb | 久操视频在线免费看 | 国产成人av网址 | 最近日韩中文字幕中文 | 日韩影片在线观看 | 丝袜网站在线观看 | 国产淫片免费看 | 国产色久 | 97香蕉久久国产在线观看 | 日本天天色 | 嫩嫩影院理论片 | 91大神一区二区三区 | 亚洲国产午夜视频 | 国产成人一区二区三区影院在线 | 爱爱av网站 | 国产一级久久久 | 欧美日韩国产精品一区二区亚洲 | av观看免费在线 | 亚洲最大激情中文字幕 | 免费在线国产黄色 | 国产韩国精品一区二区三区 | 日本黄色大片免费看 | 天天操夜夜爱 | 亚洲精品av中文字幕在线在线 | 亚洲国产中文字幕在线观看 | 国产香蕉久久精品综合网 | 国产亚洲va综合人人澡精品 | 久久精品人 | 中文字幕亚洲欧美 | av成人在线网站 | 99久久国产免费看 | 九九免费视频 | 91av电影网 | www.五月婷婷 | 91国内产香蕉 | 色婷婷久久久综合中文字幕 | 日韩一区二区三区高清在线观看 | 中文字幕在线观看三区 | 久久久精品一区二区三区 | 97自拍超碰 | 日本公妇在线观看 | 波多野结衣理论片 | 国内成人综合 | 国产亚洲精品久久久久久大师 | 久久呀| 色综合久久久久综合体桃花网 | 五月婷丁香 | 99久久久久免费精品国产 | 久久久精选 | 亚洲最大成人免费网站 | 久久久久久久久毛片精品 | 91丨九色丨国产在线观看 | 欧美日韩在线免费观看视频 | 日韩精品久久久 | 国产电影黄色av | 欧美一级电影在线观看 | 大型av综合网站 | 亚洲91网站 | 国产免费又粗又猛又爽 | 在线观看日韩精品视频 | 国产中文在线播放 | 欧美视频国产视频 | 免费看网站在线 | 色综合人人 | 美国三级黄色大片 | 精品国产一区二区三区四区vr | 99精品视频在线观看免费 | 国产精品美女久久久久久 | 国产在线p | 日韩精品免费在线播放 | 欧美一区二区日韩一区二区 | 操操操人人 | 免费在线激情视频 | 亚洲精品美女在线观看播放 | 国产69精品久久久久9999apgf | 91片黄在线观看 | 国产成人精品999在线观看 | 丁香六月激情婷婷 | 国产精品免费麻豆入口 | 久久久久久久久久久久国产精品 | 国产精品一区专区欧美日韩 | 日韩成人精品一区二区三区 | 福利视频第一页 | 玖玖在线播放 | 免费在线观看91 | 午夜12点| 国产九九九视频 | 中文字幕av免费在线观看 | 欧美aaa大片| 在线观看午夜 | 成年人免费在线 | 黄色片视频免费 | 日韩在观看线 | 91爱爱视频 | 国产午夜精品理论片在线 | 成人免费观看在线视频 | 91精品国产欧美一区二区 | 久久精品视频观看 | 日日摸日日 | 最近中文字幕视频网 | 一二三区视频在线 | 337p日本大胆噜噜噜噜 | 欧美热久久| 欧美日本高清视频 | 国产亚洲欧美精品久久久久久 | 日本女人在线观看 | www.天天操 | 精品国产一区二区三区免费 | 99国产精品免费网站 | 这里只有精品视频在线观看 | a黄色片 | 日韩视频在线观看视频 | 免费成人结看片 | 国产精品久久毛片 | 337p西西人体大胆瓣开下部 | 一区二区三区日韩在线 | 亚洲免费精品一区二区 | 97视频久久久 | 久久久免费看视频 | 国产日产亚洲精华av | 欧美日韩精品综合 | 欧亚日韩精品一区二区在线 | 亚洲欧洲视频 | 日韩91av | 91精品日韩 | 五月天欧美精品 | 最近中文字幕视频完整版 | 九九色在线观看 | 亚洲精品xxxx | 久草精品免费 | 激情在线五月天 | 麻豆免费在线视频 | 久久成人毛片 | 韩国精品视频在线观看 | 国产aaa毛片 | av千婊在线免费观看 | 亚洲一区二区黄色 | 精品国产一区二区久久 | 亚洲伊人成综合网 | 麻豆免费看片 | 中文字幕亚洲精品在线观看 | 欧美精品九九99久久 | 成人xxxx| 日韩大片在线播放 | 天天操天天射天天爱 | 国产精品一区欧美 | 婷婷六月综合网 | 亚洲天天综合网 | 成人动漫精品一区二区 | 免费观看性生交大片3 | 久久精品毛片 | 精品国产一区二区三区免费 | 欧美成人精品欧美一级乱黄 | 黄色在线看网站 | 欧美国产日韩久久 | 99热这里只有精品国产首页 | 久久99免费视频 | 奇米影视777四色米奇影院 | 99精品国产99久久久久久福利 | 人人玩人人添人人澡超碰 | 少妇性bbb搡bbb爽爽爽欧美 | 日韩欧美xxxx | 91人人射| 久久综合狠狠综合 | 日本99热| 亚洲三级精品 | 天天鲁天天干天天射 | 久久综合免费 | 蜜桃视频成人在线观看 | 国产精品亚洲片在线播放 | 欧美日韩p片 | 黄污污网站 | 日日操网站| 久艹视频免费观看 | 亚洲激情在线 | 黄色成人在线观看 | 色网站国产精品 | 亚洲精区二区三区四区麻豆 | av电影在线播放 | 久草网视频 | 亚洲黄色app | 亚洲国产wwwccc36天堂 | 综合色天天 | 黄色影院在线免费观看 | 天天操导航| 欧美日韩中文字幕视频 | 中文字幕专区高清在线观看 | 久久人人插 | 久久久久中文 | 香蕉视频久久 | 国产女人18毛片水真多18精品 | 久久久久女教师免费一区 | 一区二区三区高清在线观看 | 97在线视频免费看 | 国产成人av一区二区三区在线观看 | 狠狠婷婷| 欧美精品xxx | 国产精品video| 精品999久久久 | 成人av网址大全 | 午夜少妇一区二区三区 | 手机av在线不卡 | 91最新在线观看 | 欧美福利在线播放 | 天天干天天射天天爽 | 欧美精品免费在线 | 久久国产精品99久久久久 | 国产在线观看免费av | 国产一区二区三区免费视频 | 丰满少妇麻豆av | 日韩欧美视频在线免费观看 | 免费观看性生交大片3 | 国产精品一区在线观看 | 国产精品高潮呻吟久久av无 | 免费的国产精品 | 国产一级黄色免费看 | 久久久久久久久久伊人 | 开心激情久久 | 国产精品亚洲视频 | 天天鲁天天干天天射 | 六月婷婷网 | 婷婷 综合 色 | 亚洲精品在线免费看 | 天天插夜夜操 | 日韩欧美电影 | 九九九九精品九九九九 | 久久精品久久久久电影 | 日韩高清dvd| 国产一二三区av | 麻豆成人精品 | 久久综合之合合综合久久 | 国产99久久久精品 | 成 人 黄 色 免费播放 | 香蕉视频在线免费看 | 91福利试看 | 99se视频在线观看 | 国产麻豆精品95视频 | 日韩免费高清 | 亚洲在线视频免费观看 | 成人97视频一区二区 | 欧美性性网 | 中文字幕资源网 国产 | 免费av网址大全 | 九九久久电影 | 国产一级高清视频 |