Documentation Index
Fetch the complete documentation index at: https://notevil.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
diagSetParameter
Valid for: CANoe DE
The behavior of this CAPL function depends on the used parameters.
Possible scenarios:
Set the numeric parameter to the specified value
Function Syntax
long diagSetParameter (diagResponse obj, char parameterName[], double newValue)
long diagSetParameter (diagRequest obj, char parameterName[], double newValue)
long diagSetParameter (diagResponse obj, long mode, char parameterName[], double newValue)
long DiagSetParameter (diagRequest obj, long mode, char parameterName[], double newValue)
Method Syntax
diagResponse::SetParameter (char parameterName[], double newValue)
diagRequest::SetParameter (char parameterName[], double newValue)
diagResponse::SetParameter (long mode, char parameterName[], double newValue)
diagRequest::SetParameter (long mode, char parameterName[], double newValue)
Description
Sets the numeric parameter to the specified value.
Note
- Textual diagnostic parameters cannot be set with double values.
- With 7.6 SP2 the function behavior was changed. The parameter will no longer be set to its default value.
Parameters
- obj: Diagnostics object
- parameterName: Parameter qualifier (NOT the language-dependent name of the parameter!)
- newValue: Numeric value to which the parameter should be set.
- mode: Access mode
Return Values
Example
variables {
// Access modes for diagGet/SetParameter
const long cParamAccessNumerical = 0;
const long cParamAccessPhysical = 1;
const long cParamAccessCoded = 2;
// Parameter values
const double cPhysicalValue = 14.2;
const double cCodedValue = 11259375; // = 0xABCDEF
}
on key 's'
{
diagRequest Door.WindowLiftRoughPosition_Write req;
req.SetParameter("WindowLiftRoughPosition", "100,00%"); // set parameter to the symbolically-specified value
req.SendRequest();
}
on key 'p'
{
diagRequest ECU.Value1_Write req;
diagSetParameter(req, cParamAccessPhysical, "PhysicalValue", cPhysicalValue);
req.SendRequest(); // Parameter will be transmitted as 40 2C 66 66 66 66 66 66 (64bit double, Motorola format)
}
on key 'n'
{
diagRequest ECU.Value2_Write req;
double numericalValue; // E.g. numerical value 142 would represent the same value as gPhysicalValue=14.2
numericalValue=cPhysicalValue*10; // Based on formula, e.g. 142 * 1/10 = 14.2 (14.2 = physical value, 142 = numerical value)
diagSetParameter(req, cParamAccessNumerical, "NumericalValue", numericalValue); // Set numerical value (e.g.: 142 equals 142 * 1/10 Volt = 14.2 Volt)
req.SendRequest(); // Parameter will be transmitted as 0x40 0x61 0xBF 0xFF 0xFF 0xFF 0xFF 0xFF (64bit double, Motorola format)
}
on key 'c'
{
diagRequest ECU.Value3_Write req;
diagSetParameter(req, cParamAccessCoded, "Value_Uint32", cCodedValue); // Set coded value, not considering the byte order from diagnostic description (big or little endian)
req.SendRequest(); // Parameter will be transmitted as 0x00 0xAB 0xCD 0xEF both for 32bit little endian parameters (Intel) and 32bit big endian parameters (Motorola)
}
Set a parameter to the symbolically-specified value.
Function Syntax
long diagSetParameter (diagResponse obj, char parameterName[], char newValue[])
long diagSetParameter (diagRequest obj, char parameterName[], char newValue[])
Method Syntax
diagResponse::SetParameter (char parameterName[], char newValue[])
diagRequest::SetParameter (char parameterName[], char newValue[])
Description
Sets a parameter to the symbolically-specified value. This is possible for all parameters, also numeric ones.
Parameters
- obj: Diagnostics object
- parameterName: Parameter qualifier
- newValue: Symbolic value
Return Values
Example
variables {
// Access modes for diagGet/SetParameter
const long cParamAccessNumerical = 0;
const long cParamAccessPhysical = 1;
const long cParamAccessCoded = 2;
// Parameter values
const double cPhysicalValue = 14.2;
const double cCodedValue = 11259375; // = 0xABCDEF
}
on key 's'
{
diagRequest Door.WindowLiftRoughPosition_Write req;
req.SetParameter("WindowLiftRoughPosition", "100,00%"); // set parameter to the symbolically-specified value
req.SendRequest();
}
on key 'p'
{
diagRequest ECU.Value1_Write req;
diagSetParameter(req, cParamAccessPhysical, "PhysicalValue", cPhysicalValue);
req.SendRequest(); // Parameter will be transmitted as 40 2C 66 66 66 66 66 66 (64bit double, Motorola format)
}
on key 'n'
{
diagRequest ECU.Value2_Write req;
double numericalValue; // E.g. numerical value 142 would represent the same value as gPhysicalValue=14.2
numericalValue=cPhysicalValue*10; // Based on formula, e.g. 142 * 1/10 = 14.2 (14.2 = physical value, 142 = numerical value)
diagSetParameter(req, cParamAccessNumerical, "NumericalValue", numericalValue); // Set numerical value (e.g.: 142 equals 142 * 1/10 Volt = 14.2 Volt)
req.SendRequest(); // Parameter will be transmitted as 0x40 0x61 0xBF 0xFF 0xFF 0xFF 0xFF 0xFF (64bit double, Motorola format)
}
on key 'c'
{
diagRequest ECU.Value3_Write req;
diagSetParameter(req, cParamAccessCoded, "Value_Uint32", cCodedValue); // Set coded value, not considering the byte order from diagnostic description (big or little endian)
req.SendRequest(); // Parameter will be transmitted as 0x00 0xAB 0xCD 0xEF both for 32bit little endian parameters (Intel) and 32bit big endian parameters (Motorola)
}