串口流控制DCB结构体解析及设置
来源:互联网 发布:实体店铺装修软件 编辑:程序博客网 时间:2024/06/08 07:06
一、串口通信结构体意义解析:
typedef struct _DCB
{ DWORD DCBlength;
DWORD BaudRate; //波特率
DWORD fBinary :1;
DWORD fParity :1; //是否奇偶校验
DWORD fOutxCtsFlow :1; // CTS output flow control 指定CTS是否用于检测发送控制。当为TRUE时CTS为OFF,发送将被挂起。(发送清除)
DWORD fOutxDsrFlow :1; // DSR output flow control 指定DSR是否用于检测发送控制。(数据装备好) 当为TRUE是DSR为OFF,发送将被挂起。
DWORD fDtrControl :2; // DTR flow control type
//DTR_CONTROL_DISABLE值将DTR置为OFF,
//DTR_CONTROL_ENABLE值将DTR置为ON,
//DTR_CONTROL_HANDSHAKE 允许DTR"握手",
DWORD fDsrSensitivity :1; //若为TRUE,通讯驱动程序对DSR信号状态敏感。驱动程序将忽略任何接收的字节数,除非DSR调制解调器的输入线为高。
DWORD fTXContinueOnXoff :1; //为TRUE,输入缓冲区内字节已经满XoffLim及驱动程序已经发送XoffChar停止接收字节时,仍然继续发送。为FALSE,输入缓冲区内XonLim是空的,及驱动程序已经发送XonChar字符恢复接收的字节传输后,才会继续接收。
DWORD fOutX :1; //发送方的行为定义,为TRUE时,接收到XoffChar之后便停止发送,接收到XonChar之后将重新开始发送;
DWORD fInX :1; //接收方的行为定义,为TRUE时,接收缓冲区接收到代表缓冲区满的XoffLim之后,XoffChar发送出去;接收缓冲区空的Buffer达到XonLim之后,XonChar发送出去。
DWORD fErrorChar :1;
DWORD fNull :1;
DWORD fRtsControl :2; // RTS Control Flow
//RTS_CONTROL_DISABLE时,RTS置为OFF
//RTS_CONTROL_ENABLE时, RTS置为ON
//RTS_CONTROL_HANDSHAKE时,
//当接收缓冲区小于半满时RTS为ON
//当接收缓冲区超过四分之三满时RTS为OFF
//RTS_CONTROL_TOGGLE时,
//当接收缓冲区仍有剩余字节时RTS为ON ,否则缺省为OFF
DWORD fAbortOnError :1; // abort reads/writes on error,为TRUE时,有错误发生时中止读和写操作
DWORD fDummy2 :17;
WORD wReserved;
WORD XonLim; //指定在XON字符发送之前接收缓冲区中空缓冲区可允许的最小字节数
WORD XoffLim; //指定在XOFF字符发送这前接收缓冲区中数据缓冲可允许的最小字节数
BYTE ByteSize;
BYTE Parity; //奇偶校验方式
BYTE StopBits; //停止位
char XonChar; //请求发送方继续发送时的字符 0x11
char XoffChar; //请求发送方停止发送时的字符 0x13
char ErrorChar;
char EofChar;
char EvtChar;
WORD wReserved1;
} DCB, *LPDCB;
二、设置流控制属性:
dcb.fDsrSensitivity = FALSE;
dcb.fTXContinueOnXoff = FALSE;
dcb.fDtrControl = DTR_CONTROL_ENABLE;
switch (g_lpInst->flowControl)
{
case NoFlowControl:
{
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
break;
}
case CtsRtsFlowControl:
{
dcb.fOutxCtsFlow = TRUE;
dcb.fOutxDsrFlow = FALSE;
dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
break;
}
case CtsDtrFlowControl:
{
dcb.fOutxCtsFlow = TRUE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
break;
}
case DsrRtsFlowControl:
{
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = TRUE;
dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
break;
}
case DsrDtrFlowControl:
{
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = TRUE;
dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
break;
}
case XonXoffFlowControl:
{
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fOutX = TRUE;
dcb.fInX = TRUE;
dcb.XonChar = 0x11;
dcb.XoffChar = 0x13;
dcb.XoffLim = 100;
dcb.XonLim = 100;
break;
}
- 串口流控制DCB结构体解析及设置
- 串口流控制DCB结构体解析及设置
- 串口之DCB结构体详解
- 串口的DCB结构
- 串口DCB结构
- 串口通讯DCB结构
- 串口DCB结构详解
- DCB(串口的DCB结构)
- DCB - 串口通讯中的DCB结构
- 串口通讯中的DCB结构
- 串口通讯中的DCB结构
- 串口通讯中的DCB结构
- 串口通讯中的DCB结构
- Delphi串口DCB结构详解
- 串口DCB结构详细说明
- 串口通讯中的DCB结构
- 串口通讯中的DCB结构
- 串口通讯中的DCB结构
- 如何用自己个人电脑做服务器?
- design Pattern与架构师
- 使用Flask快速开发WEB应用-第二篇:Blueprint模块的应用
- c# winform 关于DataGridView的一些操作
- 第4堂作业
- 串口流控制DCB结构体解析及设置
- 完整性约束的SQL定义
- HDU 2189 悼念512汶川大地震遇难同胞——来生一起走 母函数
- 有些预装win8的本为何无法从USB启动?从光驱启动会卡?
- 态度决定一切
- Android开机自启动程序
- 同步线程锁 死锁
- 第四次课后作业
- Python应用范围总结概览