現代计算机接口技术实验
现代计算机接口技术
及MFC程序实现
武汉工业学院计算机与信息工程系
目 录
实验1 定时与中断接口程序设计………………………………………………………………………1
实验2 操作PC机上的8250实现串行通信………………………………………………………5
实验3 基于DLL与HOOK技术的键盘消息拦截与读音……………………………………10
实验4 MFC串行通信程序设计…………………………………………………………………………16
实验5 DirectShow接口实现视频显示与帧捕获………………………………………………20
实验6 基于Socket接口的网络通信MFC程序设计…………………………………………27
实验1 定时与中断接口程序设计
一 实验目的
1.了解定时器/计数器8253、并行I/O接口8255A在PC机中的电路连接方法;
2.学习使用TURBO C++对8253、8255进行编程操作;
3.熟悉拦截PC机中断向量的TC++ 编程方法。
二 实验内容
1.8253、8255在PC/XT机中的电路连接介绍
PC机启动后,系统设置的初始状态为:
芯片有关工作方式初值运行情况8253通道0#:方式3(方波发生器)计数初值:0000HOUT输出55ms方波至8259的IRQ0通道2#:?(1KHz)计数初值:?(1190)?(1KHz方波)8255PB0、PB1:方式0(简单输出)控制蜂鸣器发声。0:不发声,1:发声8259IRQ0:允许中断中断类型号:8CPU响应8号中断表中,8253的通道2#的工作方式和计数初值未知,要求自己设置。
2.程序要求
利用TURBO C++开发环境设计程序,实现如下功能:
(1)程序启动时,要求输入定时时间,以秒为单位。
(2)按秒计时,每秒到达时,在屏幕上显示当前为第几秒,同时蜂鸣器发出短促叫声;
(3)当定时时间到,则显示“Time Up!”,结束程序。
三 实验环境
硬件环境:PC机一台;
软件环境:操作系统不限,TURBO C++3.0。
四 实验步骤
1.建立源文件
启动TURBO C++3.0,建立Timer.CPP。保存到D:\ ×××(学号)\Timer.CPP;
2.设置TC工作目录
选菜单Options/Directories,第1、2栏保持不变,第3、4栏填写您的文件存放目录,OK。如此,TC生成的可执行文件等将会存放到此工作目录下。
样例如下:
3.输入源程序
以下源程序仅供参考。
#include //支持标准输入输出,如printf()。
#include //支持接口访问、中断向量操作函数
#include //支持exit()函数
#ifdef __cplusplus //定义C++使用的中断函数标识符。若是×××.C程序,则不需要
#define __CPPARGS ...
#else
#define __CPPARGS
#endif
int nTick=0,sec=0,flag=0;
unsigned char sys_PB,my_PB;
void interrupt far (*sys_int_08)(__CPPARGS); //若是×××.C,则函数参数不写
void interrupt far my_int_08(__CPPARGS) //若是×××.C,则函数参数不写
{//8号中断,每55ms中断一次,由8253的0号定时器定时,并向8259 IRQ0申请中断
++nTick;
if(tinck==1) outportb(0x61,my_PB); //开始鸣叫
else if(tinck==3) outportb(0x61,sys_PB); //停止鸣叫
else if(nTick>18)
{ // 1second/55ms 近似等于18
flag=1;
nTick=0;
sec++;
}
sys_int_08(); //调用系统的中断向量
}
//==========================================
void main()
{ unsigned int Time_up;