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: multiple asynRecord communication conflict |
From: | Mark Rivers <[email protected]> |
To: | "'Zohar, Sioan'" <[email protected]>, "[email protected]" <[email protected]> |
Date: | Wed, 25 Mar 2015 15:56:16 +0000 |
There should be no possibility of such a conflict. asynManager keeps a lock on the drvAsynSerialPort driver so that only one thread can talk to it at a time. What TMOD are you using with your asyn records, Write/Read, Write, etc.? If you need to do both a write and then a read you should use Write/Read, because that is atomic,
no other thread can do a write before the read is performed. Have you tried turning on asynTrace for the drvAsynSerialPort port? You can then see what is happening. Have you run asynReport on the drvAsynSerialPort port when it is no longer responding? Are the asyn records actually still processing when the serial port is no longer communicating? I have many IOCs with multiple asyn records talking to the same serial port and have never seen a problem. Is this on Linux or Windows? Mark From: [email protected] [mailto:[email protected]]
On Behalf Of Zohar, Sioan Hi, I have several asynRecord instances running in a softIOC talking to a single serial port and I suspect they are conflicting. Everything runs fine for several hours, and then the asynRecord writes stop reaching the serial port. (I confirmed this by sniffing the serial output using the
serial port from another computer). This error is not observed when there is only one instance of the asynRecord. This problem does not occur on every computer, so perhaps it depends on environment settings? I've tried daisy chaining the asynRecords by flnk'ing them. Two asynRecords are set to scan = passive, and the other is set to scan = 1 second. I thought this
would prevent the possibility of multiple asynrecord instances from talking to the port at once, but the problem persists. Thanks in advance for your help. Sioan |