• 大小: 38KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: 其他
  • 标签: qt  CAN卡  

资源简介

资源为QT显示调用周立功CAN卡实例。因为自己学习QT的时间并不长,有很多不懂的,为了解决qt调用CAN卡第三方库花了很长时间,后来发现其实很简单,只是步骤有些许繁琐。先将一个简单实例共享,希望为大家提供便利。关于调用第三方库可以访问博客

资源截图

代码片段和文件信息

#include “mainwindow.h“
#include “ui_mainwindow.h“
#include 
#include 
#include 
#include 

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    devtype=4;//设备类型can2
    devind=0;//设备索引号
    res=0;
    canind=1;//第2路CAN
    reftype=0;//参数类型

    bool ok;
    VCI_ERR_INFO vei;
    VCI_CAN_OBJ preceive[100];
    VCI_CAN_OBJ psend;
    int baud=0x10000000;//参数有关数据缓冲区地址首指针
  //导入库
    QLibrary lib(“usbcan.dll“);
    if(true==lib.load())
        qDebug()<<“dll load ok“;

    QTimer *timer=new QTimer;

    pOpenDevice = (VCI_OpenDevice *)lib.resolve(“VCI_OpenDevice“);
    pCloseDevice = (VCI_CloseDevice *)lib.resolve(“VCI_CloseDevice“);
    pInitCAN = (VCI_InitCAN *)lib.resolve(“VCI_InitCAN“);
    pStartCAN = (VCI_StartCAN *)lib.resolve(“VCI_StartCAN“);
    pTransmitCAN = (VCI_Transmit *)lib.resolve(“VCI_Transmit“);
    pReceive = (VCI_Receive *)lib.resolve(“VCI_Receive“);
    pGetReceiveNum = (VCI_GetReceiveNum *)lib.resolve(“VCI_GetReceiveNum“);
    pClearBuffer = (VCI_ClearBuffer *)lib.resolve(“VCI_ClearBuffer“);
    pReadErrInfoCAN = (VCI_ReadErrInfo*)lib.resolve(“VCI_ReadErrInfo“);
    pResetCAN=(VCI_ResetCAN *)lib.resolve(“VCI_ResetCAN“);
    pSetReference=(VCI_SetReference *)lib.resolve(“VCI_SetReference“);
    pReadBoardInfo=(VCI_ReadBoardInfo *)lib.resolve(“VCI_ReadBoardInfo“);
    pReadCANStatus=(VCI_ReadCANStatus *)lib.resolve(“VCI_ReadCANStatus“);

}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::on_openCanBtn_2_clicked()//启动设备并初始化
{
    bool ok;
    VCI_ERR_INFO vei;
    VCI_CAN_OBJ preceive[100];
    VCI_CAN_OBJ psend;
    int baud=0x10000000;//参数有关数据缓冲区地址首指针
   //打开设备
    if(pOpenDevice(devtypedevindres)==STATUS_ERR )
    {
        if(pReadErrInfoCAN(devtypedevindcanind&vei)!=STATUS_ERR)
        {
        qDebug()<<“打开失败:“<        }else
            qDebug()<<“error“;
        return;
    }else
        qDebug()<<“open successed“;

    //初始化
    VCI_INIT_CONFIG init_config;
    init_config.Mode=0;//正常模式,1为只听模式
    init_config.Filter=1;//滤波方式,单滤波
    init_config.Timing0=01;//定时器0
    //init_config.Timing1=1C;//定时器1
    init_config.AccCode=0x10000000;//验收码
    init_config.AccMask=0xFFFFFFFF;//屏蔽码
    if(pInitCAN(devtypedevindcanind&init_config)==STATUS_ERR){
        qDebug(“Init Error“);
        pCloseDevice(devtypedevind);
        return;
    }else
        qDebug()<<“Init successed“;


    //读取设备信息
    VCI_BOARD_INFO vbi;
    if(pReadBoardInfo(devtypedevind&vbi)!=STATUS_ERR){
        qDebug()<<“CAN通道数:“<        qDebug()<<“硬件版本号:“<        qDebug()<<“接口库版本号:“<        qDebug()<<“中断号“<    }
    //设置设备参数
    if(pSetReference(devtypedevindcanindreftype&baud)==STATUS_ERR){
        qDebug(“set reference error“);
        pCl

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5194  2017-09-20 11:10  ControlCAN.h

     文件       6079  2017-10-23 15:08  mainwindow.cpp

     文件       2519  2017-09-25 13:42  mainwindow.h

     文件      45056  2016-10-12 00:46  usbcan.dll

     文件      53248  2005-07-01 10:13  ControlCAN.dll

----------- ---------  ---------- -----  ----

               112096                    5


评论

共有 条评论