pyqt5通过CANoe COM Server来操作CANoe仿真工程

本文介绍了如何通过pyqt5应用程序利用CANoe的COM Server技术来控制CANoe仿真工程,包括配置修改、测量控制、数据交换和自动化测试等功能。详细讲述了UI设计、功能实现步骤,并提供了代码示例。
摘要由CSDN通过智能技术生成


前言

继续学习《CANoe开发从入门到精通》。
今天在《CANoe仿真工程开发》的基础上,开发实现pyqt5应用程序来操控CANoe工程。

一、COM接口技术

COM(Component Object Model,组件对象模型)是一种描述如何建立可动态互变组件的规范,此规范提供了为保证能够互相操作,客户端和组件应遵循的一些二进制和网络标准。通过这种标准将可以在任意两个组件之间进行通信,而不用考虑其所处的操作环境是否相同、使用的开发语言是否一致以及是否运行于同一台计算机。

从早期版本开始,CANoe就开始支持COM接口技术。通过COM Server可以实现以下功能:
(1)创建和修改CANoe的配置;
(2)实现测量的自动控制,如工程加载、开始或结束测量、开始测试模块等;
(3)与外部应用软件的数据交换,如读写信号、系统变量等;
(4)开发用户的自定义面板,实现自动化测试;
(5)远程控制CANoe进行测量;
(6)调用CANoe中自定义的CAPL函数。
CANoe COM Server对于大家熟悉的编程语言或脚本语言都有很好的支持,例如Visual Basic、Delphi、C/C++、C#、Python、LabVIEW、VBScript、JScript、Perl和VBA等。

在CANoe安装时,COM Server已经注册好了。如果安装文件夹有变,或者目前注册的CANoe版本不是用户所期望的。可以直接找到CANoe 的安装文件夹( 例 如 CANoe 16 SP4 64-bit 安 装 文 件 夹 D:\Program Files\Vector CANoe 16\Exec64 ) , 执 行RegisterComponents.exe。

二、UI界面设计

1、Pycharm新建工程;

2、右键,找到"External Tools",选择QT Designer,进入QT5的UI设计界面
在这里插入图片描述
3、添加相应的控件、设置好参数。最终的UI界面如下:
在这里插入图片描述
在这里插入图片描述

设计完成后,保存为CanoeDemo.ui。

4、回到PyCharm工程,CanoeDemo.ui文件,然后右键,找到"External Tools",选择PyUIC,将UI设计文件转换为CanoeDemo.py文件。
在这里插入图片描述
CanoeDemo.py文件如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'CanoeDemo.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_CanoeDemo(object):
    def setupUi(self, CanoeDemo):
        CanoeDemo.setObjectName("CanoeDemo")
        CanoeDemo.resize(633, 508)
        CanoeDemo.setMouseTracking(True)
        CanoeDemo.setTabletTracking(True)
        CanoeDemo.setAutoFillBackground(True)
        self.groupBox = QtWidgets.QGroupBox(CanoeDemo)
        self.groupBox.setGeometry(QtCore.QRect(10, 0, 531, 111))
        self.groupBox.setObjectName("groupBox")
        self.lineEdit = QtWidgets.QLineEdit(self.groupBox)
        self.lineEdit.setGeometry(QtCore.QRect(20, 20, 401, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.OpenButton = QtWidgets.QPushButton(self.groupBox)
        self.OpenButton.setGeometry(QtCore.QRect(440, 20, 75, 23))
        self.OpenButton.setObjectName("OpenButton")
   
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值