Experimental Physics and Industrial Control System
|
Hey all,
we have some devices controlled via CAN bus.
Since CAN bus is based on the transmission of 1-8 bytes, I wrote an
AsynPortDriver with an asynOctet interface as lower level driver.
I wanted to use StreamDevice as higher level driver defining the actual
payload data that is tranmitted between our PC and the devices.
Sending and receiving messages in principal works, but I have an issue
with I/O Interrupts and I don't know why.
Setting the streamDebug variable to 1, I see the following output from
StreamDevice:
2023/07/04 08:54:44.301618 can1 AsynDriverInterface.cc:951:
AsynDriverInterface::readHandler(CAN1:TEST:R): ioAction=AsyncRead
read(63 bytes, timeout=0 sec) returned status asynSuccess: received=4
bytes, eomReason=NONE, buffer="<07><00><00><ea>"
2023/07/04 08:54:44.301765 can1 AsynDriverInterface.cc:977:
AsynDriverInterface::readHandler(CAN1:TEST:R): AsyncRead poll: received
4 of 63 bytes "<07><00><00><ea>" eomReason=NONE [data ignored]
2023/07/04 08:54:44.301889 can1 AsynDriverInterface.cc:1123:
AsynDriverInterface::readHandler(CAN1:TEST:R) readMore=-1 bytesToRead=63
2023/07/04 08:54:44.302015 can1 AsynDriverInterface.cc:951:
AsynDriverInterface::readHandler(CAN1:TEST:R): ioAction=AsyncRead
read(63 bytes, timeout=0.5 sec) returned status asynTimeout: received=0
bytes, eomReason=NONE, buffer=""
2023/07/04 08:54:44.302140 can1 AsynDriverInterface.cc:1051:
AsynDriverInterface::readHandler(CAN1:TEST:R): ioAction=AsyncRead,
timeout [0.5 sec] after 0 of 63 bytes ""
2023/07/04 08:54:44.302262 can1 StreamCore.cc:963:
StreamCore::readCallback(CAN1:TEST:R, StreamIoTimeout input="", size=0)
2023/07/04 08:54:44.302378 can1 StreamCore.cc:1015:
StreamCore::readCallback(CAN1:TEST:R) inputBuffer="", size 0
2023/07/04 08:54:44.302490 can1 StreamCore.cc:1067:
StreamCore::readCallback(CAN1:TEST:R) end flag received
2023/07/04 08:54:44.302605 can1 StreamCore.cc:1127:
StreamCore::readCallback(CAN1:TEST:R) input line: ""
2023/07/04 08:54:44.302726 can1 StreamCore.cc:1151:
StreamCore::readCallback(CAN1:TEST:R) async match failure: just restart
2023/07/04 08:54:44.302847 can1 AsynDriverInterface.cc:806:
AsynDriverInterface::readRequest(CAN1:TEST:R, 500 msec reply, 500 msec
read, expect 0 bytes, async=yes)
2023/07/04 08:54:44.302964 can1 AsynDriverInterface.cc:831:
AsynDriverInterface::readRequest CAN1:TEST:R: queueRequest(...,
priority=0, queueTimeout=-1 sec) = asynSuccess [async=true]
The readHandler reads the message from the bus but ignores it. According
to the comments in the code it is ignored because the asyncReadHandler
should also receive this message and handle the I/O interrupt, but it
seems the Interrupt callback is not executed.
Any idea why the callbacks don't work?
I'm using
base 7.0.6.1
stream 2.8.24
asyn (current HEAD on master branch)
Cheers,
Florian
--
Ruhr-Universität Bochum
AG der Experimentalphysik I
Dr. Florian Feldbauer
NB 2/131 / Fach 125
Universitätsstr. 150
D-44801 Bochum
Office: NB 2/134
Phone: (+49)234 / 32-23563
Fax: (+49)234 / 32-14170
https://paluma.ruhr-uni-bochum.de
- Replies:
- Re: Issue with streamdevice and I/o Intr Zimoch Dirk via Tech-talk
- Navigate by Date:
- Prev:
Re: Adding EPICS modules to conda-forge Simon Rose via Tech-talk
- Next:
Re: Issue with streamdevice and I/o Intr Zimoch Dirk via Tech-talk
- 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
- Navigate by Thread:
- Prev:
Attn: All @helmholz-berlin.de subscribers Andrew Johnson via Tech-talk
- Next:
Re: Issue with streamdevice and I/o Intr Zimoch Dirk via Tech-talk
- 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
|
ANJ, 04 Jul 2023 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
·
Search
·
EPICS V4
·
IRMIS
·
Talk
·
Bugs
·
Documents
·
Links
·
Licensing
·
|