发现通过串口调试助手向自己写的qt发送数据时,0x11、0x13(可能还有更多)直接被丢弃。
经过在网上反复搜索,发现这篇文章https://blog.csdn.net/vipchenvip/article/details/80744948上写道“启动/停止流控输出”字样,虽然是关于linux的,但是应该也是流控出了问题,回头看自己写的代码:
//设置流控-默认无流控
void LSerialPort::SerialPortFlowCtlSet(QString strFlowCtl)
{
QSerialPort::FlowControl FlowCtl=QSerialPort::NoFlowControl;
if("N"==strFlowCtl ||"n"==strFlowCtl)
{
//无流控
FlowCtl=QSerialPort::NoFlowControl;
}
else if("H"==strFlowCtl ||"h"==strFlowCtl)
{
//硬件流控
FlowCtl=QSerialPort::HardwareControl;
}
else if("S"==strFlowCtl ||"s"==strFlowCtl)
{
//软件流控
FlowCtl=QSerialPort::SoftwareControl;
}
serialport.setFlowControl(QSerialPort::SoftwareControl);
}
好吧,发现问题了,函数功能没起作用,一直是软流控,一般操作都是设置为无流控,怪不得出问题,改成如下就好了,这样就能正常设置无/软/硬流控了:
serialport.setFlowControl(FlowCtl);