从零开始学VC系列教程完整版(8)

2019-06-11 21:38

从零开始学VC系列教程之 四.并口控制与类的使用

学习目标:掌握VC下并口程序的方法及类的使用. 课程详解:

参照第一章新建一个基于对话框的Vc工程,名称定义为Eg04.

图01 (原文件名:01.JPG)

类型选基于对话框.

在本例中,我们要用到一些资源,现列出如下 WinIo.sys

WinIo.dll 这是一个动态库,与WinIo.sys完成同并口的连接.

WinIo.lib 这是为静态调用提供的引入库文件.虽然引入库文件和静态库文件都是以Lib为扩展名的,但实际上有本质的区别.

WinIo.h 这是IO操作的头文件.

ParallelPort.cpp 这是一个并口操作类,用于同WinIo接口,并定义了相关的操作函数.虽然这个类用于同WinIo的操作接口,但这个类并不是从WinIO派生的,只是一个独立的自定义类.至于类的自定义,以前我们也提到过.

ParallelPort.h 这是并口类的头文件.

这几个文件是可以从网上下载到的,并不是我做的,所以这个动态库大家就不用问我要源码了,因为我也没有.

首先,把WinIo.lib WinIo.h ParallelPort.cpp ParallelPort.h拷贝到工程目录中,后面马上就要用到.再把WinIo.Dll WinIo.sys拷贝到工程目录的Debug目录中,以后工程发布后,这两个文件要跟随工程一起.

下面添加引入库到系统中,点击[工程]->[设置]在弹出的对话框中选择[连接]标签,然后在[对象/库模块]中加入WinIo.lib完成后如下图.

图02 (原文件名:02.JPG)

然后加入并口操作类的头文件.一般来说,网上可以下载到的源码都是以类的形式给出的,VC的好处也在于可以把一个操作封装成类,以便在不同的工程中调用.如图,双击类管理器中的Ceg04Dlg在弹出的文件中加入#include \//添加并口类头文件

图03 (原文件名:03.JPG)

同时,还要定义一个类变量,用于并口类的操作. 在刚打开的类定义文件中找到CEg04Dlg类,并加入一个类变量m_Port,完成后如下图所示

图04 (原文件名:04.JPG)

为了操行方便,把并口操作类也加入到工程中,点击[FileView]标签,标签位置在类管理类下面,见上图中的[FileVi…]然后在[Source Files]中加入ParallelPort.cpp在[Header Files]中加入ParallelPort.h这样,就可以在类管理中看到我们所用到的并口操作类了,同时也可以方便的查阅类函及成员变量. 下面在界面中加入六个按钮和两个文本编辑框,方法前面已经介绍多次.完成后如下图

图05 (原文件名:05.JPG)

其中,各控件ID如下

上面的编辑框 IDC_EDIT_READ 用于显示收到的数据 下面的编辑框 IDC_EDIT_WRITE 用于填写要发送的数据

读数据口 IDC_BTN_DREAD 用于读取并口数据总线 写数据口 IDC_BTN_DWRITE 用于写并口数据口数据

读控制口 IDC_BTN_CREAD 用于读取并口控制总线 写控制口 IDC_BTN_CWRITE 用于写并口控制口数据 读状态口 IDC_BTN_SREAD 用于读并口状态总线

并口流水灯 IDC_BTN_LED 用于在数据线上输出流水灯效果

先要介绍一下并口,以便理解接下来的操作是什么意思.以下一些关于并口的介绍,摘自互联网.

并口SPP模式寄存器定义 数据寄存器(基地址)

位 引脚:D-sub 源 是否在连接器处倒相 0 2 数据位0 C 否 2

1 3 数据位1 C 否 3

2 4 数据位2 C 否 4

3 5 数据位3 C 否 5

4 6 数据位4 C 否 6

5 7 数据位5 C 否 7

6 8 数据位6 C 否 8

7 9 数据位7 C 否 9

注:控制寄存器的第5位控制数据位是否能够输出。

状态寄存器(基地址+1)

位 引脚:D-sub 源 是否在连接器处倒相 3 15 nError 设 否 32

4 13 Select 设 否 13

5 12 Paper Out 设 否 12

6 10 nAck 设 否 10

7 11 Busy 信号名 信号 引脚:Centronics P P P P P P P P信号名 信号 引脚:Centronics 外 外 外 外 外

设 是 11 注:1,2位未定义。

控制寄存器(基地址+2)

位 引脚:D-sub 信号名 信号源 是否在连接器处倒相 引脚:Centronics 0 1 nStrobe PC 是 1

1 14 nAutoLF PC 是 14

2 16 nInit PC 否 31

3 17 nSelectIn PC 是 36

注: 连接器中没有提供的附加位:

4:4:中断启用,此位为1时,IRQ从nAck送往系统的中断控制器;为0时,IRQ不送往中断控制器。 5:5:双向控制端口的方向控制位,此位为0时,输出启动;为1时,不能输出;控制端口可以读取外部逻辑电平。 6、7:未定义。

学过单片机或相关知识的应该可以看懂表格中的意思了,上面罗列的是除去电源及地线后可用到的IO口,数据口8位,由状态寄存器第五位决定能否输出,状态口共5位,控制口共4位.一般我们只用到数据口来传输数据.一般来说,并口基地址是0x378,也就是数据寄存器的地址,在并口类中默认.明白了这些以后,就可以对并口进行相应的操作了.

接下来要在程序初始化时初始化并口,在前面的操作中,定义了一个类变量m_Port,这个类变量在后面我们将多次用到.首先展开类管理器中的CEg04Dlg双击OnInitDialog()在窗口初始化中加入以下代码. //在这里初始化并口

if(m_Port.InitPort()==TRUE) {

SetDlgItemText(IDC_EDIT_READ,\并口初始化成功,并口地址:0x378\

} else {

SetDlgItemText(IDC_EDIT_READ,\并口初始化失败!\ } 完成后如下图所示


从零开始学VC系列教程完整版(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:荣成项目前期-----荣成万隆商业广场市场调研报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: