APP下载

IDL与VC信息相互传递的实现方法

2015-08-18米云博熊显名桂林电子科技大学电子工程与自动化学院广西桂林541004

网络安全与数据管理 2015年2期
关键词:C语言调用程序

米云博,熊显名,王 永(桂林电子科技大学 电子工程与自动化学院,广西 桂林 541004)

IDL与VC信息相互传递的实现方法

米云博,熊显名,王永
(桂林电子科技大学电子工程与自动化学院,广西桂林 541004)

为了准确传递和保存IDL可视化数据信息,实现语言之间的互通性、资源共享性、数据信息的多样性、调用格式的不同性,基于解析函数调用的方法,运用动态链接库和一系列的子类函数获取数据,使IDL与VC之间相互转换信息,可通过VC直接对遥感影像进行处理,为应用系统的研发提供了一种新方法。试验实例证明,该方法能简单有效地将IDL与VC有机地结合在一起,实现了信息相互传递,并通过C直接对遥感影像进行操作处理。

交互式语言;高级语言VC;信息传递;解析函数调用

0 引言

随着遥感技术的不断发展,交互式语言(IDL)成为人们关注的重要语言[1],在众多行业广泛应用。由于大部分软件和通信保存格式都是用高级语言C来编写的,因此,将IDL和C语言有机地结合在一起,且不需要改写原有的程序就能将遥感信息数据传递并保存,成为当前遥感领域急需解决的问题之一。C语言具有通用性、可扩展性、广泛性强的特点[2],因此应用最为广泛。目前,IDL与C语言的结合还比较少,各个国家都开展了IDL与C语言接口信息传递的研究,而中国在这方面还处在探讨阶段。因此,如何将IDL有效信息通过C语言传递并保存成为目前遥感领域以及高级语言领域里一个值得研究的方向。本文提出了一种函数调用方法,有效地实现了信息在IDL 与C语言之间的传递。

1 开发语言的使用

IDL是一种数据可视化面向矩阵的第4代交互式计算机语言,是集成可视化、大型商业开发、交互式分析为一体的高级开发环境[1]。IDL主要面向对象为可视化数据分析,它的语法结构简单、功能强大、编程效率高,简单的编程实现复杂的图像分析,是跨平台应用开发的最佳选择,它提供的图像类能够快速地对图像进行分析,可与OpenGL相媲美,因此被广泛地应用在遥感领域中[3]。

IDL支持各种操作系统平台,具有很好的移植性,为与VC相结合提供了基础。VC是微软推出的运行非常稳定、非常有影响力的专业级程序设计与数据处理语言。将IDL与VC有机地结合在一起,发挥各自优点,以实现资源共享,使IDL的信息具有广泛性和通用性。

2 解析函数调用方法

IDL为了扩充编程和数据处理能力,提供了应用程序接口(API)技术。利用API技术可方便地实现在IDL中调用 VC的可执行文件、函数和程序。数据传递总体框图如图1所示。

图1 数据传递框图

2.1IDL调用 VC

在IDL中调用VC可以使用3种方法:SPAWN方法、LINKIMAGE方法和CALL-EXTERNAL方法。利用SPAWN方法可以直接调用VC的可执行文件,但是执行调用不带参数的SPAWN命令时,将调用Windows的DOS Shell命令窗口,使用时需要转换。LINKIMAGE方法是通过系统所支持的动态链接接口完成程序调用任务,但使用此方法,开发者需要有丰富的 IDL内部知识,该方法不适合一般的开发者使用。利用 CALL-EXTERNAL方法能够在IDL调用VC中精准地匹配数据结构,对于非结构数据的传输,不需要调用其他命令窗口,具有 LINKIMAGE方法的优点,但不需要开发者对IDL内部特别熟悉,因此本文选用CALL-EXTERNAL方法来调用VC程序[4]。

IDL程序能在运行时动态调用VC程序,通过CALL-EXTERNAL接口函数装入共享目标库实现函数调用,在 Windows平台上,IDL通过动态链接库技术来实现,能够方便地实现模块化[5]。IDL调用动态链接库遵循C语言中函数调用协议。任何的动态库调用原型都被定义成 returntype()形式,返回值必须是CALL-EXTERNAL函数支持的数据类型。其中所有的参数都能以“传值”或“引用”方式进行传递。程序编写流程图如图2所示。

根据流程图编写程序。调用VC输入数据最终显示结果如图3所示。可以看出,该方法编写的程序能够很好地调用VC输入的数据,从而表明此方法的正确性、可行性。

图2 IDL调用VC程序流程图

图3 IDL调用VC结果显示图

2.2VC调用IDL

利用IDL的API,可以实现VC调用IDL的命令、函数和数据。调用IDL的技术在操作系统中都会调用IDL的驱动程序,而驱动程序会存在于IDL动态链接库中[6],调用时主要的3个环节如下。

