One way to do this would be to separate your protocol into a write
protocol and a read protocol. Then you could have, say, XY:moveu
start a motion and forward link to set a "moving" indicator to true.
The moving indicator could wait for the "OK" message.
protocol:
ReplyTimeout = 10000;
move {
out "\$1%d\r";
}
checkdone {
in "%s\r\n";
}
database:
record(longout, "XY:moveu") {
field(SDIS, "XY:moving")
field(DISV, "1")
field(DESC, "Move XY-Table up")
field(DTYP, "stream")
field(OUT, "@devXYtableSupport.proto move(u) $(PORT) $(A)")
field(FLNK, "XY:setMoving")
}
record(bo, "XY:setMoving") {
field(DOL, "1")
field(OUT, "XY:moving PP")
}
record(bi, "XY:moving") {
field(ZNAM, "OK")
field(ONAM, "MOVING")
field(DTYP, "stream")
field(OUT, "@devXYtableSupport.proto checkdone $(PORT) $(A)")
}
As I read the stream docs, "XY:moving" will be set to zero when the "OK"
message is received. I haven't tried this, and I've probably made some
stupid error that I hope someone will notice and fix.
Tim
----- Original Message -----
> From: "Christian Pauly" <[email protected]>
> To: "EPICS Tech Talk" <[email protected]>
> Sent: Friday, June 21, 2013 4:52:24 AM
> Subject: Re: help setting up XY table control with EPICS StreamerClass
>
> Ok, i see.
>
> But still:
> How can i get then information if the motors are running at the
> moment,
> or not. Without doing periodic scans on the PACT fields ??
>
>
> On 06/21/2013 11:39 AM, Ralph Lange wrote:
> > Hi Christian,
> >
> > On Fri Jun 21 2013 11:07:38 GMT+0200 (CEST), Christian Pauly
> > <[email protected]> wrote:
> >> No, only one motor can move at a time.
> >> But i thought it is "bad style" to do this synchronous with such
> >> large
> >> delays ? ( I had to define huge timeouts in the protocol to get it
> >> work...)
> >
> > This rule of not doing synchronous device support for devices with
> > long
> > delays applies to writing device support.
> >
> > If you are using StreamDevice (which I assume), your device support
> > is
> > not synchronous - StreamDevice and ASYN support below are working
> > asynchronously and take care of the gory details for you.
> >
> > The port that you are communicating with will be locked while a
> > protocol
> > (like your move command) is running. But that is fine if the device
> > can
> > only use one motor at a time.
> >
> > Cheers,
> > ~Ralph
>
>
> --
> Dr. Christian Pauly
> Bergische Universität Wuppertal
> Fachbereich C - Physik
> Gaußstraße 20, D-42119 Wuppertal
> Tel: +49 (0)202 439-2632,
> Fax: +49 (0)202 439-2662
>
>
>
- References:
- Re: help setting up XY table control with EPICS StreamerClass Christian Pauly
- Navigate by Date:
- Prev:
Re: Using all the cores available on modern processors Keith Thorne
- Next:
Re: Problem in errlogRemoveListener Andrew Johnson
- 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:
Re: help setting up XY table control with EPICS StreamerClass Pearson, Matthew R.
- Next:
Re: help setting up XY table control with EPICS StreamerClass Zenon Szalata
- 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
|