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.
