我正在使用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設置和其他途徑。也許這可能有助於某人或者有更好的解決方案?