久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

串口通訊編程一日通3(COMMTIMEOUTS DCB整理)

 江南蘭亭館 2012-03-11

串口通訊編程一日通3(COMMTIMEOUTS DCB整理)

分類: Visual C++3212人閱讀評論(0)收藏舉報

上一篇看了Overlapped IO模型后,接下來看剩下兩個重要結(jié)構(gòu):

2.COMMTIMEOUTS結(jié)構(gòu) 超時設(shè)置

COMMTIMEOUTS:COMMTIMEOUTS主要用于串口超時參數(shù)設(shè)置。COMMTIMEOUTS結(jié)構(gòu)如下:

typedef struct _COMMTIMEOUTS {
DWORD ReadIntervalTimeout; //讀間隔超時
DWORD ReadTotalTimeoutMultiplier;// 讀時間系數(shù)
DWORD ReadTotalTimeoutConstant; // 讀時間常量
DWORD WriteTotalTimeoutMultiplier; // 寫時間系數(shù)
DWORD WriteTotalTimeoutConstant; // 寫時間常量
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;


  ReadIntervalTimeout:兩字符之間最大的延時,,當(dāng)讀取串口數(shù)據(jù)時,一旦兩個字符傳輸?shù)臅r間差超過該時間,,讀取函數(shù)將返回現(xiàn)有的數(shù)據(jù),。設(shè)置為0表示該參數(shù)不起作用。

  ReadTotalTimeoutMultiplier:讀取每字符間的超時,。

  ReadTotalTimeoutConstant:一次讀取串口數(shù)據(jù)的固定超時,。所以在一次讀取串口的操作中,其超時為ReadTotalTimeoutMultiplier乘以讀取的字節(jié)數(shù)再加上 ReadTotalTimeoutConstant,。將ReadIntervalTimeout設(shè)置為MAXDWORD,,并將ReadTotalTimeoutMultiplier 和ReadTotalTimeoutConstant設(shè)置為0,表示讀取操作將立即返回存放在輸入緩沖區(qū)的字符,。

  WriteTotalTimeoutMultiplier:寫入每字符間的超時,。

  WriteTotalTimeoutConstant:一次寫入串口數(shù)據(jù)的固定超時。所以在一次寫入串口的操作中,,其超時為WriteTotalTimeoutMultiplier乘以寫入的字節(jié)數(shù)再加上 WriteTotalTimeoutConstant,。

一般都會做以下設(shè)置:
TimeOuts.ReadIntervalTimeout=MAXDWORD;
// 把間隔超時設(shè)為最大,把總超時設(shè)為0將導(dǎo)致ReadFile立即返回并完成操作

TimeOuts.ReadTotalTimeoutMultiplier=0;
//讀時間系數(shù)

TimeOuts.ReadTotalTimeoutConstant=0;
//讀時間常量

TimeOuts.WriteTotalTimeoutMultiplier=50;
//總超時=時間系數(shù)*要求讀/寫的字符數(shù)+時間常量

TimeOuts.WriteTotalTimeoutConstant=2000;
//設(shè)置寫超時以指定WriteComm成員函數(shù)中的

3.DCB結(jié)構(gòu)

DCB (Device Control Block) 設(shè)備控制塊

在打開通訊串口后,,我們需要對串口進行初始化,,比如,波特率,、奇偶位,、校驗位等,在查詢或者配置這些數(shù)據(jù)時,,都要用DCB進行緩沖,,可以調(diào)用GetcommState函數(shù)獲得當(dāng)前串口配置,以下是DCB的具體成員:

