首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PYSERIAL将LF转换为LF/CR

PYSERIAL将LF转换为LF/CR
EN

Stack Overflow用户
提问于 2014-01-19 17:10:35
回答 1查看 1.8K关注 0票数 1

我正在使用GhostPDL pcl6应用程序将文本文件打印到PDF。文本文件包含从连接到PLC控制器的串行端口捕获的文本。一些打印数据来自一个较旧的系统,该系统只使用行结束时的行提要LF,并且没有提供CR回车字符。结果显示PDF打印存在“台阶”问题。激光打印机可以设置为自动CR,以允许打印正常打印。但是,我无法找到在-sDEVICE=pdfwrite打印命令中设置pcl6设置以添加自动CR的解决方案。

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

redirect.py

这是用于Raspberry Pi,用作可编程设备服务器。转发到以太网打印机端口9100的串行打印。

除了其他特性外,为了将串行数据捕获到文本文件,我在程序中添加了写文件命令:

代码语言:javascript
复制
                if data:
                    logfile = open("/var/www/active_log.txt","a")
                    logfile.write(data)
                    logfile.close()

问题是文本文件没有必需的CR字符。Windows中的Python程序创建一个文本文件,并将LF转换为LF/CR,而不是在Raspberry Pi上。

我的解决方案是在最初的pyserial程序中找到的:

redirect.py

我简化了连接和拆分公式。

代码语言:javascript
复制
                if data:
                    data = '\r\n'.join(data.split('\n'))
                    logfile = open("/var/www/active_log.txt","a")
                    logfile.write(data)
                    logfile.close()

经过几个小时的寻找解决方案,这个似乎是最简单的。我尝试了一些简单的设置和其他的方法。也许这会对某人有帮助,或者有更好的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-20 23:05:10

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

代码语言:javascript
复制
data = data.replace('\n', '\r\n')

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21219877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档