ndWriteMemoryByAddress
- Updated2025-10-07
- 2 minute(s) read
Purpose
Executes the WriteMemoryByAddress service. Writes data to the ECU memory.
Format
long ndWriteMemoryByAddress(
TD1 *diagRef,
unsigned long address,
unsigned char size,
unsigned char dataIn[],
long len,
LVBoolean *success);
Input
diagRef
Specifies the diagnostic session handle, obtained from ndOpenDiagnosticOnCANFD or ndOpenDiagnosticOnIPStack and passed to subsequent diagnostic functions. Normally, it is not necessary to manually manipulate the elements of this struct.
address
Defines the memory address to which data are written. Only three bytes are sent to the ECU, so the address must be in the range 0–FFFFFF (hex).
size
Defines the length of the memory block to be written.
dataIn
Defines the memory block to be written to the ECU.
len
Must contain the number of valid data bytes in dataIn. Output
success
Indicates successful receipt of a positive response message for this diagnostic service.
Return Value
The return value indicates the function call status as a signed 32-bit integer. Zero means the function executed successfully. A negative value specifies an error, which means the function did not perform the expected behavior. A positive value specifies a warning, which means the function performed as expected, but a condition arose that may require attention.
Use the ndStatusToString function to obtain a descriptive string for the return value.
DescriptionThis function performs the KWP2000 WriteDataByAddress service and writes RecordValues (data values) to the ECU. address and size identify the data. The vehicle manufacturer must ensure the ECU conditions are met when performing this service. Typical use cases are clearing nonvolatile memory, resetting learned values, setting option content, setting the Vehicle Identification Number, or changing calibration values.
For further details about this service, refer to the ISO 14230-3 standard.