Я не уверен, правильно ли отражает заголовок мой вопрос.
У меня есть библиотека, реализованная на C для lua, предоставленная мне моим работодателем.
Они читают кучу данных с устройства Modbus, так что:
readFunc(Address, numReads)
начнется с адреса и будет считывать numRead количество регистров. В настоящее время это возвращает данные следующим образом:
A, B, C, D = readFunc(1234, 4)
Однако для некоторых наших функций нам нужно выполнять 32+ чтения за раз, и я действительно не хочу, чтобы в моем коде каждый раз появлялись answer1, reply2 ... reply32 +.
В идеале я хотел бы сделать что-то вроде:
array_of_awesome_data = {}
array_of_awesome_data = readFunc(1234, 32)
где array_of_awesome_data [1] будет соответствовать A, как мы это делаем сейчас.
В текущем C-коде, который мне дали, все данные возвращаются в цикле:
lua_pushinteger(L, retData);
Как мне отрегулировать реализованную на Си библиотеку lua, чтобы функция lua возвращала массив?
Примечание: цикл многократных чтений на нашем устройстве слишком неэффективен, поэтому нам нужно сделать 1 большое чтение. Я не знаю достаточно деталей, чтобы обосновать причину, но это то, что мне сказали.