通过对部分源代码的学习,发现可能遇到的问题包括以下几个,并没有进行测试:
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—>5N1—>5N1.5的方式,因为8N1.5和5N2均不能转换成功。
由于默认的是8N1模式,因此在初始化过程中按照

本文总结了QextSerialPort库在Qt串行通信中可能遇到的问题,包括赋值运算符重载的疑问、RTS/CTS流控的详细说明、数据位和停止位的转换限制、时限设置的复杂性以及hEvent句柄的创建与销毁。内容基于源代码学习,未进行实际测试。
最低0.47元/天 解锁文章
1427

被折叠的 条评论
为什么被折叠?



