Библиотека Lua - возврат массива в lua из C

Я не уверен, правильно ли заголовок отражает мой вопрос.

У меня есть библиотека, реализованная на C для lua, предоставленная мне моим работодатель. У них есть это чтение кучи данных из устройства Modbus, такое что:

readFunc(Address, numReads) 

будет начинаться с адреса и читать количество регистров numRead. В настоящее время это возвращает данные следующим образом:

A, B, C, D = readFunc(1234, 4)

Однако нам нужно выполнять 32+ чтения за раз для некоторых наших функций, и я действительно не хочу, чтобы в моем коде каждый раз указывались reply1, reply2 ... раз я сделаю это. В идеале я хотел бы сделать что-то вроде:

array_of_awesome_data = {}
array_of_awesome_data = readFunc(1234, 32)

где array_of_awesome_data [1] будет соответствовать A в том виде, как мы это делаем сейчас. В текущем коде C, который мне был дан, все данные возвращаются в цикле:

lua_pushinteger(L, retData);

Как мне настроить библиотеку lua, реализованную на C, чтобы функция lua могла возвращать массив?

Примечание: цикл из нескольких reads слишком неэффективен на нашем устройстве, поэтому нам нужно выполнить 1 большое чтение. Я не знаю достаточно подробностей, чтобы объяснить почему, но мне сказали именно это.

6
задан Sambardo 11 August 2011 в 19:53
поделиться