typedef struct _DCB {// dcb
  DWORD DCBlength; // sizeof(DCB)
  DWORD BaudRate; // current baud rate
  指定當(dāng)前的波特率
  DWORD fBinary: 1; // binary mode, no EOF check
  指定是否允許二進制模式,,
  WINDOWS 95中必須為TRUE
  DWORD fParity: 1; // enable parity checking
  指定奇偶校驗是否允許
  DWORD fOutxCtsFlow:1; // CTS output flow control
  指定CTS是否用于檢測發(fā)送控制,。
  當(dāng)為TRUE是CTS為OFF,發(fā)送將被掛起,。
  DWORD fOutxDsrFlow:1; // DSR output flow control
  指定CTS是否用于檢測發(fā)送控制,。
  當(dāng)為TRUE是CTS為OFF,發(fā)送將被掛起,。
  DWORD fDtrControl:2; // DTR flow control type
  DTR_CONTROL_DISABLE值將DTR置為OFF, DTR_CONTROL_ENABLE值將DTR置為ON, DTR_CONTROL_HANDSHAKE允許DTR"握手",DWORD fDsrSensitivity:1; // DSR sensitivity 當(dāng)該值為TRUE時DSR為OFF時接收的字節(jié)被忽略
  DWORD fTXContinueOnXoff:1; // XOFF continues Tx
  指定當(dāng)接收緩沖區(qū)已滿,并且驅(qū)動程序已經(jīng)發(fā)
  送出XoffChar字符時發(fā)送是否停止,。
  TRUE時,在接收緩沖區(qū)接收到緩沖區(qū)已滿的字節(jié)XoffLim且驅(qū)動程序已經(jīng)發(fā)送出XoffChar字符中止接收字節(jié)之后,發(fā)送繼續(xù)進行,。
  FALSE時,,在接收緩沖區(qū)接收到代表緩沖區(qū)已空的字節(jié)XonChar且驅(qū)動程序已經(jīng)發(fā)送出恢復(fù)發(fā)送的XonChar之后,發(fā)送繼續(xù)進行,。
  DWORD fOutX: 1; // XON/XOFF out flow control
  TRUE時,,接收到XoffChar之后便停止發(fā)送
  接收到XonChar之后將重新開始
  DWORD fInX: 1; // XON/XOFF in flow control
  TRUE時,接收緩沖區(qū)接收到代表緩沖區(qū)滿的XoffLim之后,,XoffChar發(fā)送出去
  接收緩沖區(qū)接收到代表緩沖區(qū)空的XonLim之后,,XonChar發(fā)送出去
  DWORD fErrorChar: 1; // enable error replacement
  該值為TRUE且fParity為TRUE時,用ErrorChar 成員指定的字符代替奇偶校驗錯誤的接收字符
  DWORD fNull: 1; // enable null stripping
  TRUE時,,接收時去掉空(0值)字節(jié)
  DWORD fRtsControl:2; // RTS flow control
  RTS_CONTROL_DISABLE時,RTS置為OFF
  RTS_CONTROL_ENABLE時, RTS置為ON
  RTS_CONTROL_HANDSHAKE時,
  當(dāng)接收緩沖區(qū)小于半滿時RTS為ON
  當(dāng)接收緩沖區(qū)超過四分之三滿時RTS為OFF
  RTS_CONTROL_TOGGLE時,
  當(dāng)接收緩沖區(qū)仍有剩余字節(jié)時RTS為ON ,否則缺省為OFF
  DWORD fAbortOnError:1; // abort reads/writes on error
  TRUE時,有錯誤發(fā)生時中止讀和寫操作
  DWORD fDummy2:17; // reserved
  未使用
  WORD wReserved; // not currently used
  未使用,必須為0
  WORD XonLim; // transmit XON threshold
  指定在XON字符發(fā)送這前接收緩沖區(qū)中可允許的最小字節(jié)數(shù)
  WORD XoffLim; // transmit XOFF threshold
  指定在XOFF字符發(fā)送這前接收緩沖區(qū)中可允許的最小字節(jié)數(shù)
  BYTE ByteSize; // number of bits/byte, 4-8
  指定端口當(dāng)前使用的數(shù)據(jù)位
  BYTE Parity; // 0-4=no,odd,even,mark,space
  指定端口當(dāng)前使用的奇偶校驗方法,可能為:
  EVENPARITY,MARKPARITY,NOPARITY,ODDPARITY
  BYTE StopBits; // 0,1,2 = 1, 1.5, 2
  指定端口當(dāng)前使用的停止位數(shù),可能為:
  ONESTOPBIT,ONE5STOPBITS,TWOSTOPBITS
  char XonChar; // Tx and Rx XON character
  指定用于發(fā)送和接收字符XON的值
  char XoffChar; // Tx and Rx XOFF character
  指定用于發(fā)送和接收字符XOFF值
  char ErrorChar; // error replacement character
  本字符用來代替接收到的奇偶校驗發(fā)生錯誤時的值
  char EofChar; // end of input character
  當(dāng)沒有使用二進制模式時,本字符可用來指示數(shù)據(jù)的結(jié)束
  char EvtChar; // received event character
  當(dāng)接收到此字符時,會產(chǎn)生一個事件
  WORD wReserved1; // reserved; do not use 未使用
  } DCB;

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多