2014-01-19 63 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') 

希望這會有所幫助。