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: StreamDevice with Telnet port |
From: | Dirk Zimoch <[email protected]> |
To: | <[email protected]> |
Date: | Tue, 13 Mar 2018 16:43:22 +0100 |
Hi Abdalla,In most cases ExtraInput = Ignore does more bad than good because it switches off part of the input checking.
If you get wrong inputs (e.g. "Running" instead of a number) this almost always related to protocols that do not consume all input that a command produces.
If for example a command sends a long, maybe multi-line string and you only parse the beginning until you find an "interesting" value, the remainder of the string is still somewhere.
StreamDevice tries to discard such "old input" at the beginning of every 'out' command, but it is a race condition. If the device sends more input as a result of the previous command after the flush, it will be received instead of the real reply of the next command. This is also true for replies on set commands. If the device sends a reply after your sent a set command, you should read it and not "fire and forget" the set value. Otherwise the replay may mix with the data of the next command.
Thus first you should remove all the ExtraInput = Ignore.Then find out which command replies something with "Running" which you may not have read. Try to connect with telnet and type the commands manually. In the protocol consume *everything* the device sends back.
For more details I need to know more about the device and what commands it knows. If possible send a link to the manual. Also your full protocol file would be helpful.
Dirk On 11.03.2018 13:54, Abdalla Ahmad wrote:
HiWe have the Gamma QPC ion-pump controllers controlled via StreamDevice through telnet, port 23. We have 4 parameters implemented, pressure, voltage, current, and channel status. The problem is that the IOC gives an error that the value received for the pressure PV is "Running", i.e. "Input Running does not match format %E". Seems like at some point the controller is not finishing a previous parameter and the IOC receives something different than the current parameter requested.We have the following in the protocol file: OutTerminator = CR; InTerminator = CR; ReadTimeout = 2000; ReplyTimeout = 2000;And each parameter in the protocol file has ExtraInput = Ignore at the end. Any help resolving this mismatching issue?Best Regards, Abdalla Ahmad Control Engineer SESAME Allan, Jordan. Tel: (+962-5) 3511348 , ext. 265 Fax: (+962-5) 3511423 Mob: (+962-7)88183296 www.sesame.org.jo <http://www.sesame.org.jo/>