65.9K
CodeProject 正在变化。 阅读更多。
Home

通过模拟并行端口打印机从泰克特罗尼克 1230 逻辑分析仪捕获数据

2023 年 5 月 8 日

CPOL

8分钟阅读

viewsIcon

2706

模拟并行端口打印机以从泰克特罗尼克 1230 逻辑分析仪捕获数据

作为示波器和逻辑分析仪等老式测试设备的爱好者,我有时会遇到将这些设备上的数据提取到外部设备进行存储或进一步分析的问题。虽然这些旧设备中的一些允许将数据保存到软盘驱动器,或者具有串行或 GPIO 端口以及相关的通信协议与 PC 或其他设备通信以提取测量数据或捕获屏幕截图,但许多其他设备仅支持将数据以硬拷贝形式打印到如今已很难找到的并行或串行打印机上。最近,在使用一台旧的 Tektronix 1230 逻辑分析仪时,我花了一些时间解决了这个问题,本文将分享我取得的一些成就和其他有趣的发现。

设备

我从 eBay 上购得了这台 Tektronix 1230,它是一台 20 世纪 80 年代的旧式逻辑分析仪,但对于对旧式 8 位设计进行故障排除仍然很有用。以下照片显示了逻辑分析仪,其背面有一个 Centronics 并行端口和一个 DB25 RS-232 端口。

在此提醒那些打算收藏这些老式设备的人。请确保您的 1230 配备了探头(也称为探头组件)——您需要 P6444 或 P6443 16 通道探头。单独购买探头可能很难或很贵。最好还附带 RS-232 或 Centronics 端口用于数据输出。

挑战:传输捕获的数据

当我想要导出此逻辑分析仪的捕获数据时,我遇到了挑战。尽管它有一个支持高达 9600bps 的 RS-232 端口,但与该设备通信需要 Tektronix 公司制造的 S43R101 1230/PC 应用程序软件。在我研究期间,似乎有一个用于通过串行端口与逻辑分析仪配合使用的定制应用程序的串行协议,并且在手册中有详细说明。不幸的是,除了这个信息表之外,我从未找到该设备的可用下载手册副本或应用程序软件。然而,关于 Tektronix 1240(一个后来的型号),互联网上有很多信息。因此,通过串行端口提取数据似乎不可行。

唯一其他方法是通过 Centronics 并行端口打印数据。尽管我如今没有并行端口打印机,但突然我想到,我或许可以编程一个 PIC 微控制器来充当并行端口打印机,并将输出数据保存到 SD 卡以供进一步处理。正如他们所说,想法是危险的,几分钟后,我就发现自己正在焊接电线到 DB25 并行连接器上,以便将逻辑分析仪与 PIC24FJ64GA002 微控制器连接起来。

Centronics 打印机协议

这是 Centronics 并行端口的引脚图。

要执行此项目,需要了解用于与并行端口打印机通信的 Centronics 协议,该协议在此页面上进行了详细描述。就我们模拟并行端口打印机而言,我们只需要关心 ACK、STROBE、BUSY 信号以及 D0-D7 线。在标准并行端口的 Centronics 协议的更简单的轮询模式下,主机(在我们的情况下是指逻辑分析仪)会在 STROBE 线发送一个脉冲,表示它将发送打印数据。之后,打印机(或我们场景中的 PIC 微控制器)需要将 BUSY 线置高,同时从 D0-D7 线读取输入字节。处理完成后,打印机将在 ACK 线发送一个脉冲并将 BUSY 线置低,表示它已准备好接收下一个命令。该过程在以下时序图中有说明。

为了指示模拟打印机可用且准备好打印,应将“纸张用完”(Paper End,引脚 12)连接到 GND,而“错误”(Error,引脚 15)和“选择”(Select,引脚 13)应连接到 5V。

结果:基于 PIC 的虚拟并行端口打印机

使用 ST7735 1.8 英寸彩色 LCD(请参阅我之前的帖子)和 Microchip SD 卡库,我成功构建了一个可工作的虚拟打印机。该设备会监听从并行端口发送的数据,并将打印作业保存到 SD 卡上的一个 .PRN 文件中。以下照片显示了正在工作的打印机。

