【问题标题】:python script that exctracts some values from serial output从串行输出中提取一些值的python脚本
【发布时间】:2018-12-06 04:20:20
【问题描述】:

我编写了一个小脚本来捕获串行连接的输出。这是输出。

                 CHEMONORM AG

      ZURCHERST.  137  CH-8852  ALTENDORF

   TEL: +00 00 4517200 FAX: +00 00 45172200

                   WATCHDOG



       pH            REDOX       IN1    IN2

   ---------       ---------    -----  -----

      7.1 pH          797 mV     Off     On

 RAM - TEST:         OK

 PROM - TEST:        OK

 PROCESS - STATUS:   OK

现在我想将pHREDOX (mV) 的值存储到两个变量中。

var1 = 7.1
var2 = 797

这是我的 python 脚本。

#!/bin/env python
import time
import serial

ser = serial.Serial(
        port='/dev/ttyAMA0',
        baudrate = 2400,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS,
        timeout= None)


while True:
        line = ser.readline()
        print(line)

【问题讨论】:

  • 好的,那么问题是什么?除了记录线路,您还尝试过什么?检查行并将字符串解析为数字怎么样?最终解决方案可能涉及正则表达式
  • 这个更适合codereview.stackexchange.com

标签: python string python-2.7


【解决方案1】:
if 'mV' in line:
    line_split = line.replace(' ','').replace('pH', ',').replace('mV', ',').split(',')
    var_ph = float(line_split[0])
    var_redox = float(line_split[1])

解释:

条件'mV' in line 足以检测到带值的行。

第一次替换 - 删除空格:'7.1pH797mVOffOn'

第二个和第三个替换 - 单位为逗号:'7.1,797,OffOn'

以逗号分隔以列出:['7.1', '797', 'OffOn']

然后将第一个和第二个元素保存为浮点数。

【讨论】:

  • 请在您的代码中添加一些有意义的解释,以便原始发布者能够更好地理解您的答案如何解决她/他的问题。
  • 好的,我添加解释。
猜你喜欢
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 2020-09-21
  • 1970-01-01
相关资源
最近更新 更多