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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: asynPortDriver createParam complains duplicated parameter name |
From: | Ralph Lange <[email protected]> |
To: | EPICS Tech Talk <[email protected]> |
Cc: | "Kurty, Thomas Charles" <[email protected]>, "Weaver, Matt" <[email protected]> |
Date: | Tue, 27 Mar 2018 10:52:11 +0200 |
Hi Mark,
I am using asyn R4-31 for LCLS1 mission readiness LLRF project.
During creating parameters for asyn Port driver, I got error messages as the followings:
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC5 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC6T4 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC6 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC7T4 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC7 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC8T4 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC8 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC9T4 to list 0, parameter already exists.
It complains about duplicated parameter names but, I do not have any duplicated name.
I am using the following code to create the parameters.
#define rawWaveformString "raw_wfC%dT%d"
#define iWaveformString "i_wfC%dT%d"
#define qWaveformString "q_wfC%dT%d"
#define phaseWaveformString "p_wfC%dT%d"
#define amplitudeWaveformString "a_wfC%dT%d"
#define avgPhasePerChnString "avg_phaseC%dT%d"
#define avgAmplitudePerChnString "avg_amplitudeC%dT%d"
#define avgPowerPerChnString "avg_powerC%dT%d"
#define refSubPhasePerChnString "refsub_phaseC%dT%d"
#define tsUnaware_
avgPhasePerChnString "avg_phaseC%d" #define tsUnaware_
avgAmplitudePerChnString "avg_amplitudeC%d" #define tsUnaware_
avgPowerPerChnString "avg_powerC%d" #define tsUnaware_
refSubPhasePerChnString "refsub_phaseC%d" --------------------
for(int i=0; i < MAX_CHANNEL_NUMBER; i++) {
for(int j =0; ts[j] > 0; j++) {
if( i < MAX_RAW_CHANNEL_NUMBER ) sprintf(param_name, rawWaveformString, i, ts[j]); createParam(param_name, asynParamInt16Array, &p_signalWaveform[i][j].raw);
sprintf(param_name, iWaveformString, i, ts[j]); createParam(param_name, asynParamFloat64Array, &p_signalWaveform[i][j].i);
sprintf(param_name, qWaveformString, i, ts[j]); createParam(param_name, asynParamFloat64Array, &p_signalWaveform[i][j].q);
sprintf(param_name, phaseWaveformString, i, ts[j]); createParam(param_name, asynParamFloat64Array, &p_signalWaveform[i][j].phase)
; sprintf(param_name, amplitudeWaveformString, i, ts[j]); createParam(param_name, asynParamFloat64Array, &p_signalWaveform[i][j].
amplitude);
sprintf(param_name, avgPhasePerChnString, i, ts[j]); createParam(param_name, asynParamFloat64, &p_signalWaveform[i][j].avg_
phase); sprintf(param_name, avgAmplitudePerChnString, i, ts[j]); createParam(param_name, asynParamFloat64, &p_signalWaveform[i][j].avg_
amplitude); sprintf(param_name, avgPowerPerChnString, i, ts[j]); createParam(param_name, asynParamFloat64, &p_signalWaveform[i][j].avg_
power); sprintf(param_name, refSubPhasePerChnString, i, ts[j]); createParam(param_name, asynParamFloat64, &p_signalWaveform[i][j].
refsub_phase); }
sprintf(param_name, tsUnaware_
avgPhasePerChnString, i); createParam(param_name, asynParamFloat64, &p_signalWaveform_tsUnaware[i] .avg_phase); sprintf(param_name, tsUnaware_
avgAmplitudePerChnString, i); createParam(param_name, asynParamFloat64, &p_signalWaveform_tsUnaware[i] .avg_amplitude); sprintf(param_name, tsUnaware_
avgPowerPerChnString, i); createParam(param_name, asynParamFloat64, &p_signalWaveform_tsUnaware[i] .avg_power); sprintf(param_name, tsUnaware_
refSubPhasePerChnString, i); createParam(param_name, asynParamFloat64, &p_signalWaveform_tsUnaware[i] .refsub_phase); }
----------------
If I commented out one of line in the code, the error messages point out other parameters.
For example, if I commented out the following line.
// sprintf(param_name, tsUnaware_
refSubPhasePerChnString, i); createParam(param_name, asynParamFloat64, &p_signalWaveform_tsUnaware[i] .refsub_phase);
The error message changed as the followings:
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter avg_powerC5 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC6T4 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter avg_powerC6 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC7T4 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter avg_powerC7 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC8T4 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter avg_powerC8 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC9T4 to list 0, parameter already exists.
The parameter avg_powerC5, C6, C7, and C8 were not in the previous error messages.
Would you give me your advice for this issue?
Thank you.
Best regards,
Kukhee
------------------------------
-------------- Kukhee Kim
SLAC National Accelerator Laboratory
2575 Sand Hill Rd, MS 64
Menlo Park, CA 94025
Email: [email protected]
Phone: (650)926-4912
Fax: (650)926-3800