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  2018  2019  <20202021  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  <20202021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: usage of Java Channel Access Client
From: Simon Rees via Tech-talk <[email protected]>
To: <[email protected]>
Date: Fri, 24 Jan 2020 14:54:57 +0100
Dear all

Just a quick note on this discussion...

Thanks, Xuan, for putting this topic on our radar over here
at PSI. Also to Lewis for the documentation fixes that he
recently submitted to the library.

We will look at ways of improving the API and/or of making
sure that the README file offers more explicit guidance
for performing get/put bulk operations.

Best regards

Simon Rees
PSI Controls Developer


On 23.01.20 07:26, 吴煊 via Tech-talk wrote:
Hi Lewis,
Thanks for your reply. Could you give me an elegant way of example to call put method. It seems like that I need to create channel for 300 times by what you said.
Cheers,
Xuan

在 2020-01-23 06:01:00,"J. Lewis Muir" <[email protected]> 写道:

On 01/22, 吴煊 via Tech-talk wrote:
My question is how to use each channel to put value? I've not found any example. I have tried: channels.get(0).put("test"), it's not correct.(error info:The method put(capture#1-of ?) in the type Channel<capture#1-of ?> is not applicable for the arguments (String))

That put method is just going to be awkward to use when the type of the
object it's called on is Channel<?> (i.e., a Channel of some type).
There are some other methods on Channel that you could call without
trouble, but put(T) will be problematic because its argument is of type
T and the object you're calling it on is a Channel of some type, not
necessarily type T.  If you have to call that method, the best you can
do is cast the Channel<?> object to the correct type, Channel<String> in
your example:

  (Channel<String>(channels.get(0))).put("test");

But that's ugly, and you're throwing away all of the benefits of
generics (e.g., type safety and expressiveness).  You'd also have to add
a @SuppressWarnings("unchecked") annotation to the method, or change
the code to a local variable assignment and put the annotation on the
variable, to get rid of the compiler warning.

So, I'd say that you'd be better off not trying to call that put(T)
method like that.  Instead, stick to only calling methods on those
channels that you can call in a type-safe way.

If you really need some way to do what you're trying to do, you'd
probably want something added to the ca API to help with that.

If you have to do it yourself, though, you could create your own
container object that could hold Channel instances and that could
provide a get and put method that took a type token.  Then, assuming
"channels" was an instance of this container object, your example could
become something like this:

  channels.put(0, String.class, "test");

Of course, there are various designs you could come up with.

Lewis

References:
usage of Java Channel Access Client 吴煊 via Tech-talk
Re: usage of Java Channel Access Client J. Lewis Muir via Tech-talk
Re:Re: usage of Java Channel Access Client 吴煊 via Tech-talk

Navigate by Date:
Prev: Re: Getting images from area detector plugins Wang Xiaoqiang via Tech-talk
Next: Re: CAS-client thread issues in areaDetector IOC Wlodek, Jakub 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  <20202021  2022  2023  2024 
Navigate by Thread:
Prev: Re:Re: usage of Java Channel Access Client 吴煊 via Tech-talk
Next: Oxford IC101 support? 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  2018  2019  <20202021  2022  2023  2024 
ANJ, 24 Jan 2020 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·