电子与自动化 l998年第 l期
测量仪器与微机 I/o接口在 Windows
一
系统中的实现
毛国平
J l - - - _ - _ _ _ _ ● ● _ 一
(核工业西南物理研究院,成都,610041)
3 7’
3 J毛
Windows系统正成为操作平台的主流。本文以通用的Visual Basic为开发工具.提出了
在Windows系统中控制计算机硬件端121的解决方法。应用Delphi编程语言定制可以被VB调用的
动态链接库 PORTS.DLL,编制出通用的微机 I/0端口的控制软件,可应用于仪器的测控及信号
处理等领域。
关键词 W
—
ind
— ows~ , 堡 ! !,动态链接库
1. 引言
随着个人计算机技术的飞速发展,单用
户的 DOS操作系统正逐渐被具有图形用户
界面、可执行多任务、新的内存管理模式的
Windows操 作 系 统 (包 括 Windows3.x,
Windows95,Windows NT等)所取代。
与 DOs相比,Windows不仅有可以运
行 32位 程 序 的 Windows95及 Windows
NT,也有运行 16位程序的Windows3.x,而
且可以处理多任务过程。
这样计算机用户就要求移植或开发基于
Windows系统下新的应用软件。但是 win—
dows系统不仅改变了传统的计算机用户操
作界面,而且使程序设计方法和设计思想发
生了深刻的变化。同时对编程设计人员而言,
开发基于 Windows系统的应用程序软件变
得十分困难。早期的Windows应用软件的开
发平台主要基于 Borland公司的 Borland
C+ + 。
由于 Windows系统正逐步成为微机的
主流操作系统,许多软件公司都推出了以
Windows系统为操作平台的新一代应用软
件编程工具,比较著名的如 Microsoft公司
的 Visual Basic(VB)、Visual C++ (VC),
Borland公司的Delphi等。上述几种编程工
具备有特色。VC的功能强,使用它可以编制
f , 瑶
出功能很强的系统软件,但是其使用复杂,程
序调试繁琐,难以为用户掌握。Delphi是介
于VB和VC之间的编程工具。而Microsoft
公司新近推出的 Visual Basic4.0中文版大
有取代VC的趋势。VB作为面向对象的集成
开发系统,设计过程可视,编程量小,调试简
便,具备 Windows系统中OLE、DDE、DLL
等功能,它不仅可以编制运行于 Windows3.
x系统下的 16位程序软件,也可以编制运行
于Windows95系统下的 32位程序软件。此
外其本身具有大量的程序控件(还可以使用
第三方提供的控件),通过提供的 Windows
系统 API调用功能,可以调用 Windows系
统中所有的库函数,并且和其它软件有强大
的通信能力。
开发一般的应用软件,我们认为以 Vi—
sua1
.
Basic最为适用。在为用户开发微机自动
量热控制系统时,我们以 Windows95为操作
平台,以VB4.0专业版为开发工具,辅助以
Delphi对计算机硬件底层的控制能力,编制
出一套通用的微机 I/O接口的控制软件。可
广泛应用于仪器的测控及信号处理等领域。
2. Delphi与DLL的编制
由VB编制的应用程序理论上可以调用
Windows系统中的所有动态链接库及第三
维普资讯 http://www.cqvip.com
1998年第 1期 电子与自动化
方提供的动态链接库。VB在控件组中提供
了Communication控件单元,允许程序对串
行口数据进行读写操作。但在仪器自动化测
量的实际应用中,由于对实时控制与信号处
理的要求,我们往往需要控制计算机的 I/0
接口。VB本身没有提供可以访问计算机端
口的输入输出函数,而且也没有提供这方面
的控件,所以不具备对计算机硬件接口的直
接控制能力。另外,也许 Windows系统考虑
到其自身的多任务环境,所以该系统本身也
没有提供可以让 VB通过 API调用的控制
端口的库函数。由于VB使用的为P码,不能
封装对象,即不能制作控件,而且由自身创建
可被调用的 DLL(Dynamic—Link Libraries)
动态链接库比较困难。所以,我们一般采用另
外的编程语言来编制可被 VB调用的动态链
接库。这里我们应用Delphi编制可被VB调
用的动态链接库 PORTS.DLL。
Delphi的编程语言为类 Pascal风格,动
态链接库的结构如图 l所示。
⋯ ⋯ {所定义的函数主体部分);
end;
procedure out
—
port(portaddress:integer;
outvalue:integer):integer;export;
begin
⋯ ⋯ {所定义的过程主体部分);
end;
exports{输出函数、过程及其索引值)
in
— port index l;{索引值说明输出函数)
out port index2;{索引值说明输出过程)
begin{程序初始化}
end.{程序结束标志)
在 主菜 单窗 口 Compile项 目中选 择
Build All,如果无运行错误显示,则编译结束
后我们可以在文件框中发现编译好的动态链
接库文件 PORTS.DLL
在编写动态链接库时我们要注意,对于
DLL而言它不能有自己的堆栈段。另外在
DLL中定义的变量一般为局部变量,不能被
其它模块使用。
一 C 3
. VB与DLL的调用
图 1 动态链接厍
对于图 l中的语句或标识符的有关说明
如下:①文件头必须以标识符 library开始而
不是一般的标识符 program。这样就保证编
译生成的文件后缀为 DLL而不是 EXE。②
如果所定义的库中包含要输出的过程或函
数,则在程序中必须包含 exports语句来说
明待输出函数、过程及其索引值。程序最后以
end.结束。
下面我们就动态链接库 PORTS.DLL
为例简要说明 DLL的设计方法。
library PORTS;{动态链接库标识名)
function in
—
port(portaddress:integer):in—
teger;export;{所定义的接口函数之一)
begin
早期基于 Windows系统的编程工具主
要是 Borland公司的 Borland C++,由于其
过于复杂的定义和编程,随着 VB版本的提
高和功能的增强,已逐渐被取而代之。对于简
单的应用,VB可以在几乎不编制代码的情
况下完成设计。所以采用VB编制应用软件
有很高的编程效率。
VB对动态链接库的调用十分简单,无
论采用何种语言编写的 DLL,其调用方法是
一 样的。在调用动态链接库之前,VB要求必
须用说明语句在窗体或模块的声明区中定义
所要调用的函数,否则 VB不能识别所调用
的动态链接库。
如果动态链接库无返回值,则将其声明
为过程 :
Declare Sub子 程 序 名 Lib“库 名 ”
维普资讯 http://www.cqvip.com
电子与 自动化 1998年第 1期
[ALIAS“别名”11-(参数)]
如果动态链接库有返回值,则将其声明
为函数 :
Declare Function子程序名 Lib“库名”
[ALIAS“别名”][(参数)][AS数据类型]
在这里所用的库名即为我们编制的动态
链接库 PORTS.DLL。一般情况下“库名”中
包含 DLL库所在目录的路径名,如果无路径
名则默认路径为 Windows的 Systern 目录。
假如动态链接库 DLL在 D盘的 PORTS目
录 下,则 库 名 应 为:“D:\PORTS\
PORTS.DLL”。例如对 PORTS.DLL中的
in port及 out port的声明:
Declare Function in
— —
port Lib
“PORTS.DLL”[Byval portaddress ]
Declare Sub out
—
port Lib
“PORTS.DLL”[Byval portaddress ,By—
valoutvalue ]
如果我们需要从计算机的端 口&h2f8
读字节,则可以调用 in port函数:
inbyte =in port( 2f8)
如果我们需要向计算机的端 口&h3f8
写字节,则可以调用 out port过程:
outbyte :out port(g,.h3f8,&haO)
以上的例子中我们只简单说明了在 VB
中调用动态链接库中函数或过程的一般方法
和思路。在实际的微机I/O控制过程中还需
要考虑数据类型、数据边界等问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
,用户需在
程序中妥善处理。
参考文献
[1]何立起:Visual Basic For Windows 3.X程序设计入门
与提高 .北京:人民邮电出版社,1995
[2]孙大勇:Visual Basic For Windows程序设计 .北京:国
防工业出版社,1996
(收稿 日期 :1997—08—15)
STD总线的 DTMF
夏泽中
(华中理工大 辱 汉,430074)
通信电路
1
|
STD总线的多路 DTMF(双音多频)通信电路的构成、工作原理及软件
逻辑电路,通过软件处理中断接收的屏蔽、识别和清除,故实时性强,编程方便,接收可靠
关键词DTMF{翌逊1 ,通信 蕈 住 , 豫 弓 ---_-—·—_·●- -_--——一 ,,J一, V—J , l4I I,,工 V’‘.
1. 概述 特点。尤其在多模块扩展而成的多路通信系
DTMF(双音多频)电路广泛用于电话、
遥控、程控交换机和其它通信系统中。由于
DTMF信号具有很强的抗干扰能力,不仅可
用在逼 歪 .作为信令,而且能直接用在工
业控制中,完成速率要求不高的高可靠性数
据通信任务。本文介绍一种基于STD总线的
多路 DTMF发送与接收电路,该电路作为
STD
模板
个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载
,能构成远程星形分布式数据通信
系统;由于采用简单实用的中断接收逻辑电
路,通过软件处理中断接收的屏蔽、识别和清
除,故具有实时性强、编程方便和接收可靠的
统中,采用中断方式接收和发送,能大大加快
通信速率。
2. 电路原理
2.1 DTMF发送与接收芯片
目前,DTMF芯片的种类较多,而且多
属 CMOS集成电路。发送芯片的工作原理,
是通过行、列两个可控分频比的分频器和正
弦波编码器,将行列键(或 BCD)编码变换成
两组二进制代码,再由D/A电路将代码分别
转变成低频群和高频群台阶形正弦波.最后
维普资讯 http://www.cqvip.com