"UNIX环境高级编程-017_与打印机通信",这是一本关于UNIX环境下高级编程的电子书,共23部分19章,涵盖了函数原型、其他源码、习题答案和参考资料等内容。书中特别关注了如何与PostScript打印机进行通信。
在这一章节中,作者介绍了如何开发一个能与PostScript打印机通信的程序。PostScript打印机因其广泛使用,通常通过RS-232端口与主机连接,因此可以利用第11章中介绍的终端I/O函数进行交互。由于与PostScript打印机的通信是全双工的,所以在发送数据的同时也需要接收打印机的状态消息,这就涉及到了第12.5节中的I/O多路转接函数select和poll。
该程序的设计灵感来源于James Clark编写的lprrps程序,这个程序是lprrps软件包的一部分,可以在comp.sources.misc新闻组的1991年7月卷中找到。在PostScript通信机制中,关键点在于理解我们不是简单地发送一个文件去打印,而是发送一个PostScript程序让打印机执行。打印机内部通常包含一个PostScript解释器来运行这个程序,并生成打印输出。如果PostScript程序有错误,打印机(实际上是解释器)会返回错误消息,并可能伴随着其他输出。
书中给出了一个简单的PostScript程序示例,该程序会在输出页面上显示"hello,world"。这个例子并不深入讲解PostScript编程,而是侧重于与PostScript打印机的通信技术。通过这样的示例,读者可以学习到如何编写和发送指令到打印机,以及如何处理打印机的反馈。
在实际编程中,与PostScript打印机的通信涉及到字节流的正确发送、错误处理、状态检测等多个环节。开发者需要理解PostScript语言的基本语法,以便构造出正确的打印命令。同时,还需要熟悉低级别的串行通信协议,以便有效地控制数据传输。在实际操作中,可能需要处理如波特率设置、奇偶校验、停止位等问题,以及如何使用select或poll等系统调用来实现非阻塞I/O,确保程序的高效运行。
这一章节深入探讨了在UNIX环境下与PostScript打印机通信的技术细节,对于需要开发相关应用的程序员来说具有很高的参考价值。通过学习这部分内容,开发者将能够构建出更加灵活和健壮的打印解决方案。