VB环境下的实时硬件中断管理的实现

VB环境下的实时硬件中断管理的实现

ID:38209361

大小:141.80 KB

页数:5页

时间:2019-05-27

VB环境下的实时硬件中断管理的实现_第1页
VB环境下的实时硬件中断管理的实现_第2页
VB环境下的实时硬件中断管理的实现_第3页
VB环境下的实时硬件中断管理的实现_第4页
VB环境下的实时硬件中断管理的实现_第5页
资源描述:

《VB环境下的实时硬件中断管理的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第22卷第3期长春光学精密机械学院学报Vol122No131999年9月J.CHANGCHUNINST.OPT.&FINEMECH.Sept.1999VB环境下的实时硬件中断管理的实现许志军  孙浩津  周丽娟(长春军需大学)(吉林省林业设计院)(吉林工学院)摘 要 VisualBasic具有可视化的直观工作方式和出色的性能,具有开发效率高等明显的优点,但Windows保护模式下物理地址直接存取以及对异步中断的响应问题是VB下开发实时应用系统的难点所在。本文通过开发相应的VBX控件,使问题得以解决,并给出了实例。关键词 VB;

2、VBX控件;中断对于工程技术人员来说,采用VisualBasic(VB)应用系统配套软件,既能利用先进的图形用户界面的诸多优点,又避免了因繁复的界面编程而分散对工程系统核心问题处理的注意,可以极大地缩短应用开发周期。然而,Windows保护模式下物理地址直接存取以及对异步中断的响应等遗留问题,也正是VB下开发实时应用系统的难点所在,并且由于VB环境自身特点而增加了难度。1VB环境下中断控制的特殊性及解决的思路  在Windows环境下实现异步中断实时响应的一般思路是,用C语言(或其他支持硬中断响应的编程语言)开发相应的中断处理

3、动态链接库(DDL),把最紧迫的任务放在动态链接库中完成,然后利用PostMessage()函数向应用程序投递消息,通知应用程序完成界面更新等一些非核心的任务。  如果用户是用C语言编写的Windows应用程序,以上过程实现起来很容易:只需在消息循环中加入一条case语句,对自定义的消息作出响应即可。但VB中的对象是封装好的,程序员不能按个人意志增加或改变其响应事件,VB程序员无法利用PostMessage()将特定的中断消息投送给应用程序完成相应的动作。如果发送VB标准消息触发标准事件,又势必会造成一定程度的混乱。因此笔者考

4、虑,如果能在不触动当前中断响应机制的前提下,开发特定的VBX控件接收特定的中断消息,则以上的问题就可以迎刃而解了。  通过对VB联机文档的分析,笔者成功地开发出了自己的中断响应VBX控件,彻底解决了VB环境下异步中断的实时响应问题。2 中断VBX控件的设计  首先应该明确,我们需要的VBX控件执行什么功能,具有哪些特性。事实上,我们将  收稿日期:1999-05-18©1995-2004TsinghuaTongfangOpticalDiscCo.,Ltd.Allrightsreserved.第3期许志军:VB环境下的实时硬件中

5、断管理的实现61要开发的VBX控件与VB中已有的标准控件定时器(Timer)极为相似。它们都只对单一事件作出响应,定时器是Timer事件,中断控件则是中断事件(可称之为IntPC事件);中断控件应该像定时器一样具有使能属性(Enabled),以供编程者控制是否对中断响应;另外,中断控件也应具有在运行时刻不可见,设计时刻不可更改大小的特性。  熟悉VB的程序员应该对VB的标准属性不会感到陌生,在VB610专业版控件开发软件包(ControlDevelopmentKit,CDK)提供的vbapi.h中列举了VB中最常用的44个标准

6、属性。当然,并不是每一个VBX控件都需要具备所有这些属性的。但是一般情况下,CtlName这个属性则是必须的,它被用以作为控件的标识。我们将要开发的InPC控件由于希望它运行时刻是不可见的,因此,诸如Height、Width之类的属性都不需要,而且,应该用设计时刻不可以更改、运行时刻不可读写的LeftNoRun和TopNoRun属性分别代替Left和Top属性。另外,如我们要求的,Enabled属性也是必须的。  有时VBX控件仅靠标准属性不足以覆盖其全部特性,还需要一些非标准属性来表征某方面特殊属性,我们称之为定制属性。如图

7、片框控件的Picture属性就是属于定制属性。给VBX控件添加定制属性,需要首先声明相应的数据结构,然后将新定义的相应常量加入到属性常量表中,并将指向结构地址的指针加入到属性信息表中的对应位置。属性信息表实际上是指向属性信息数据结构的指针数组。而属性信息数据结构PROPINFO的声明在vbapi1h中,这里不再赘述。对于我们现在开发的中断VBX控件,因为不需要定制属性,所以在头文件intpc1h中相应部分的声明如下:∥属性常量表#defineIPROPpINTPCpCTLNAME0x0000#defineIPROPpINTPC

8、pLEFTNORUN0x0001#defineIPROPpINTPCpTOPNORUN0x0002#defineIPROPpINTPCpENABLED0x0003#defineIPROPpINTPCpTAG0x0004#defineIPROPpINTPCpHWND0x0005

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。