我有一个脚本,可以将数据从串口转储到终端和硬盘。到终端的输出看起来很好,但是文件在每次写入之后写入^ M,导致每隔一行有一个额外的换行符。
违规代码:
# run and dump to file.
loop {
# output data to log file.
data = sp.read
data.delete!("\C-M") # Removes escape character.
if( data != "" )
puts data
File.open($log_file, 'a') { |f| f.write( data ) }
end
}
示例输出: 在终端上:
1
2
3
在文件
中1
2
3
编辑:解决方案是在读取后运行data.delete!(“\ C-M”)。
答案 0 :(得分:1)
尝试使用read打开写入ruby文件的数据。我怀疑你遇到的问题是回车字符有时会在将文件从Windows传输到linux或通过某些邮件客户端下载文件时导致问题。
答案 1 :(得分:0)
我不知道您的串行数据是什么样的,但您可以在写入之前始终对数据变量进行选择。试一试,看看它是怎么回事。
编辑:如果您要删除^ M,也许您可以尝试sp.read.tr("\r","")