【问题标题】:Strings in Python with \r\n not rendering carriage return line feed in SCADA tagsPython 中的字符串与 \r\n 不呈现 SCADA 标记中的回车换行符
【发布时间】:2018-06-01 15:45:27
【问题描述】:

我有一个 python 脚本,我在其中一次构建一个字符串。我在字符串的每一行末尾添加了 '\r\n',最后一行除外。该字符串被写入 Ignition SCADA 中的标签中。当我检查标签的内容时,'\r\n' 应该已经创建了回车/换行符,我所拥有的只是一个空格('')。

知道为什么会这样吗?我可以做些什么来使字符串正确格式化?

谢谢!

编辑: 代码如下:

myStr = ''
for i in range(1, 10):
    myStr += 'This is line ' + str(i) + '.\r\n'
resp = system.tag.write('myStrTag', myStr)
print myStr

【问题讨论】:

  • 显示您的代码。
  • 这也取决于你使用的 Python 版本。
  • 您确定 Ignition SCADA 标签甚至允许多行输入吗?如果您插入“Hello,\r\nworld!”会发生什么?进入标签?
  • 我相信 Ignition 我们目前使用的是 2.x 版本的 python。是的,Ignition 中的字符串标签“包含”新行数据,因为如果我将字符串标签内容写入文件,新行就在那里。不幸的是,我最终并没有将此数据写入文件,而是将其写入数据库记录中的字段。

标签: python scada-ignition


【解决方案1】:

Ignition 正在清理这些字符串标签的输入。你不能有多行字符串,但它“知道”你想要包含它。因此,它将您的输入转换为空白字符,而不是将其保留为文字“\r\n”。如果你想拥有它,你可以包含两个反斜杠字符。

myStr += 'This is line ' + str(i) + '.\\r\\n'

如果您希望字符串在屏幕上实际显示为多行,您需要将其格式化为 HTML 字符串。这就是 Ignition 用于存储和显示带有附加格式的字符串的方法。它实际上工作得很好,可以理解大多数 HTML 和 CSS 属性。下面提供了一个示例。

myStr = '<html>'
for i in range(1, 10):
    myStr += 'This is line ' + str(i) + '<br>'
myStr += 'This is the final line' + '</html>'
resp = system.tag.write('[default]Development/String Testing', myStr)
print myStr

【讨论】:

    猜你喜欢
    • 2012-01-31
    • 2012-06-15
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 2014-05-17
    • 2013-07-05
    相关资源
    最近更新 更多