1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 <2019> 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 <2019> 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Stream device - parsing array of pairs of floats |
From: | Dirk Zimoch via Tech-talk <[email protected]> |
To: | <[email protected]> |
Date: | Fri, 15 Feb 2019 09:55:35 +0100 |
Maybe the following works: For the values: Separator=","; in "%#/[.0-9]+|//%f"; For the Timestamps: Separator=","; in "%#/|[.0-9E+-]+//%f";%#/regexp/subs/ is the regular expression pre-processor, here removing the "other" array from the input. Performance may be not so good and scales like O(n²) with the array length because of all the copying involved.
One of the records should be active having the 'out' command that produces the reply. The other should be "I/O Intr" reading the time stamps passively.
Not tested. Hope it works. Dirk On 14.02.19 18:35, Joao Afonso via Tech-talk wrote:
Hello,I have a string returned by a device, representing an array where each element is a pair <time, value>:- each pair is separated by "|": <timestamp>|<value> - each element of the array separated by "," - all values are floats- the timestamp increment may not be linear (that is why it needs to be recorded)Example 0.1000|0.1230000E+00,0.2000|0.4560000E+00,0.3000|0.7890000E+00, [...]Is it possible to parse this using stream device (into two waveform records)?Or do I have to use something more powerful such as asynDriver?I have seen several examples, but only with using simple type elements, not like this.As a followup, is it possible to do the inverse, merging two waveform records into a string?Thank you in advance, Joao CERN TE-EPC-CCS