Hello Mark,
Thanks for quick response.
I used waveform, and it works for incoming response. But my limitation is outgoing string, and I simply do not know how to replace the {}test with waveform. And be able to assign the long string to {}test waveform with dbPut().
record(stringout, "$(P)$(Dmm)test") {
field(FLNK, "$(P)$(Dmm)dmm_get_wf")
}
record(waveform, "$(P)$(Dmm)dmm_get_wf") {
field(DESC, "Measurements")
field(DTYP, "asynOctetWriteRead")
field(INP, "@asyn($(PORT) 0)$(P)$(Dmm)test")
field(FTVL, "CHAR")
field(NELM, "256")
}
I will look into replacing devXxStrParam with StreamDevice.
Kaz
-----Original Message-----
From: Mark Rivers [mailto:[email protected]]
Sent: Thursday, May 12, 2016 11:01 PM
To: Gofron, Kazimierz; [email protected]
Subject: RE: long string command to device
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
- References:
- long string command to device Gofron, Kazimierz
- RE: long string command to device Mark Rivers
- Navigate by Date:
- Prev:
RE: long string command to device Mark Rivers
- Next:
Question about Archive Engine lzfneu
- 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: long string command to device Mark Rivers
- Next:
AW: long string command to device Zimoch Dirk (PSI)
- 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
|