0
我想制作一个连接到RS232设备并发送一些命令的C++程序。我目前一次只能发送一条命令,但我遇到了问题。它看起来像我发送命令时没有调用serial.close(),我得到设备的响应命令,告诉我没关系,但之后,串口关闭。如果我拨打serial.close(),我可以根据需要多次发送该命令,但设备不会回应。下面是我的代码部分,包括设置和连接顺序使用:发送命令后关闭串口
/*Create the serial port and configure it*/
QSerialPort serial;
serial.setPortName("COM39");
serial.setBaudRate(QSerialPort::Baud9600);
serial.setDataBits(QSerialPort::Data8);
serial.setParity(QSerialPort::NoParity);
serial.setStopBits(QSerialPort::OneStop);
serial.setFlowControl(QSerialPort::NoFlowControl);
/*Connect to serial port and send the command*/
if(serial.open(QIODevice::ReadWrite)){
ui->label->setText("Connected");
serial.write("NOW11000000.....mENDBAAF");
//serial.close();
qDebug()<<"Command sent";
}
else{
ui->label->setText("Not Connected");
}
我使用一个端口监控软件来看看该设备是否与我的程序通过COM39端口进行通信,这就是我怎么想通出了什么问题。 我试着写了一个打开端口的函数,但它进入了一个无限循环或不工作。
也许检查什么方法write()返回给你一些提示?它返回实际写入的字节数,如果发生错误则返回-1。 – talamaki
感谢您的帮助,我通过在配置端口后立即调用** serial.open()**方法来解决此问题。现在它的工作原理应该如此。我会在一会儿回答这个问题。 – Alex