История изменений
Исправление keeper_b, (текущая версия) :
Упростил код, проверил в винде работает (счётчик на него отвечает) в linux нет.
mainwindow.hpp
#ifndef MAINWINDOW_HPP
#define MAINWINDOW_HPP
#include <QMainWindow>
#include <QSerialPort>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void read();
void errorSerail(QSerialPort::SerialPortError err);
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
QSerialPort *serial;
};
#endif // MAINWINDOW_HPP
mainwindow.cpp
#include "mainwindow.hpp"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
serial(new QSerialPort(this))
{
ui->setupUi(this);
serial->setPortName("/dev/ttyXRUSB0");
serial->setBaudRate(QSerialPort::Baud9600);
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::NoParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
serial->open(QIODevice::ReadWrite);
if(serial->isWritable())
{
qDebug() << "Yes, i can write to port!";
}
connect(serial, SIGNAL(readyRead()),
this, SLOT(read()));
connect(serial, SIGNAL(error(QSerialPort::SerialPortError)),
this, SLOT(errorSerail(QSerialPort::SerialPortError)));
serial->clear();
QByteArray be = QByteArray::fromHex("000BDF2F2F4A32");
qint64 bytesWrited = serial->write(be, 7);
serial->flush();
qint64 bytesAvailable = serial->bytesAvailable();
qDebug() << "Bytes writed: " << bytesWrited;
qDebug() << "Bytes available: " << bytesAvailable;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::read()
{
QByteArray bytes = serial->readAll();
qDebug() << QString(bytes.toHex().toUpper());
}
void MainWindow::errorSerail(QSerialPort::SerialPortError err)
{
qDebug() << "Error: " << err;
}
void MainWindow::on_pushButton_clicked()
{
serial->close();
}
Исходная версия keeper_b, :
Упростил код, проверил в винде работает в linux нет.
mainwindow.hpp
#ifndef MAINWINDOW_HPP
#define MAINWINDOW_HPP
#include <QMainWindow>
#include <QSerialPort>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void read();
void errorSerail(QSerialPort::SerialPortError err);
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
QSerialPort *serial;
};
#endif // MAINWINDOW_HPP
mainwindow.cpp
#include "mainwindow.hpp"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
serial(new QSerialPort(this))
{
ui->setupUi(this);
serial->setPortName("/dev/ttyXRUSB0");
serial->setBaudRate(QSerialPort::Baud9600);
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::NoParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
serial->open(QIODevice::ReadWrite);
if(serial->isWritable())
{
qDebug() << "Yes, i can write to port!";
}
connect(serial, SIGNAL(readyRead()),
this, SLOT(read()));
connect(serial, SIGNAL(error(QSerialPort::SerialPortError)),
this, SLOT(errorSerail(QSerialPort::SerialPortError)));
serial->clear();
QByteArray be = QByteArray::fromHex("000BDF2F2F4A32");
qint64 bytesWrited = serial->write(be, 7);
serial->flush();
qint64 bytesAvailable = serial->bytesAvailable();
qDebug() << "Bytes writed: " << bytesWrited;
qDebug() << "Bytes available: " << bytesAvailable;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::read()
{
QByteArray bytes = serial->readAll();
qDebug() << QString(bytes.toHex().toUpper());
}
void MainWindow::errorSerail(QSerialPort::SerialPortError err)
{
qDebug() << "Error: " << err;
}
void MainWindow::on_pushButton_clicked()
{
serial->close();
}