自动识别串口号
读取电脑的注册表,将串口部分加入到列表中,然后加入到下拉栏中
参考
打开COM9之后的串口
struct PortSettings myComSetting= {BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};
portName = ui.ChuankouNum->currentText();
QString m_port = portName.right(portName.length()-3);
if(m_port.toInt()>9)//判断串口号大于9,则按照下列格式进行整理
{
QString xx = "\\\\.\\";
xx.append(portName);
p_SerialPort = new Win_QextSerialPort(xx,myComSetting, QextSerialBase::EventDriven);
}
else
{
p_SerialPort = new Win_QextSerialPort(portName,myComSetting, QextSerialBase::EventDriven);
}
if(!p_SerialPort->open(QIODevice::ReadWrite))//以读写方式打开串口
{
ui.label_0->setVisible(true);
return false;
}
注:一定要打开串口后再进行配置(如波特率、停止位……),否则配置不会起作用。
现象:每次关闭程序后会出现“xxx.exe已停止工作”
原因1:没有释放掉程序中的变量占用的动态内存(即用new定义的变量如threadA = new Thread(); 没有删除)
方法:在析构函数中加入
if(threadA) delete [] threadA;
注:要求变量(此例为threadA)为指针类型。
注:C++中只有动态申请的内存需要手动释放:
比如 malloc对应free new对应delete
原因2:可能对已经删除的变量在析构函数里面进行了操作
Qt textBrowser滚动条设置到底部
如下图所示
在用到TextBrower(此例TextBrower名为Display)的地方加上一句
ui.Display->moveCursor(QTextCursor::End);