通过对部分源代码的学习,发现可能遇到的问题包括以下几个,并没有进行测试:
1. 赋值运算符重载
Win_QextSerialPort& Win_QextSerialPort::operator=(const Win_QextSerialPort& s);
实现时没有采用其他构造函数开头的
Win_Handle=INVALID_HANDLE_VALUE;
语句,不知道是为什么,暂不使用此函数。
2. RTS/CTS
void Win_QextSerialPort::setFlowControl(FlowType flow)
QextSerialPort提供三种流控方式:
- FLOW_OFF 不使用流控
- FLOW_HARDWARE 硬件(RTS/CTS)流控
- FLOW_XONXOFF 软件(XON/XOFF)流控
RTS/CTS流控是针对数据发送的,对数据的接收没有控制
备注:
QextSerialPort对发送进行操作:
- dcb.fOutxCtsFlow
- dcb.fRtsControl
WINAPI还提供对接收进行操作:
- DCB::fDtrControl
- DCB::fDsrFlow
- DCB::fDsrSensitivity
3. 数据位和停止位
每次修改数据位或停止位的时候都会判断是否允许转换。
如果要从8N2转换成5N1.5,必须采用8N2—>8N1—>