Привет!
Мне надо освоить работу с COM-портом. Для этого написал самую простейшую программу, которая не работает. Точнее две программы: одна записывает в порт, другая должна прочитать.
Опишу ситуацию подробнее. На ноутбуке нет COM-портов, поэтому я скачал вот эту программу:
ссылка Она позволяет создать два виртуальных COM-порта и замкнуть их, то есть если одна программа пишет в один порт, например в COM7, то другая может прочитать, к примеру, из COM8.
Как я понимаю, что если я записал данные в порт, то они там будут лежать пока из не считают. Если просто писать в порт, то после переполнения буфера - первые данные будут исчезать.
Я создал два замкнутых виртуальных порта: COM7 и COML8. И написал две короткие программки.
Первая программа у меня настраивает порт COM7 и записывает в него данные по клику по кнопке:
C++ (Qt)
void Dialog::on_SendPushButton_clicked()
{
// Set serial port
QSerialPort transmitter;
transmitter.setPortName( ui->PortNumOfTransmitterComboBox->currentText( ) );
transmitter.setBaudRate( QSerialPort::Baud9600 );
transmitter.setDataBits( QSerialPort::Data8 );
transmitter.setParity( QSerialPort::NoParity );
transmitter.setStopBits( QSerialPort::OneStop );
transmitter.setFlowControl( QSerialPort::NoFlowControl );
// Open serial port
if ( !transmitter.open( QIODevice::WriteOnly ) ) {
QMessageBox::critical( this, "Error", transmitter.errorString() );
return;
}
// Write data to the port
QByteArray data;
data.append( 0x0f0 );
transmitter.write(data);
}
Вторая программа - настраивает порт COM8, считывает данные и выводит на экран:
C++ (Qt)
void Dialog::on_GetPushButton_clicked( )
{
// Set serial port
QSerialPort receiver;
receiver.setPortName( ui->PortNumOfReceiverComboBox->currentText( ) );
receiver.setBaudRate( QSerialPort::Baud9600 );
receiver.setDataBits( QSerialPort::Data8 );
receiver.setFlowControl( QSerialPort::NoFlowControl );
receiver.setStopBits( QSerialPort::OneStop );
receiver.setParity( QSerialPort::NoParity );
// Open serial port
if ( !receiver.open( QIODevice::ReadOnly ) ) {
QMessageBox::critical( this, "Error", receiver.errorString( ) );
return;
}
// Read data from serial port
QByteArray data;
data = receiver.readAll( );
qDebug() << data.toHex( );
}
Но данные не выводятся. Заранее спасибо за помощь!