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

Subject: RE: long string command to device
From: Mark Rivers <[email protected]>
To: "Gofron, Kazimierz" <[email protected]>, "[email protected]" <[email protected]>
Date: Fri, 13 May 2016 03:00:47 +0000
Hi Kaz,

Do you need to use the devXxStrParm device support?  Why not use StreamDevice for this?  devXxStrParam.c is limited to using stringout records, it does not support waveform records.  I consider devXxStrParam to be obsolete, it is ~20 years old with no significant changes in the last 12 years.  

StreamDevice can use waveform records, and so does not have a 40 character limit.

Mark

________________________________________
From: [email protected] [[email protected]] on behalf of Gofron, Kazimierz [[email protected]]
Sent: Thursday, May 12, 2016 9:23 PM
To: [email protected]
Subject: long string command to device

Hi,

I am writing EPICS driver for Keithley 3706A, and am trying to figure out how to send long string commands to the 3706A.
The ICL commands have no short version, and some commands exceed current 40 char length limit of the stringout record.

____
The EPICS stringoutRecord.h is limited to 40 char.
char            val[40];        /* Current Value */
****

In my driver assigning to stringout:
"dmm.setconfig('1019:1020','fourwireohms')"
results in "dmm.setconfig('1019:1020','fourwireohms" being send - missing last 2 characters

Is there a replacement for stringout with relaxed limit?
----------------
Simplified command/respond test:

record(stringout, "$(P)$(Dmm)command") {
  field(FLNK, "$(P)$(Dmm)reply")
}

record(stringin, "$(P)$(Dmm)reply") {
  field(DTYP, "asynOctetWriteRead")
  field(INP, "@asyn($(PORT) 0) $(P)$(Dmm)command")
}
------------------
I am currently using this format in the driver:

record(stringout, "$(P)$(Dmm)dmm_read") {
  field(DTYP, "asyn so stringParm")
  field(FLNK, "$(P)$(Dmm)dmm_get_str.VAL  PP MS")
  field(VAL, "print(dmm.measure())")
  field(OUT, "@asyn($(PORT))TERM=0a")
}

record(stringin, "$(P)$(Dmm)dmm_get_str") {
  field(DTYP, "asyn si stringParm")
  field(INP, "@asyn($(PORT))TERM=0a,TO=10000")
  field(FLNK, "$(P)$(Dmm)read_finished.VAL  PP MS")
}

Kazimierz


Replies:
RE: long string command to device Gofron, Kazimierz
References:
long string command to device Gofron, Kazimierz

Navigate by Date:
Prev: long string command to device Gofron, Kazimierz
Next: RE: long string command to device Gofron, Kazimierz
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: long string command to device Gofron, Kazimierz
Next: RE: long string command to device Gofron, Kazimierz
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 15 Jul 2016 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·