【发布时间】:2014-01-19 17:10:35
【问题描述】:
我正在使用 GhostPDL pcl6 应用程序将文本文件打印为 PDF。文本文件包含从连接到 PLC 控制器的串行端口捕获的文本。一些打印数据来自旧系统,该系统仅使用换行符 LF 作为行尾终止符,并且没有提供 CR 回车符。结果是 PDF 打印有“阶梯”问题。可以将激光打印机设置为 AUTO CR 以允许打印件正常打印。但是,我找不到在 pcl6 打印命令中设置 -sDEVICE=pdfwrite 设置以添加自动 CR 的解决方案。
我的串行捕获程序基于 pySerial tcp_serial_redirect.py 的修改版本。
https://github.com/jaredly/pydbgp/blob/master/symbian/serial_tcp_redirect.py
这在 Raspberry Pi 上用作可编程设备服务器。串口打印转发到以太网打印机端口 9100。
与其他功能一起,为了将串行数据捕获到文本文件中,我在程序中添加了写入文件命令:
if data:
logfile = open("/var/www/active_log.txt","a")
logfile.write(data)
logfile.close()
问题是文本文件没有所需的 CR 字符。 Windows 中的 Python 程序创建一个文本文件并将 LF 转换为 LF/CR,但不是在 Raspberry Pi 上。
我的解决方案是在原pyserial程序中找到的:
http://sourceforge.net/p/pyserial/code/HEAD/tree/trunk/pyserial/examples/tcp_serial_redirect.py
我简化了连接和拆分公式。
if data:
data = '\r\n'.join(data.split('\n'))
logfile = open("/var/www/active_log.txt","a")
logfile.write(data)
logfile.close()
经过数小时寻找解决方案,这个似乎是最简单的。我尝试了 stty 设置和其他途径。也许这可能对某人有所帮助,或者也许有更好的解决方案?
【问题讨论】:
标签: python serial-port ascii raspberry-pi pyserial