连接计算机并口的数据采集系统
2011-03-26孙诚王雪梅张艳红
孙诚,王雪梅,张艳红
(第二炮兵工程学院陕西西安710025)
由于部队禁止使用USB接口、MiniSD卡、内存卡等方便的数据传输通信载体,导弹测试数据都是通过测试设备直接送给打印机进行打印而得到的,而打印机接收到的数据必须要通过打印并口传送,因此获取测试计算机的并口数据是解决导弹测试数据信息化建设管理的关键问题之一。研究从测试计算机并口获取数据的方法,不但可以为从测试计算机并口获取数据做准备,而且可以提高测试数据存储的速度,实现对老式导弹武器装备的性能进行及时地监控、调用和跟踪处理以及预警等。
1 打印机并行接口
IEEE委员会在1994年3月公布了新的IEEEl284并行接口标准,对打印机口的5种工作模式逐个进行了定义。这5种模式分别是:Centronies兼容模式(也叫标准SPP模式)、字节(Byte)传输模式、半字节(Nibble)传输模式、增强型并行端口(EPP)模式和扩展功能型端口(ECP)模式。其中,SPP模式是默认传输模式,数据只能正向传输,速率达到150 kb/s。打印机是计算机系统的基本输出设备之一,PC机通过并行口实现对打印机的控制,为保证打印机正常工作,PC机与打印机之间建立了严格的通信协议。连接打印机的并行口通常工作在Centronics兼容模式,其他4种模式对并行口引脚定义与该模式完全兼容[1]。
并行打印接口有3组信号,分别存放在3组寄存器中:
1)数据信号,存放于数据寄存器中,占8个引脚,传输字符数据(包括控制字符)代码。数据寄存器占用的端口地址是0x378。
2)状态信号,存放于状态寄存器中,占5个引脚,用于向微机传输打印机的当前状态。其中,回执(/ACK)信号表示打印机将数据取入缓冲存储器。打印机忙碌(BUSY)信号有效时表示打印机不能接收数据,通常为以下几种情况:①数据输入时;②打印机动作期间;③脱机状态;④打印机出错。无打印纸(PE)信号表示打印机缺纸;打印机在线(ON-LINE)信号有效表示打印机加电启动;打印机出错(/ERROR)信号为打印机向微机发送的报错信号。状态寄存器占用的端口地址是0x379。
3)控制信号,存放于控制寄存器中,占4个引脚,传输微机发向打印机的控制信号。其中,数据选通(/STROBE)信号为读脉冲信号,加到打印机去能把数据线上代码置入打印机的缓冲存储器。选择输入(SELECT)信号,该信号有效时,打印机才能接受数据线上的数据和控制信号。自动输纸(AUTO FEED)信号有效时,当向打印机输送“回车”代码,则向前输纸一行。打印机初始化(/INIT)信号为打印机初始化信号,可使打印机控制器复位,打印机缓冲器清零,该信号应为一脉冲信号。控制寄存器占用的端口地址是0x37A。
打印机并口工作时序如图1所示,其主要信号有STROBE信号(数据选通信号)、BUSY(数据总线繁忙信号)、ACK(应答信号)和DATA(数据信号,共8条并行I/O线组成)。每当STROBE信号的下降沿出现时,表示并行总线上数据处于有效状态,可以从总线上读取数据;BUSY为高电平则表示打印机正“忙”,禁止接收数据,需等待,当打印机取走数据并处理完毕后,BUSY被置低电平,表示数据总线空闲可以进行下一次数据传送;在BUSY被置为低电平的同时打印机输出应答脉冲ACK,通知主机可以再次上传数据。根据以上分析,若要捕获并行总线上的数据只需要不断检测STROBE信号,当它出现下降沿并且此时BUSY为低电平时,可以采集并行总线上的数据,完毕后向计算机反馈ACK信号,通知计算机接收数据完毕,则计算机继续执行发送任务,打印机等待STROBE信号的下一个下降沿出现。如此循环往复即可实现批量数据接收[2]。
图1 针式打印机并口工作时序Fig.1 Dot matrix printer parallel port work timing
2 数据采集原理
打印机是一种输出设备,一般使用并行接口接收数据。任何设备具有标准并行接口即可向打印机送出数据,执行打印操作。为从打印机并行接口读出打印数据,必须实现一个模拟打印机的信号接口,按照信号时序的要求,根据收到的控制信号接收数据,并要求发出相应的状态信号。
从打印机时序图分析后发现,直接通过硬件控制BUSY、ACK和STROBE这3个信号采集打印机并行口的数据并不困难,但由于该打印机还担负其他工作,所以需要保证在采集数据的同时不影响原有系统正常工作,即在获取数据的同时还不能够影响打印机正常工作,因此就不能用取消打印机、简单采取硬件模拟打印机接收数据的方式捕获数据。鉴于此,数据采集系统要求在并口数据传输过程中采集数据,而且采集后并不影响原有控制信号和数据的传输,从而保证输出到打印机的数据流不被改变,不影响打印机正常工作,其原理如图2所示。
由于采集数据时涉及到两个不同系统的连接问题,可能出现阻抗不匹配、信号干扰衰减过重等现象,所以在接口处要加上一定的隔离保护和驱动缓冲电路,防止两个系统之间出现相互影响,导致原有设备不能正常运转的情况发生。
3 接口电路
图2 并口数据采集原理图Fig.2 Parallel data acquisition schematic
采用光电隔离电路的方式好处在于不仅可以从并行总线上旁路获取数据,而且通过一定的驱动电路,避免了打印总线上数据信号的衰减,保证原有打印系统正常工作,对连接设备端口也起到保护作用。
光电隔离电路的作用是在电隔离的情况下,以光为媒介传送信号,对输入和输出电路进行隔离,因而能有效地抑制系统噪声,消除接地回路的干扰,避免现场的各种静电和浪涌信号对其造成的损害。
光电隔离电路采用高速光耦6N137,其内部结构原理如图3所示。
图36 N137内部结构原理图Fig.3 6N137 internal structure diagram
在6N137的输入端接入计算机USB+5 V电源,和510电阻构成回路,将电信号转换成光信号,完成光电转换第一步,在6N137输出端接入数据采集系统的+5 V电源,以及一个10 kΩ的上拉电阻,完成光信号到电信号的转换,从而使两个系统完全被隔离,不会相互影响,保护硬件接口安全。
驱动缓冲芯片选择74HC245,该芯片不仅能起到缓冲作用,还可以增强驱动能力,避免数据分流后信号衰减,导致打印机和CPU均无法获取正确数据[3-4]。
通过光电隔离和驱动缓冲电路,就能在不影响计算机传送到打印机数据的前提下,实现旁路数据采集功能,并且采取光电隔离措施可以充分保护设备口。
目前,利用计算机并口进行数据采集已得到广泛应用,在Windows98操作系统下可以很容易对硬件进行访问和控制,但在WindowsXP操作系统下为了提高系统的稳定性,对硬件端口的访问作了严格的控制。为了对并口进行读写,Windows XP操作系统仍然保留了-inp()及-outp()函数,采用SPP时序进行通信时就必须采用操作系统的中断技术。图4为单片机从并口线上采集数据程序的流程图,程序由主程序和中断程序构成[5-6]。
中断程序代码:
4 结论
在调试过程中,用PC机对样本数据进行发送,本系统进行采集接收,结果令人满意。由于并口数据采集应用中断方式工作,因此它具有非常好的实时响应性。下一步将该系统与时装进行对接,以完成测试数据的接收。
[1]Axelson J.并行端口大全[M].那怡超,译.北京:中国电力出版社,2001.
[2]张利.PC打印口的原理及应用开发[M].北京:清华大学出版社,1999.
[3]谢庭军,刘少君,黄道平.EPP模式下的并口与FPGA的高速数据通信[J].控制工程.2008(4):440-442.
XIE Ting-jun,LIU Shao-jun,HUANG Dao-ping.High speed data communication between FPGA and parallel interface in EPP mode[J].Control Engineering of China,2008(4):440-442.
[4]Dhanajay.V.Gadre.并行端口编程[M].韩永彬,袁潮,译.北京:中国电力出版社,2000.
[5]马忠梅.单片机的C语言应用程序设计[M].3版.北京:北京航空航天大学出版社,2005.
[6]张现勇.VisualC++并口通讯技术与工程实践[M]北京:人民邮电出版社,2002.