eWriteNameByteArray [LJM User's Guide]
Write to a device register that expects consecutive byte values, the register specified by a name.
Syntax
LJM_ERROR_RETURN LJM_eWriteNameByteArray(
int Handle,
const char * Name,
int NumBytes,
const char * aBytes,
int * ErrorAddress)
Parameters
Handle [in]
A device handle. The handle is a connection ID for an active device. Generate a handle with LJM_Open or LJM_OpenS.
Name [in]
The name that specifies the Modbus register(s) to write. Names can be found throughout the device datasheet or in the Modbus Map.
NumBytes [in]
The number of consecutive bytes.
aBytes [in]
An array of bytes to be transferred to the device. The array size should be equal to NumBytes
.
ErrorAddress [out]
If error, the address responsible for causing an error.
Returns
LJM errorcodes or 0
for no error.
Remarks
LJM_eReadNameByteArray is the reverse of LJM_eWriteNameByteArray
.
The Address version of this function is LJM_eWriteAddressByteArray.
This function will append a 0x00
byte to aBytes
for odd-numbered NumBytes
.
If NumBytes
is large enough, these functions will automatically split writes into multiple packets based on the current device's effective data packet size. Using both non-buffer and buffer registers in one function call is not supported.
Example
Write a Lua script to LUA_SOURCE_WRITE
int LJMError;
int ErrorAddress;
const char * luaScript =
"LJ.IntervalConfig(0, 1000)\n"
"while true do\n"
" if LJ.CheckInterval(0) then\n"
" print(LJ.Tick())\n"
" end\n"
"end\n"
"\0";
const unsigned scriptLength = strlen(luaScript) + 1;
// handle comes from LJM_Open()
LJMError = LJM_eWriteNameByteArray(
handle,
"LUA_SOURCE_WRITE",
scriptLength,
luaScript,
&ErrorAddress
);
if (LJMError != LJME_NOERROR) {
// deal with error
}