IDL与VC信息相互传递的实现方法(id与vds的关系图)

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

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所示。

2.1 IDL调用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语言中函数调用协议。任何的动态库调用原型都被定义成return-type形式,返回值必须是CALL-EXTERNAL函数支持的数据类型。其中所有的参数都能以“传值”或“引用”方式进行传递。程序编写流程图如图2所示。

IDL与VC信息相互传递的实现方法(id与vds的关系图)

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

2.2 VC调用IDL

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

(1)初始化IDL。在调用IDL之前要对IDL进行初始化,使用IDL_Win32Init函数来对IDL进行初始化,使用方法为:

int IDL_Win32Init(int abc,void*hst,void*use,void*null);

其中,abc取值为0保留参数,后面两个参数都是句柄,null也是一个保留参数取值为NULL的数,当初始化成功返回值为“TURE”。

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

int IDL_Execute(int argc,char*nrcv[]);

int IDL_Execute(char*comd);

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

int IDL_Cleaup(int just cleanup);

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

IDL与VC信息相互传递的实现方法(id与vds的关系图)

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

3 实验

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

IDL与VC信息相互传递的实现方法(id与vds的关系图)IDL与VC信息相互传递的实现方法(id与vds的关系图)

根据图像显示结果可知,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.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月11日 上午10:35
下一篇 2023年4月11日 上午10:45

相关推荐

  • 低代码开发平台动态部署

    低代码开发平台是一种能够快速构建应用程序的工具,它通过图形化界面和可视化编程的方式,使开发人员能够以更简单、更快速的方式创建和部署应用程序。而动态部署则是指将应用程序部署到云端或其…

    科研百科 2024年2月24日
    137
  • 项目管理篇:产品经理如何推进复杂项目按时上线?(产品经理如何做好项目管理)

    编辑导语:一个项目的上线往往需要考虑很多因素,即使经过了精细的策划,但是在项目推进过程中随时会遇到各种问题。因此产品经理经常会面临项目延期,无法上线的情况。基于此,产品经理应该做些…

    科研百科 2023年11月26日
    203
  • 湖南信息职院:用心用情让“信仰红”成为暑期主色调

    科教新报·新湖南客户端讯(通讯员 廖帅 康钦珏)秋风送爽的时节迎来了新学期,这也意味着湖南信息职院经济管理学院的师生们又度过了一个红色暑期,在这个火热的暑假,探访一处革命旧址,参观…

    科研百科 2023年10月17日
    166
  • 振发昌

    振发昌:一个传奇的名字 振发昌,一个传奇的名字。他出生在一个贫穷的家庭,但他拥有着不屈不挠的精神和强烈的求知欲。在他年轻的时候,他放弃了自己的家庭和工作,专心学习,并最终成为了一名…

    科研百科 2024年10月14日
    7
  • 深化理论学习 推动工作实践(深化理论知识)

    来源:海南日报 学习贯彻习近平新时代中国特色社会主义思想主题教育开展以来,海南省各部门各单位开展形式多样、内容丰富的主题教育读书班,通过多种方式读原著、学原文、悟原理,对党和国家事…

    科研百科 2023年6月20日
    206
  • 科研项目完成进度表格怎么做科研项目完成进度表格怎么做

    科研项目完成进度表格是项目管理中非常重要的一个工具,能够清晰地展示项目进度、任务分配、预算使用情况等信息,方便项目管理人员对项目进行监控和调整。下面是一份科研项目完成进度表格的制作…

    科研百科 2024年6月12日
    83
  • 媒体商函项目管理系统

    媒体商函项目管理系统:提高媒体商业函的效率和准确性 随着媒体商业竞争的加剧,媒体企业需要更加高效地发布商业函,以吸引潜在客户和增强品牌知名度。然而,传统的发布方式不仅效率低下,而且…

    科研百科 2024年5月26日
    117
  • 建设项目管理概述

    建设项目管理概述 建设项目管理是指在项目启动阶段、实施阶段和完成阶段对项目的各个方面进行有效的管理,以确保项目在预算、时间和质量方面达到预期目标。建设项目管理是项目管理的重要组成部…

    科研百科 2024年7月27日
    87
  • 人事管理软件

    人事管理软件:企业人力资源管理的新选择 随着企业规模的不断扩大和市场竞争的加剧,企业人力资源管理面临着越来越多的挑战。传统的手动管理方法已经不能满足现代企业的需求,因此,人事管理软…

    科研百科 2024年6月2日
    72
  • 硕士学位分委会论文修改导师意见

    硕士学位分委会论文修改导师意见 在完成硕士学位论文的过程中,分委会和导师之间的合作至关重要。硕士学位分委会负责评估和指导论文,而导师则提供宝贵的意见和建议。本文旨在探讨硕士学位分委…

    科研百科 2024年10月18日
    0