并口编程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注:1,2 位未定义。
信号源
外设 外设 外设 外设 外设
是否在连接器 处倒相 否 否 否 否 是
引脚: Centronics 32 13 12 10 11
控制寄存器(基地址+2)
位 引脚:D-sub 信号名
01 1 14 2 16 3 17
nStrobe nAutoLF nInit nSelectIn
获得途 径 网上下载 网上下载 网上下载
网上下载 网上下载
网上下载
三、实用并口编程
1.新建一个基于对话框的 Vc 工程
名称定义为 ParallelExample,参见下图,下一步工程类型选基于对话框.
2、引用基础资源文件
首先,把 WinIo.lib WinIo.h ParallelPort.cpp ParallelPort.h 拷贝到工程目录中,马上就要用到. 再把 WinIo.Dll WinIo.sys 拷贝到工程目录的 Debug 和 Release 目录中,以后工程发布后,这两 个文件要跟随工程一起。
引入 WinIo.lib 点 击 [ 工 程 ]->[ 设 置 ] 在 弹 出 的 对 话 框 中 选 择 [ 连 接 ] 标 签 , 然 后 在
“Link\Object/library modules”中加入 WinIo.lib 完成后如下图.
填加基础资源文件 选择“project\Add To Project\Files”菜单,选择“WinIo.h”、“ParallelPort.h”、
注解:PaPort.InitPort()是并口操作类中的并口初始化函数,传入参数是并口地址,由 于类定义时默认了 0x378 为并口地址,这里可以不用传参数了.如果初始化成功,传回布
尔变量 TRUE,运行一下,应该可以看到并口初始化成功的信息.
5、读数据口
双击“读数据口”按钮,在弹出的代码中加入程序如下 BYTE nPortData=PaPort.ReadData(); //从并口读到数据 CString a,b; GetDlgItemText(IDC_EDIT_READ,b); //获取编辑框中原有的文本 a.Format("\r\n 读到数据口数据:%2.2X",nPortData); b+=a; SetDlgItemText(IDC_EDIT_READ,b); //写入文本到编辑框 完成后如图所示(图 8)
“ParallelPort.cpp”文件,加入工程。
工程中引用加入类 如图,打开“ParallelExampleDlg.cpp”,加入#include "ParallelPort.h" //添加
并口类头文件。
定义一个并口类变量 在“ParallelExampleDlg.cpp”文件加入变量 PaPort。
读控制口
IDC_BTN_READCTL
写控制口
IDC_BTN_WRITECTL
读状态口
IDC_BTN_READSTATUS
单引脚操作
IDC_BTN_SIMPLESTITCH
用于显示收到的数据 用于填写要发送的数据 用于初始化并口 用于释放并口所占用的资源 用于读取并口数据总线 用于写并口数据口数据 用于读取并口控制总线 用于写并口控制口数据 用于读并口状态总线 用于引用单个引脚
二、并口编程用到的几个资源文件
文件名
WinIo.sys WinIo.dll WinIo.lib
WinIo.h ParallelPort.cpp
ParallelPort.h
文件类型\介绍
基础并口编程使用文件 动态库:与 WinIo.sys 完成同并口的连接. 静态调用提供的引入库文件:虽然引入库文件和静态库 文件都是以 Lib 为扩展名的,但实际上有本质的区别. 这是 IO 操作的头文件. 这是一个并口操作类:用于同 WinIo 接口,并定义了相关 的操作函数. 虽然这个类用于同 WinIo 的操作接口,但这 个类并不是从 WinIO 派生的,只是一个独立的自定义类. 这是并口类的头文件.
是否在连接器 处倒相 否 否 否 否 否 否 否 否
引脚:Centronics
2 3 4 5 6 7 8 9
注:控制寄存器的第 5 位控制数据位是否能够输出。
状态寄存器(基地址+1)
位 引脚:D-sub 信号名
3 15 4 13 5 12 6 10 7 11
nError Select Paper Out nAck Busy
并口控制开发
一、并口介绍(摘自互联网)
并口 SPP 模式寄存器定义
数据寄存器(基地址)
位 引脚:D-sub 信号名
02 13 24 35 46 57 68 79
数据位 0 数据位 1 数据位 2 数据位 3 数据位 4 数据位 5 ห้องสมุดไป่ตู้据位 6 数据位 7
信号源
PC PC PC PC PC PC PC PC
信号源
PC PC PC PC
是否在连接 器处倒相 是 是 否 是
引脚: Centronics 1 14 31 36
注: 连接器中没有提供的附加位: 4:中断启用,此位为 1 时,IRQ 从 nAck 送往系统的中断控制器;为 0 时,IRQ 不送
往中断控制器。 5:双向控制端口的方向控制位,此位为 0 时,输出启动;为 1 时,不能输出;控制
端口可以读取外部逻辑电平。 6、7:未定义。
详解:上面罗列的是除去电源及地线后可用到的 IO 口,数据口 8 位,由状态寄存器第五位决 定能否输出,状态口共 5 位,控制口共 4 位.一般我们只用到数据口来传输数据.一般来说,并 口基地址是 0x378,也就是数据寄存器的地址,在并口类中默认.明白了这些以后,就可以对 并口进行相应的操作了.
3、编辑对话框界面
下面在界面中加入八个按钮和两个文本编辑框,完成后如下图
其中,各控件 ID 如下
上面的编辑框 IDC_EDIT_READ
下面的编辑框 IDC_EDIT_WRITE
初始化
IDC_BTN_INIT
关闭释放
IDC_BTN_SHUTDOWN
读数据口
IDC_BTN_READDATA
写数据口
IDC_BTN_WRITEDATA
4、并口初始化
双击“初始化”按钮,在弹出的代码中加入程序如下 //在这里初始化并口 if(PaPort.InitPort()==TRUE) {
SetDlgItemText(IDC_EDIT_READ,"并口初始化成功,并口地址:0x378"); } else {
SetDlgItemText(IDC_EDIT_READ,"并口初始化失败!"); } 完成后如下图所示