【问题标题】:PYSERIAL Convert LF to LF/CRPYSERIAL 将 LF 转换为 LF/CR
【发布时间】: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


    【解决方案1】:

    据我了解,您正在尝试将所有 \n 替换为 \r\n。这样的事情怎么样?

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-03-07
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 2019-03-14
      • 2013-06-26
      • 2011-04-22
      相关资源
      最近更新 更多