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: Problem with streamDevice and I/O Intr |
From: | Florian Feldbauer <[email protected]> |
To: | Dirk Zimoch <[email protected]> |
Cc: | [email protected], Florian Feldbauer <[email protected]> |
Date: | Tue, 10 Aug 2010 14:56:46 +0200 (CEST) |
Hi Florian,
Looks like a race condition. I have to look in the driver. I fear there is nothing you can do about it.
How does the communication work? You say you get 64 messages in series. What do they look like? All like "t68043F34AAA1\r" (only difference in $(no))? That is the timing of these messages? Do they all come in one burst? Do you have a link to the device documentation?
Dirk
Florian Feldbauer wrote:Hello all,
I ran into a problem when reading from a serial device using I/O Intr processing with streamDevice. I receive 64 messages in series and have one record for each message. Now and then I get the error message from epics:
timerQueue INTERNAL ERROR (PANDA:FEMC:PROTO192:THMP:680:CHK:00): timerExpired() unexpected ioAction None
Any idea how to fix this problem?
This is the db: record (scalcout, "THMP:$(ID):CHK:$(no)") { field (DTYP, "stream") field (SCAN, "I/O Intr") field (CALC, "((K XOR L) XOR C)==E?(K<<8)+L:LL") field (OUT, "@THMP.proto getMsg($(no)) USBCAN1") field (INPC, "$(no)") field (INLL, "INV CHK") }
This is the protocol: Terminator = CR; getMsg{ in "t6804\${2}%(K)2X%(L)2X%(E)2X"; }
This is an example string, which is sent from the device: t68043F34AAA1\r
Best regards Florian