2014-01-19 71 views
1

我正在使用GhostPDL pcl6应用程序将文本文件打印为PDF。文本文件包含从连接到PLC控制器的串行端口捕获的文本。某些打印数据来自较早的系统,该系统仅使用换行LF来换行结束,并且未提供CR回车符。结果是PDF打印有“阶梯步进”问题。激光打印机可以设置为AUTO CR以允许打印正常打印。但是,我无法找到在pcl6 print命令中设置-sDEVICE = pdfwrite设置以添加自动CR的解决方案。PYSERIAL将LF转换为LF/CR

我的串行捕获程序是基于pySerial tcp_serial_redirect.py的修改版本。

https://github.com/jaredly/pydbgp/blob/master/symbian/serial_tcp_redirect.py

这是对树莓裨用于被用作可编程设备服务器。的转发到以太网打印机端口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设置和其他途径。也许这可能有助于某人或者有更好的解决方案?

回答

0

据我所知,你试图用\r\n替换所有\n。这样的事情呢?

data = data.replace('\n', '\r\n') 

希望这会有所帮助。

相关问题