MATLAB调用ActiveX控件进行二次开发

2021/7/16 MATLABActiveX控件设备开发THORLABS

# 一、ActiveX简介

# 1.1ActiveX是什么

ActiveX是一种基于窗口的、独立于语言的技术,允许用户快速开发定制应用程序

  • 可用于桌面也可用于网络
  • 是封装、跨平台和重用技术的延申

ActiveX技术能让Web像桌面程序一样与其他软件交互,如让Web与其他软件通过TCP/UDP方式通信

ActiveX让Web与串口进行通信

# 1.2应用领域

随着软件技术的发展,程序的开放性、可重用性与封装变得越来越重要,而ActiveX是提高程序的开放性、可重用性和封装性的重要手段,现在ActiveX已经应用于数据管理、图形显示、用户界面、界面加密与接口封装等

总的来说,ActiveX是对某些技术的一种封装以供调用

由于其具有兼容的统一接口,可以给C++、Delphi、C#、MATLAB等语言调用

# 1.3ActiveX分类

  • 按运行方式分:

可分为进程内与进程外服务器,进程内是指ActiveX与包容器同一个进程一般以DLL形式发行,进程外是指与包容器不同一个进程,其以独立方式运行,一般以exe文件方式发行。

  • 按运行地点分:

    可分为本地服务器与远程服务器,本地是指ActiveX与包容器同一计算机运行,远程服务器那就是不同一计算机上运行。

# 1.4性能机制

(1)属性和方法:ActiveX控件必须提供属性的名称、方法的名称及参数。通过这项机制,容器可以存取和改变ActiveX控件的属性参数

(2)事件:ActiveX控件由事件机制通知容器在ActiveX控件中发生的时间。比如属性参数的改变,用户按下了鼠标左键等等

(3)存储:容器由存储机制通知ActiveX控件存储和提取有关信息数据等等

# 二、COM规范

COM是种规范,叫组件对象模型,以组件为发布单元的对象模型,规范提供了统一的方式进行交互,不依赖于任何语文,也是不同语文之类协作开发的一种标准。

COM的主要思想是把一个大项目切成N小块,每个小块可以由不同的团队,不语言开发只要各个模块遵循COM规范就可协同工作。这样灵活化、升级方便、问题快速定位开发自由化。

# 三、MATLAB中使用ActiveX控件

# 3.1引入

提供图形用户界面(GUI,Graphical User Interface)的应用程序能够使用户的学习和使用更为方便和容易。

ActiveX控件只要在Windows和Registry数据库中注册后,用户可以像使用Windows通用控件一样,把用户自己创建或第三方提供的ActiveX控件插入到某个应用程序中以实现自己的特殊要求。就可以像其他Windows应用程 序一样发挥各自的功能。

# 3.2外部调用ActiveX控件

首先值得注意的是:每一个ActiveX控件都有一个其所对应的ProgID(Programmatic Identifier),也就是ActiveX控件的编程标识

# 3.2.1查询ActiveX控件progID

在使用MATLAB GUI进行对ActiveX控件的调用时可以使用其内置方法对整个计算机(Windows系统)中已经注册的ActiveX空间进行查看

(1)在MATLAB命令行中输入命令

>> guide
1.PNG

(2)弹出新建GUIDE窗口选择Blank GUI(defualt)并点击确认

2.PNG

(3)获得一个GUI的创建界面,左侧工具中可以找到ActiveX控件按钮并点击查看

3.PNG

(4)等待设备读取即可展示所有计算机内已注册并可使用的ActiveX控件,右下角即可查询所选控件的ProgID(Program ID)

image-20210716195155013

# 3.2.2ActiveX对象创建及调用

若使用ActiveX对象,需要创建对象并获取关于它的信息(属性、方法和事件)

(1)创建ActiveX实例

h = actxcontrol('progid', position, fig_handle) 

(2)获取有关ActiveX方法的信息

命令行键入或在.m文件中写入

>> h.methods 

(3)获取有关ActiveX属性的信息

命令行键入或在.m文件中写入

% 查询属性列表
>> get(h)

% 查询某一属性的值
>> get(h, ‘PropertyName’)

(4)获取有关ActiveX事件的信息

命令行键入或在.m文件中写入

>> h.events 

(5)ActiveX方法使用

执行或调用ActiveX方法

若要查看ActiveX对象支持哪些方法,可以使用methodsviewmethodsinvoke命令

h.methods(-full’) 

可以使用methodsview命令打开一个包含所有方法的新窗口

methodsview(h)
6.PNG

# 3.3调用ActiveX方法

若要调用ActiveX对象方法,需要使用语法

outputvalue = object.methodname(‘arg1’, ’arg2’,);

其中参数arg1,arg2等参数在帮助文档中定义

# 3.4使用ActiveX事件

事件通常是用户发起的动作,在动作完成时发生。例如,用鼠标点击按钮会触发“鼠标点击”事件。事件处理程序将在事件触发后执行。