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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: [StreamDevice] parsing rapid inputs |
From: | Pavel Masloff <[email protected]> |
To: | Mark Rivers <[email protected]> |
Cc: | EPICS Tech Talk <[email protected]> |
Date: | Wed, 30 May 2012 18:09:08 +0400 |
How have you set the input EOS on your asyn port? Have you overridden this by explicitly defining a terminator in your stream protocol file?
If you define the terminator as “\n\r” for the asyn port and don’t define it in your protocol file then I don’t think you should have this problem, because the read won’t complete until it finds and consume the \r (CR) character.
Mark
From: [email protected] [mailto:[email protected]] On Behalf Of Pavel Masloff
Sent: Wednesday, May 30, 2012 3:15 AM
To: Dirk Zimoch; EPICS Tech Talk
Subject: [StreamDevice] parsing rapid inputs
Hello,
I have run into a problem lately. I have sort of a slow device - a TDS2024 scope. So when I run my IOC, I expect StreamDevice to initialize my PVs. So there are ~ 20 PVs I want to initialize. And every once in a while I get the following error message in epics shell:
2012/05/30 13:02:25.211 L2 TDS2024:probe_ch2: got "<0d>:CH2:PROBE 1" where ":CH2:PROBE " was expected
This <0d> character (or CR) is driving me mad. This is because it was supposed to be the terminator of the previous input (here is the whole string together with the one above):
2012/05/30 13:02:25.124 /dev/ttyUSB0 read 13
:CH1:PROBE 1\n
2012/05/30 13:02:25.211 L2 TDS2024:probe_ch2: got "<0d>:CH2:PROBE 1" where ":CH2:PROBE " was expected
As you can see, there is an \r missing. So my <0d> comes as a part of the input ":CH2:PROBE 1" - so I get "<0d>:CH2:PROBE 1" instead which causes the error.
How can I fix this?
I have tried using the @mismatch handler, but it doesn't work within the @init handler.
And you will never know which PV will not initialize next.
As an comparison, my TPS2024 and TPS2024B scopes are fast enough to stumble upon this. No problem there.
--
Best regards,
Pavel Maslov, MS
Controls Engineer at Pulsed power Lab
Efremov Institute for Electro-Physical Apparatus
St. Petersburg, Russia
Mobile: +7 (951) 672 22 19
Land line: +7 (812) 461 01 01