EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  <20182019  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  <20182019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: asynDriver - UDP server
From: Joao Afonso via Tech-talk <[email protected]>
To: "[email protected]" <[email protected]>
Date: Mon, 3 Dec 2018 17:27:00 +0000
Hello!

First, sorry if any of these questions seems too simple. I started working recently with EPICS and I am still learning how it works.

Basically, I am trying to create an IOC that works as a UDP server. It should be listening at a certain port and, when a new packet arrives, it should update a set of records with the incoming data.
It doesn't need to respond to any of the packets.

The data is a binary array, which will be read into a waveform record, and then unpacked into other records in order to be read by the clients (I don't know if this is the best approach, for now I am just experimenting). The structure of the binary array is fixed and known beforehand.


For now, I just want to update the waveform record with the binary data when the UDP packet arrives. I am using asynDriver since it seems to provide all the tools I need:

On the 'st.cmd' file I have:

[...]
drvAsynIPServerPortConfigure ("fgc_udp", "localhost:2906 udp", 10, 0, 0, 0)
dbLoadRecords("db/fgc_udp.db","GW=${FGC_GW_NAME}:")
[...]

And on the 'db/fgc_udp.db' I have:

record(waveform, "$(GW)UDP") {
     field(SCAN, "I/O Intr")
     field(DTYP, "asynOctetRead")
     field(FTVL, "UCHAR")
     field(DESC, "UDP publication")
     field(NELM, "4096")
     field(INP,  "@asyn(fgc_udp, 0, 0) drvUser")
 }


Since I am using 'I/O Intr', I would expect the record to be updated when a new UDP packet arrives, but it is not working.
It only updates if I use the IOC shell command "dbtr xxx:UDP", or if I change SCAN to a "N seconds" option.

Do you know how I can fix it? I guess it is something simple, but I am stuck.

I would also like to know if using a waveform record is a good starting point for unpacking binary data, or if there is a better alternative.


Thank you in advance,
Joao




Replies:
RE: asynDriver - UDP server Mark Rivers via Tech-talk

Navigate by Date:
Prev: Re: 转发: ADMythen --acquisition issues Mark Rivers via Tech-talk
Next: RE: asynDriver - UDP server Mark Rivers 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  <20182019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: webEPICS Hartman, Steven M. via Tech-talk
Next: RE: asynDriver - UDP server Mark Rivers 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  <20182019  2020  2021  2022  2023  2024 
ANJ, 03 Dec 2018 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·