问题描述
我正在用Qt进行接口操作,我可以用一块电子板进行连接,一切都很好,问题是我想断开串行端口,但是我不能。我尝试过了
electronic_board.clear();
和
if(electronic_board.isopen())
electronic_board.close();
但没有用。
connectios是这个
bool Init(){
Q_FOREACH(QSerialPortInfo port,QSerialPortInfo::availablePorts()){
electronic_board.setPortName(port.portName());
electronic_board.setBaudrate(115200);
electronic_board.setDataBits(QSerialPort::Data8);
electronic_board.setParity(QSerialPort::noparity);
electronic_board.setStopBits(QSerialPort::Onestop);
electronic_board.setFlowControl(QSerialPort::NoFlowControl);
try {
if(electronic_board.isopen())
electronic_board.close();
if(electronic_board.open(qiodevice::ReadWrite)){
char arr[1] = {'O'};
QByteArray Iniciar(arr,1);
electronic_board.write(Iniciar);
electronic_board.waitForBytesWritten(500);
QThread::msleep(30);
electronic_board.waitForReadyRead(100);
QByteArray requestData;
int i = 0;
while (requestData.length() != 1) {
QThread::msleep(10);
requestData = electronic_board.readAll();
if(i++ >= 30){
break;
}
}
if(requestData[0] == 'K'){
return true;
}
}
}
} catch (...) {
}
}
return false;
}
连接正确,也使用此
connect(&electronic_board,&QSerialPort::readyRead,this,frame_available);
那么,如何断开串行端口的连接? 有人可以帮助我吗?
解决方法
我认为您用来关闭串行端口的代码是可行的,但是您永远不会为列表的最后一个串行端口调用它。