首 页|经济学|管理学|法学论文|理学论文|医药学|政治论文|社会学|文学|教育论文|工学|艺术|哲学论文|文化|英语|应用文

中文全文信息检索系统中索引项技术及分词系统的实现


摘 要 该文提出了一种在windows3.1保护模式下,通过动态连接库(dll)生成中断服务程序代码,实现外设与windows应用程序实时通信的有效方法。
   
   一、前 言
   计算机的日益普及和计算机技术日益成熟,使得计算机在工业控制监测中的应用渐渐深入。但工业应用不同于其它方面,它要求有较强的实时性。现在有很多的dos软件在运行过程中通过挂接外部中断方式实现dos应用软件与外设的实时通信,这种方法实现起来十分简单。而在windows中应用程序能否也能够利用外部硬中断实现外设与windows应用程序的实时通信呢?答案是肯定的。这里的关键是要解决好中断代码与windows应用程序相互之间交换信息的问题。
   从外设发送异步的硬中断,通过中断处理程序传递一条信息给windows应用程序。这时可以初始化相关端口,准备好数据,然后进行数据传送,从而做到实时通信。
   实现windows应用程序响应外部中断的方法有很多,如microsoft公司自己开发的sdk、ddk软件包,使用嵌入式汇编等等。本文将介绍一种在bc++3.1的基础上利用windows 3.1拥有的一些功能实现windows实时通信的实例。
   
   二、中断代码的位置
   在windows中,几乎所有的异步事件都是由中断处理程序来管理的。中断处理程序包含在设备驱动程序中,由windows在环境初始化中安装。例如,keyboard.drv、mouse.drv和comm.drv均含有中断处理程序,以处理相应的键盘、鼠标和串行口的异步中断。可以仿照标准设备驱动程序,编写中断处理代码,以响应外设的通信请求,从而完成一次实时通信。
   中断代码既可以包含在应用程序的可执行代码中,也可以包含在动态连接库(dll)中。包含在应用程序中的代码只能在一个程序中使用,而在动态连接库中的代码则可以在windows系统中所有的应用程序所共享。这样不仅在整个windows系统中只有一个中断代码的副本,提高了内存的使用效率,更重要的是可以防止由于同时存在多个中断代码的副本而发生冲突。本文将在dll中编制中断处理程序。
   当动态连接库被装入时,要调用dll库的入口点libmain(),利用这一点可以执行一些初始化工作,可以分配一些内存块,可以初始化一些全局变量或者静态变量,可以安装中断服务程序的代码等等。例如:
   void interrupt (oldisr)(-cppargs)
   /* 旧的中断服务程序地址 */
   libmain(handle hinstance,word wdataseg,word cbheapsize,l
   pstr
   lpszcmdline)
   {
   …
   oldisr=getvect(irqnum);
   /* irqnum指中断号


上一篇:中文求职信(三)
下一篇:中文搜索引擎技术揭密:网络蜘蛛