问题不起作用QCanBus

问题描述 投票:0回答:1

问题没有创建Can Bus Device,创建项目Qt 5.10为什么不创建?包串行总线连接。可以通过USB连接。非常辛苦。我的生活很难受。我是少数民族,我不像白人一样聪明,请不要为我而悲伤。

can bus设备无法正常工作

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());
        }
}
qt can-bus
1个回答
1
投票

首先需要检查可以使用的SocketCAN接口检查documentation

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");
© www.soinside.com 2019 - 2024. All rights reserved.