Я очень стараюсь решить эту проблему. Но никак не мог разобраться в чем проблема! В Qt, C ++ я попытался реализовать запись и чтение через последовательный порт. Он может отправлять данные только по последовательному каналу, но не получать их с другого конца. Я искал в Google и StackOverFlow, но не смог решить эту проблему. Я установил пару виртуальных COM-портов COM1 <--> COM2
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSerialPort>
#include <QDebug>
//QSerialPort *serial;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
serial= new QSerialPort(this);
serial->setPortName("COM1");
serial->setBaudRate(QSerialPort::Baud9600);
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::NoParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
//serial->clearError();
//serial->setDataTerminalReady(false);
//serial->clear();
// qDebug() << "serial->open(QIODevice::ReadWrite)";
//serial->open(QIODevice::ReadWrite);
if (serial->open(QIODevice::ReadWrite))
{
qDebug() << "Com port opened";
// serial->setDataTerminalReady(false);
serial->write("Hello");
}
else
{
qDebug() << "Not opened";
}
ui->label->setText("Waiting..");
connect(serial,SIGNAL(readyRead()),this,SLOT(serialReceived()));
connect(serial, SIGNAL(error(QSerialPort::SerialPortError)), this,SLOT(handleError(QSerialPort::SerialPortError)));
}
MainWindow::~MainWindow()
{
delete ui;
serial->close();
}
void MainWindow::serialReceived(){
//QString received = this->Read();
//qDebug() << "received data:" << received;
QByteArray ba;
ba=serial->readAll();
ui->label->setText("Waiting..");
ui->label->setText(serial->readAll());
qDebug()<<ba;
qDebug() << "bytes available:" << serial->bytesAvailable();
}
void MainWindow::handleError(QSerialPort::SerialPortError error)
{
qDebug()<<"Error:"<<error;//I added this line
if(error==QSerialPort::ResourceError)
{
qDebug()<<"serial->errorString())";
//closeSerialPort();
}
}
COM1 назначен в коде Qt, а COM2 открыт в последовательном мониторе.
Для проверки я написал код PythonQT, который работает нормально, но мое требование - c ++