1.8 英寸的 LCD 显示 SD 卡的卷标、文件系统类型、总容量和可用空间。包含上次打印作业的文件名也会显示在 LCD 上。

由于 PIC 不理解发送的数据,只是将接收到的数据写入 SD 卡,因此存在一个问题,即如何判断打印作业何时完成才能开始一个新的输出文件。在真正的打印机上,打印机将检测走纸命令并在一页打印完成后将其弹出。在我的例子中,我选择了一种简化的方法——假设在一定时间(例如 5 秒)没有接收到数据后打印结束,并关闭输出文件。这对于大多数情况来说已经足够了。

读取打印机输出

这个模拟打印机应该可以很好地与任何期望通用并行端口打印机的应用程序配合使用。如果应用程序期望的是特定的现代并行端口打印机型号,则可能无法工作,在这种情况下,可能会通过 ECP 或 EPP 模式的并行端口发送定制的识别数据以与应用程序通信。对于简单的测试,执行 DOS 命令 DIR > LPT1DIR > PRN ,并将打印机连接到 LPT1 端口,应该会在 SD 卡上写入一个包含当前目录下的文件和子目录列表的 .PRN 文件。

在 Tektronix 1230 上,可以通过双击 NOTES 键(打印屏幕截图)或按 D 键(打印内存内容)来完成打印,如帮助屏幕中所述。

虽然按 D 键将以文本格式打印内存内容,但双击 NOTES 键(仅支持 Epson 兼容打印机)将打印当前屏幕的图形表示。虽然打印内存内容不会导致逻辑分析仪死机,并且打印机状态将显示为“Printing”,但逻辑分析仪在屏幕打印期间将停止响应。在我实验期间,如果 Centronics 并行端口的状态线报告冲突信息,逻辑分析仪将拒绝启动,POWER 指示灯将熄灭,看起来就像设备已损坏。移除并行电缆后,设备就能正常开机。这似乎是设备固件中的一个错误。

我的虚拟打印机捕获的屏幕打印输出是二进制格式,包含 Epson 转义码。快速检查输出文件并与 Epson 转义码文档进行比较,表明仅使用了 4 个转义码。

  • ESC 65 和 ESC 50 – 设置行间距
  • ESC 108 – 设置左边距
  • ESC 42 – 选择图形打印的位图

我很快写了一个工具,可以将输出的转义码转换回 450×250 的位图文件。

提供了一个名为“optimize for printing”的复选框。如果选中,输出将是黑底白字(而不是绿底黑字),可以使用普通打印机打印。转换后的打印效果如下所示。

有了基于 PIC 的虚拟打印机和转义码转换工具,我就可以将数据从逻辑分析仪复制到我的 PC 以便用于其他目的了。

更换 RTC 电池

与其他老式电子设备一样,我需要更换 3V 电池,以保持设备时钟和设置。1230 使用两节 CR2330 3V 电池来实现此目的。

电池附近的提示写着,“CAUTION: REFER BATTERY REPLACEMENT TO QUALIFIED TECHNICIAN”(注意:电池更换请参考合格的技术人员)。我是合格的技术人员吗?至少从管理角度来看不是——我没有 Tektronix 的认证来打开这个设备!如果我不这样做会有什么影响吗?在更换电池之前是否需要执行任何特定说明,或者必须按照特定顺序更换电池以避免数据丢失?在互联网上找不到任何相关信息,我还是继续更换了,此后逻辑分析仪似乎一直工作良好。

有趣的是,尽管该设备的时间设置允许 1900-2099 年之间的年份,但即使选择了 2014 年,重启后年份也会跳回 1914 年,这表明存在某种 Y2K 问题。其余日期和时间保持正确。星期几也需要手动选择,不像许多其他设备那样自动计算。这可能是为了节省宝贵的代码空间用于其他功能,或者算法太复杂而无法在 Z80 处理器(大多数此代 Tektronix 逻辑分析仪使用)上高效实现。

下载次数

打印机和位图转换工具的源代码可以在这里下载。

阅读我的另一篇文章,获取 Tektronix 1230 的完整评测。

© . All rights reserved.