转换打印机端口字节inpout32

时间:2010-09-22 11:15:55

标签: printing

我的想法已经不多了。

我通过inpout32.dll使用C语言。

我从打印机数据端口D0-7或D1-8读取这些“字节”(例如0000,00CC)。

我需要在完成打印作业时过滤掉人类可读的字符。

这仍然很原始,但我有一个监听器函数使用inp32捕获这些数据。

基本上如果我在'Hello World'这样的记事本中进行打印,这将从inp32函数读取的字节中拉出来。

打印机端口侦听器位于单独的应用程序上。


这个想法是应用程序可以在任何打印机上收听。

目前它基本上是一个PoC。

但我现在正在使用的是佳能BJC-1000SP,它已经很老了,但它是我们办公室里唯一的并行端口打印机。其他是USB类型。

我目前正在Windows上使用它。

热敏打印机实际上是我们正在聆听的。


所以现在我正在尝试使用允许打印原始文本文件的通用驱动程序。

如何通过端口从中提取文本?


如果有人能给我一个想法,一个功能/转换器或在哪里搜索,那就太好了。

1 个答案:

答案 0 :(得分:0)

如果您阅读的所有内容都是人类可读的文字,请将其全部存储起来。

如果没有,您需要考虑使用的character encoding。如果它是普通的旧ASCII,你可以只调用isprint()来确定一个字节是否是一个可打印的字符。

上述当然假设您的打印机正在使用纯文本,这可能意味着它必须是一个相当古老而简单的打印机(就像大约20年前的点阵一样)。

如果它是一台现代化的“Win-Printer”激光或喷墨打印机,所有页面布局的智能都是由驱动程序中的主机完成的,那么你可能会运气不好。在这些情况下,传输的内容是布局页面的说明,通常采用特定于打印机的格式。

我认为您应该编辑您的问题并准确说明您正在使用的打印机,以及您正在运行程序的操作系统环境。

更新:您目前使用的佳能BJC-1000打印机是喷墨打印机。它很可能依靠主计算机逐行发送数据(如墨水线,而不是文本行)来控制各种墨水喷嘴。我认为它不会向打印机发送纯文本。您可以通过阅读开源驱动程序的代码进行调查。对于Linux,推荐的驱动程序称为gutenprint