(1)初始化IDL。在调用IDL之前要对IDL进行初始化,使用 IDL_Win32Init()函数来对 IDL进行初始化,使用方法为:其中,abc取值为0保留参数,后面两个参数都是句柄,null也是一个保留参数取值为 NULL的数,当初始化成功返回值为“TURE”。

(2)VC应用程序中输出在同一个逻辑窗口,当IDL被调用时,默认的输出函数会被 IDL所覆盖,需要通过IDL_ToutPush和 IDL_ToutPop来转移 IDL的输出结果到指定的函数中。IDL中提供了IDL_Execute()和 IDL_ExecuteStr()两个函数,用于在其他语言中调用 IDL语句,调用具体形式为;

(3)在调用完IDL语句之后主函数执行完之前,需要通过函数 IDL_Cleaup来关闭IDL。调用方法为:

int IDL_Cleaup(int just cleanup);

根据IDL的调用方法在VC6.0的编译环境下,通过动态链接库实现一个能调用IDL的VC程序,程序编写流程图如图4所示。

根据流程图编写程序具体实现VC调用IDL,VC程序调用“IDL输入”的结果,在 IDL编辑对话框输入编辑内容,在VC编辑窗口点击接收按钮将“IDL输入”数据显示在VC编辑对话框的显示框内,显示结果如图5所示。

图4 VC调用IDL流程图

图5 VC调用IDL的效果图

3 实验

根据上述方法可知,IDL 与VC之间可以通过动态链接库相互之间传递数据,由于 IDL主要是 GUI界面,大部分是对图像进行处理,因此对图像数据信息的传递尤为重要。根据上述方法进行程序的编写,使VC能够接收IDL图像并以VC的保存格式来保存IDL的数据信息,并直接对图像处理,再将处理结果直接传递给 IDL。本文利用IDL编写的水深反演软件将处理的图像信息按照上述方法传输给VC程序,利用VC来显示IDL处理图像的结果,如图6和图7所示。

图6 IDL水深反演软件进行图像处理结果图

图7 VC调用IDL资源及图像处理图

根据图像显示结果可知,IDL和VC可以相互转换数据,也可以将数据以它们各自的形式进行保存,从而说明IDL和VC可以很好地结合在一起,信息可以相互传递实现资源共享。

4 结论

本文介绍了将IDL和VC相互结合的方法,让它们体现各自的特点,详细描述了实现方法,并用实际例子来证明了本文方法的可行性和正确性。本文方法为IDL 和VC混合开发软件提供了参考基础,也为两种语言的应用研究开发提供了一种新的思路和方法,对IDL和 VC资源共享的研究具有重要意义。

[1]韩培友.IDL可视化分析与应用[M].西安:西北工业大学出版社,2006.

[2]孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2007.

[3]陶治,张文涛,熊显名,等.基于IDL生成XML文件实现信息传递的方法[J].桂林电子科学学报,2014,34(1):56-59.

[4]RSI.IDL reference guide(First Edition)[M].American:RSI,2005.

[5]徐炉清,顿敦.动态链接库(DLL)的应用[J].机械与电子,1999(4):19-48.

[6]李义才,汪新庆,刘志军,等.IDL与 Visual C/C++语言进行混合编程的方法研究 [J].计算机应用研究,2011 (7):46-48.

The method of achieving information transfer between IDL and VC

Mi Yunbo,Xiong Xianming,Wang Yong
(School of Electrical Engineering and Automation,Guilin University of Electronic Technology,Guilin 541004,China)

In order to accurately transfer and save the IDL visualization data information,achieve interoperability between different languages,resource sharing,the diversity of data information and the dissimilarity of call format,a new way has been provided for development of application system.It′s based on the method of a parsing function call,using dynamic link library and a series of subclasses function to get the data which can transfer information between IDL and VC and deal with remote sensing image by VC language directly.Verified by tests,this method unites IDL and VC together simply and effectively.It can achieve transformation of mutual information and deal with remote sensing image by C language directly.

Interactive Data Language(IDL);advanced language VC;information transfer;call of parsing function

TP79

A

1674-7720(2015)02-0080-03

(2014-08-28)

米云博(1987-),女,硕士研究生,主要研究方向:遥感技术应用以及图像处理。

熊显名(1964-),男,本科,研究员,主要研究方向:光学测试及计算机技术。

王永(1986-),男,硕士研究生,主要研究方向:遥感技术应用以及图像处理。

猜你喜欢

C语言调用程序
基于Visual Studio Code的C语言程序设计实践教学探索
核电项目物项调用管理的应用研究
51单片机C语言入门方法
试论我国未决羁押程序的立法完善
基于C语言的计算机软件编程
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
基于系统调用的恶意软件检测技术研究
高职高专院校C语言程序设计教学改革探索
创卫暗访程序有待改进