Проблемы не работает QCanBus - PullRequest
0 голосов
/ 11 мая 2018

Проблемы не создать Can Bus Device, создать проект Qt 5.10, почему не создать ?? Пакет serialbus должен быть подключен. МОЖЕТ быть подключен через USB. Это так сложно. Моя жизнь сложна. Я национальное меньшинство, я не такой умный, как белые хозяева, прошу не печалиться за меня.

может автобус Устройство не работает

enter image description here

file.pro

QT       += core gui serialbus

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = CAN_simple_experiment
TEMPLATE = app

DEFINES += QT_DEPRECATED_WARNINGS    

SOURCES += \
        main.cpp \
        mainwindow.cpp

HEADERS += \
        mainwindow.h

FORMS += \
        mainwindow.ui

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtSerialBus>
#include <QCanBus>
#include <QCanBusDevice>

#include <QDebug>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
int i  = 0;


MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
        // Create device.
         QCanBusDevice *device = 
          QCanBus::instance()>createDevice("socketcan","vcan0");

        if (device != nullptr){
            qDebug() << "Created device, state is:" << device->state();
            ui->textEdit->append("Created device, state is:"+ device->state());
        } else {
            qFatal("Unable to create CAN device.");
            ui->textEdit->append("Unable to create CAN device.");
        }
        //Connect.
        if(device->connectDevice()){
            qDebug() << "Connected, state is:" << device->state();
             ui->textEdit->append("Connected, state is:"+ device->state());
        } else {
            qDebug() << "Connect failed, error is:" << device->errorString();
            ui->textEdit->append("Connect failed, error is:"+ device->errorString());
        }
}

1 Ответ

0 голосов
/ 11 мая 2018

Сначала необходимо проверить интерфейсы SocketCAN, которые можно использовать, проверьте документацию .

QString errorString;
const QList<QCanBusDeviceInfo> devices = QCanBus::instance()->availableDevices(
    QStringLiteral("socketcan"), &errorString);
if (!errorString.isEmpty())
    qDebug() << errorString;

Невозможно создать устройство, если список пуст (смотрите errorString);

// Create device.
if (devices.count())
   QCanBusDevice *device = 
      QCanBus::instance()>createDevice("socketcan","vcan0");
...