0%

Vissim COM接口教程--VISSIM的调用(一)

想了很久感觉需要将这一块写成教程,方便更多需要使用VISSIM二次开发的同学入门和交流,主要会介绍如何用其他的环境调用VISSIM,如何从VISSIM中取出数据,以及如何写入数据,我会尽量讲的详细些,但不会涉及编程语言的教学,本教程中的软件环境为VS2013+VISSIM7.0。
PS:VISSIM7.0的版本中,COM接口函数基本重写了,因此若使用5.4版本和4.3版本的同学需要按照使用版本的手册去查询相关的对象和函数关系。(更新后将采用VISSIM5.4+VS2013环境,本篇将补充其引用方式)
本人交通出生,并不是计算机专业,若代码写的较烂,或是有什么错误的地方,希望大家批评指正,万分感谢!

VISSIM的调用

COM组件介绍

COM component(COM组件)是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。
在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。
由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;
可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;
COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块。
摘自百度百科。
直白一点的说,COM接口为我们提供了一个访问程序内部数据的接口,而且COM是没有语言限制。

在安装完VISSIM的程序以后,就会在你的计算机中注册COM组件,这时其他的程序就可以通过这个访问到VISSIM。

使用COM接口能做什么?

  • 自动多次实验
    我们在做仿真实验的时候,最常见的就是交叉实验,会测试很多组参数,而每次手动的去修改参数再跑会严重的影响效率,此时COM就是你的好帮手。
    仅仅需要在程序中写上循环,以及每次参数的修改,然后就跑吧。
  • 感应控制
    在VISSIM中感应控制可以通过VAP模块实现,VAP是以逻辑图的方式体现控制思路,相对比较简单易用。COM会更加复杂,但是更加灵活,大多数的参数都是在自己的控制当中。
  • 与其他平台对接
    在平时的科研中,会遇到单用VISSIM并不能解决问题,有时需要通过中间平台与其他各种软件平台对接。
  • 跟多功能大家自己去发掘吧!

C#调用VISSIM

在VS2013环境下,新建C#项目,然后:

项目->添加应用->(找到对应的VISSIM版本lib)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
//VISSIM7.0的引用
using VISSIMLIB;
//5.4或4.3的引用
//using VISSIM_COMSERVERLib;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Vissim vissim = new Vissim(); //初始化VISSIM
ISimulation simulation = vissim.Simulation; //实例化仿真接口
vissim.LoadNet(@"path"); //加载路网文件
vissim.LoadLayout(@"path"); //加载配置文件
simulation.RunContinuous(); //开始仿真
}
}
}

添加引用
添加引用
添加引用

** PS:此处若引用VISSIM5.4或4.3版本时候,需要找到对应的COM组件进行引用,后文不赘述,小伙伴应该能够解决。**

VBA调用VISSIM

1
2
3
4
Set Vissim = CreateObject("Vissim.Vissim.700")
Vissim.LoadNet(Filename)
Vissim.Simulation.RunContinuous

Python调用VISSIM

1
2
3
4
5
import win32com.client as com
Vissim = com.Dispatch("Vissim.Vissim.700")
Vissim.LoadNet(Filename)
Vissim.SaveNetAs(Filename)
Vissim.Simulation.RunContinuous()

Matlab调用VISSIM

1
2
3
4
Vissim = actxserver('Vissim.Vissim.700');
Vissim.LoadNet(Filename);
Vissim.SaveNetAs(Filename)
Vissim.Simulation.RunContinuous

其他调用方式可参考文档VISSIM7.0COMVISSIM 函数查询
更新4.3-5.4手册VISSIM 4.3-5.4 COM手册

修改于2021年5月10日,主要更正图片引用等