Hi,
For i404 device, the gains need to be read in. There are 9 values in the response string of which 8 last values are gains:
15,9.4377e-01,9.3736e-01,9.3128e-01,9.4361e-01,1.0179e+00,1.0184e+00,1.0195e+00
------------------
For method C, discussed here: http://epics.web.psi.ch/software/streamdevice/doc/tipsandtricks.html
only up to 4 PVs can be read with streamDevice, otherwise "Forgot the leading '@' or confused INP with OUT" somewhat misleading message appears.
http://www.aps.anl.gov/epics/tech-talk/2015/msg00689.php
int items = sscanf(ioLink->value.instio.string, "%s%s%s%n%i%n",
filename, protocol, busname, &n, addr, &n);
if (items <= 0)
{
error("%s: Empty I/O link. "
"Forgot the leading '@' or confused INP with OUT ?\n",
name());
return S_dev_badInitRet;
}
So this can not be done with method C
.protocol file like this would not work:
getKs {out "CALIB:GAI?"; in "CALIB:GAI?\10\06%*d,%e,%(\$1\$2.VAL)e,%(\$1\$3.VAL)e,%(\$1\$4.VAL)e,%(\$1\$5.VAL)e,%(\$1\$6.VAL)e,%(\$1\$7.VAL)e,%(\$1\$8.VAL)e"; InTerminator = CR LF; }
====================
-------------
Using method B for reading multiple values, the protocol, and database look as follows:
getGc1 {out "CALIB:GAI?"; in "CALIB:GAI?\10\06%*d,%e,%*e,%*e,%*e,%*e,%*e,%*e,%*e"; InTerminator = CR LF; }
getGc2 {in "CALIB:GAI?\10\06%*d,%*e,%e,%*e,%*e,%*e,%*e,%*e,%*e"; InTerminator = CR LF; }
getGc3 {in "CALIB:GAI?\10\06%*d,%*e,%*e,%e,%*e,%*e,%*e,%*e,%*e"; InTerminator = CR LF; }
getGc4 {in "CALIB:GAI?\10\06%*d,%*e,%*e,%*e,%e,%*e,%*e,%*e,%*e"; InTerminator = CR LF; }
getGc5 {in "CALIB:GAI?\10\06%*d,%*e,%*e,%*e,%*e,%e,%*e,%*e,%*e"; InTerminator = CR LF; }
getGc6 {in "CALIB:GAI?\10\06%*d,%*e,%*e,%*e,%*e,%*e,%e,%*e,%*e"; InTerminator = CR LF; }
getGc7 {in "CALIB:GAI?\10\06%*d,%*e,%*e,%*e,%*e,%*e,%*e,%e,%*e"; InTerminator = CR LF; }
getGc8 {in "CALIB:GAI?\10\06%*d,%*e,%*e,%*e,%*e,%*e,%*e,%*e,%e"; InTerminator = CR LF; }
getGst {in "CALIB:GAI?\10\06%d,%*e,%*e,%*e,%*e,%*e,%*e,%*e,%*e"; InTerminator = CR LF; }
#
record(ai, "$(Sys)$(Dev)Gain:1-RB") {
field(DESC, "COMPENSATION FACTOR A IN")
field(DTYP, "stream")
field(INP, "@I404.protocol getGc1 $(PORT) 0")
field(PINI, "YES")
field(SCAN, "Passive")
}
record(ai, "$(Sys)$(Dev)Gain:2-RB") {
field(DTYP, "stream")
field(DESC, "COMPENSATION FACTOR B IN")
field(INP, "@I404.protocol getGc2 $(PORT) 0")
field(SCAN, "I/O Intr")
}
record(ai, "$(Sys)$(Dev)Gain:3-RB") {
field(DTYP, "stream")
field(DESC, "COMPENSATION FACTOR C IN")
field(INP, "@I404.protocol getGc3 $(PORT) 0")
field(SCAN, "I/O Intr")
}
....
record(ai, "$(Sys)$(Dev)Gain:8-RB") {
field(DTYP, "stream")
field(DESC, "COMPENSATION FACTOR 3300pF D IN")
field(INP, "@I404.protocol getGc8 $(PORT) 0")
field(SCAN, "I/O Intr")
}
However, when IOC exits, a message shows:
exit
2016/04/27 21:31:06.523109 COM1 XF:10IDC-BI{i404:2}Gain:2-RB: asynError in read: 10.10.2.64:4003 disconnected:
2016/04/27 21:31:06.523155 COM1 XF:10IDC-BI{i404:2}Gain:2-RB: I/O error after reading 0 bytes: ""
2016/04/27 21:31:06.523191 COM1 XF:10IDC-BI{i404:2}Gain:2-RB: Protocol aborted
2016/04/27 21:31:06.523220 COM1 XF:10IDC-BI{i404:2}Gain:3-RB: asynError in read: 10.10.2.64:4003 disconnected:
2016/04/27 21:31:06.523236 COM1 XF:10IDC-BI{i404:2}Gain:3-RB: I/O error after reading 0 bytes: ""
2016/04/27 21:31:06.523252 COM1 XF:10IDC-BI{i404:2}Gain:3-RB: Protocol aborted
2016/04/27 21:31:06.523268 COM1 XF:10IDC-BI{i404:2}Gain:4-RB: asynError in read: 10.10.2.64:4003 disconnected:
2016/04/27 21:31:06.523293 COM1 XF:10IDC-BI{i404:2}Gain:4-RB: I/O error after reading 0 bytes: ""
2016/04/27 21:31:06.523308 COM1 XF:10IDC-BI{i404:2}Gain:4-RB: Protocol aborted
2016/04/27 21:31:06.523333 COM1 XF:10IDC-BI{i404:2}Gain:5-RB: asynError in read: 10.10.2.64:4003 disconnected:
2016/04/27 21:31:06.523349 COM1 XF:10IDC-BI{i404:2}Gain:5-RB: I/O error after reading 0 bytes: ""
2016/04/27 21:31:06.523364 COM1 XF:10IDC-BI{i404:2}Gain:5-RB: Protocol aborted
2016/04/27 21:31:06.523379 COM1 XF:10IDC-BI{i404:2}Gain:6-RB: asynError in read: 10.10.2.64:4003 disconnected:
2016/04/27 21:31:06.523395 COM1 XF:10IDC-BI{i404:2}Gain:6-RB: I/O error after reading 0 bytes: ""
2016/04/27 21:31:06.523410 COM1 XF:10IDC-BI{i404:2}Gain:6-RB: Protocol aborted
2016/04/27 21:31:06.523425 COM1 XF:10IDC-BI{i404:2}Gain:7-RB: asynError in read: 10.10.2.64:4003 disconnected:
2016/04/27 21:31:06.523441 COM1 XF:10IDC-BI{i404:2}Gain:7-RB: I/O error after reading 0 bytes: ""
2016/04/27 21:31:06.523455 COM1 XF:10IDC-BI{i404:2}Gain:7-RB: Protocol aborted
2016/04/27 21:31:06.523471 COM1 XF:10IDC-BI{i404:2}Gain:8-RB: asynError in read: 10.10.2.64:4003 disconnected:
2016/04/27 21:31:06.523487 COM1 XF:10IDC-BI{i404:2}Gain:8-RB: I/O error after reading 0 bytes: ""
2016/04/27 21:31:06.523501 COM1 XF:10IDC-BI{i404:2}Gain:8-RB: Protocol aborted
2016/04/27 21:31:06.523518 COM1 XF:10IDC-BI{i404:2}Gain:Sts-RB: asynError in read: 10.10.2.64:4003 disconnected:
2016/04/27 21:31:06.523533 COM1 XF:10IDC-BI{i404:2}Gain:Sts-RB: I/O error after reading 0 bytes: ""
2016/04/27 21:31:06.523548 COM1 XF:10IDC-BI{i404:2}Gain:Sts-RB: Protocol aborted
Not sure if anyone else sees same behavior?
Kaz
- Replies:
- Re: stream Device I/O error Zhang Yuliang
- Re: stream Device I/O error Dirk Zimoch
- Navigate by Date:
- Prev:
Fix parallel build dependency rule Henrique Almeida
- Next:
Re: EPICS 3.14.12.3 Build Problems with the new Ubuntu 16.04 LTS Torsten Bögershausen
- 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:
Fix parallel build dependency rule Henrique Almeida
- Next:
Re: stream Device I/O error Zhang Yuliang
- 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
|