Hi Mark and Ralph,
Thank you for your discussion and advice for the issue.
Mark, you are right. Even there are error messages for duplications of parameter name, all of the parameters are created successfully.
// ------ Error Message ------//
KlystronConfigure("KlystronPort")
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC5 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC6T4 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC6 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC7T4 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC7 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC8T4 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC8 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC9T4 to list 0, parameter already exists.
// ----- Search in the parameter list ----- //
Parameter 131 type=asynFloat64, name=refsub_phaseC5, value=-113.081536, status=0
Parameter 139 type=asynFloat64, name=refsub_phaseC6T4, value=-123.403931, status=0
Parameter 151 type=asynFloat64, name=refsub_phaseC6, value=-123.403931, status=0
Parameter 159 type=asynFloat64, name=refsub_phaseC7T4, value=-72.263947, status=0
Parameter 171 type=asynFloat64, name=refsub_phaseC7, value=-72.263947, status=0
Parameter 179 type=asynFloat64, name=refsub_phaseC8T4, value=160.250702, status=0
Parameter 191 type=asynFloat64, name=refsub_phaseC8, value=160.250702, status=0
Parameter 199 type=asynFloat64, name=refsub_phaseC9T4, value=-47.933350, status=0
Thus, the error messages were false alarm.
Thank you for your help.
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
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Mark Rivers
Sent: Tuesday, March 27, 2018 3:56 AM
To: Ralph Lange; EPICS Tech Talk
Cc: Kurty, Thomas Charles; Weaver, Matt
Subject: Re: asynPortDriver createParam complains duplicated parameter name
> The char * you supply is the same for all parameters, so if the port drive does not create a local copy, all names will always be the same.
asynPortDriver does make a local copy of the string you provide, so that should not be the problem.
Kukhee, after the port driver is created (with the errors you see) type:
asynReport 1, KlystronPort
That will show you all the parameters that we successfully created.
Mark
________________________________
From: [email protected] <[email protected]> on behalf of Ralph Lange <[email protected]>
Sent: Tuesday, March 27, 2018 3:52 AM
To: EPICS Tech Talk
Cc: Kurty, Thomas Charles; Weaver, Matt
Subject: Re: asynPortDriver createParam complains duplicated parameter name
Hi Kukhee,
The name argument to the createParam() method is defined as const char *. (See the documentation<https://epics.anl.gov/modules/soft/asyn/R4-31/asynDoxygenHTML/classasyn_port_driver.html#a20e248e20dcecf64350ad34dda0482be> for more details.) As you are definitely not using constant strings, so you should have seen warnings at compile time.
The char * you supply is the same for all parameters, so if the port drive does not create a local copy, all names will always be the same.
Cheers,
~Ralph
On Tue, Mar 27, 2018 at 7:18 AM, Kim, Kukhee <[email protected]<mailto:[email protected]>> wrote:
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<https://maps.google.com/?q=2575+Sand+Hill+Rd&entry=gmail&source=g>, MS 64 Menlo Park, CA 94025
Email: [email protected]<mailto:[email protected]>
Phone: (650)926-4912<tel:(650)%20926-4912>
Fax: (650)926-3800<tel:(650)%20926-3800>
- Replies:
- Re: asynPortDriver createParam complains duplicated parameter name Mark Rivers
- References:
- asynPortDriver createParam complains duplicated parameter name Kim, Kukhee
- Re: asynPortDriver createParam complains duplicated parameter name Ralph Lange
- Re: asynPortDriver createParam complains duplicated parameter name Mark Rivers
- Navigate by Date:
- Prev:
Re: asynPortDriver createParam complains duplicated parameter name Mark Rivers
- Next:
Re: asynPortDriver createParam complains duplicated parameter name Mark Rivers
- 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: asynPortDriver createParam complains duplicated parameter name Mark Rivers
- Next:
Re: asynPortDriver createParam complains duplicated parameter name Mark Rivers
- 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
|