繁体   English   中英

在python中解析串行数据

[英]Parsing serial data in python

我是这个网站和python的新手。 我一直在从事一个项目,该项目需要从传入的串行数据中提取变量并最终显示它。 我目前正在解析数据,但遇到了一些麻烦。 串行数据如下所示:

a3b5f45c9g8a4c10f64;
f4h87d34k9h4j3d3;
h6f54a12a13a14a15b12b13;

在值之前,有多个变量由字母表示,并且它们的到达顺序没有特定的顺序。 大约每秒钟用分号中断一行。 同一变量可能在每行中出现多次或根本不出现。 如果可以的话,我得到的最接近的是使用正则表达式在标识字母和下一个非数字之间找到值。 我遇到的问题是,它仅返回第一个匹配项,然后停止。 我需要不断更新变量。 过去几天我一直在挠头,任何指导都将不胜感激。

import serial
import re

ser = serial.Serial('COM6', 9600, timeout=2)

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

  apples = re.search('a(.+?)\D', data_raw)
  if apples:
    applesvar = apples.group(1)
    print applesvar

  cherries = re.search('c(.+?)\D', data_raw)
  if cherries:
    cherriesvar = cherries.group(1)
    print cherriesvar


ser.close

你快到了 通过使用示例的第一行

line = 'a3b5f45c9g8a4c10f64'

re.findall('a(.+?)\D', line)
['3', '4']

re.findall('c(.+?)\D', line)
['9', '10']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM