项目上需要上位机和底层板子进行can fd通讯,上位机采集板子的数据并检测其工作情况,底层板子数据通过can fd进行传输。前提条件是安装了PeakOemDrv.exe这个驱动(供应商提供,网上应该也能下载到),然后上位机通过USB线连接板子硬件,硬件连接成功后,在设备管理器中可以查看设备信息,如下:
编写的peakcan接口主要参考了这篇文章:QT5使用PCAN读取CAN数据_qcanbusdevice-CSDN博客。
1、环境:Qt5.15.2 +VS2019。
2、前提条件:.pro中需要添加QT += serialbus serialport。安装了PeakOemDrv.exe驱动。
3、编写的PeakCAN的代码:
peakcan.h
#ifndef PEAKCAN_H
#define PEAKCAN_H
#include <QCanBus>
#include <QObject>
#include <QTimer>
class PeakCAN : public QObject
{
Q_OBJECT
public:
PeakCAN(QString deviceName = "", QObject *parent = nullptr);
~PeakCAN();
bool Connect();
void Disconnect();
public slots:
void processErrors(QCanBusDevice::CanBusError);
void onReceiveFrames();
void onStateChangeHandle(QCanBusDevice::CanBusDeviceState state);
bool writeFrame(const quint32 id, const QByteArray &frame);
signals:
void connectedDone();
void disconnectedDone();
void framesReadReady(const QVector<QCanBusFrame> &);
private:
QCanBusDevice * m_canDevice = null