If you need to send or receive bytes to or from an LJM-supported device, consider using the LJM ByteArray functions.
These functions automatically split writes or reads into multiple packets, if necessary. Because of this, you can write or read a large number of bytes without worrying about what the maximum packet size of the connection is. This is especially useful for buffer registers. For example:
- Writing or reading serial protocols like SPI, I2C, SBUS, 1-Wire, or Asynchronous Serial (UART)
- Writing a Lua script and reading the Lua output
- Writing or reading file paths on device SD cards
Name versions:
Address versions:
Example
[C/C++] Use LJM_eWriteNameByteArray to write a Lua script to device
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_eWriteAddressByteArray(
handle,
LUA_SOURCE_WRITE_ADDRESS,
scriptLength,
luaScript,
&ErrorAddress
);
if (LJMError != LJME_NOERROR) {
// Deal with error
}
See the LJM C/C++ examples download for a full example.
