手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

Windows 中断编程

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


五、编程实现
  有了DPMI的支持,我们就能够很方便地处理数据采集、串行通信等工业过程中的实时事件。下面以Windows3.1平台下中断方式实现的串行通信为例,说明中断程式的编制和实现。为便于参考,给出了周详的代码。研发平台BC3.1/BC4.5,其本身支持0.9版的DPMI,无需运行其他支持DPMI的软件。编程语言C,可和C++混合编译。
初始化COM1,9600波特率,每字符8bits,1个停止位,中断接收,查询发送。
//windows asy COmmunica60n
//by Li Xiumi98
//last modified on June25,1996
#include<windows.h>
#include<dos.h>
void interrupt far DataReceive() ;
void interrupt far( * old_vector)();
unsigned char dataCom_r[1024],datacom_s[1024]:
int inflag=0 ;
unsigned int s8259;

int InitCom1()
{
  s8259=inportb(0x21);
  outportb(0x21,s8259&0xe8);
  outportb(0x3fb,0x83);
  outportb(0x3f8,0x0c);
  outportb(0x3f9,0x00);
  outportb(0x3fb,0x03);
  outportb(0x3fc,0x08);
  outportb(0x3f9,0x01);
  return 1;
}

void interrupt far DataReceive()
{
  static int i=0 ;
  char rechar =0 ;
  rechar=inportb(0x3f8);
  if(inflag==0)
{
  if(rechar!='s'&&i==0)
{
  i=0;
  goto l1;
}
  datacom_r[i ]=rechar;
  if(rechar=='e')
{
  inflag=1;
  i=0;
}
}
  l1:outportb(0x20,0x20);
}


  void InitCom(void)
{
asm{
cli;
mov ax,204h
mov bl,0ch
int 31h
sti
}
old_vector=MK_FP(_CX,_DX);
asm{
cli
mov ax,205h
mov bl,0ch
mov cx,seg datareceive
mov dx,offset datareceive
int 31h
sti
}
InitCom();
}

void restore_Comm(void)
{
  outportb(0x21,s8259);
asm{
cli
mov ax,205h
mov bl,0ch
mov cx,seg old_vector
mov dx,offset old_vector
int 31h
sti
}
}

  在窗口第一次被创建时会传送他WM_CREATE消息,这时调用initCom()即可。在主窗口关闭时,即主窗口中收到 WM_DESTROY消息时,调用Restore Comm()恢复原来的状态。
  
   这样在对串口初始化,配置中断服务例程后,通信事件发生时,会立即跳入中断子程式中执行,越过系统的消息队列,达到实时处理通信事件的目的。而数据处理模块可通过全局标志f1,8访问全局的数据通信缓冲区获取实时数据。
  
   这种实现方式和基于消息机制的Windows通信API实现相比具备实时性强的的特点,因为他超过了Windows 系统的两极消息机制,上述程式已在实际系统中得到应用。在windows3.1支持下同时运行三个Windows任务,服务器SERVER(内有实时串行通信,多个网络数据子服务,),客户CLIENT,FOXPRO数据库系统。整个系统运行良好。转换到WIN95平台下,系统也运行良好 。




文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS