Чтение текстового файла, расположенного на компьютере с NodeMCU, используя Lua

Моя проблема связана с чтением текстового файла (который находится на моем компьютере) в комплекте для разработки NodeMCU. Я могу прочитать содержимое файла в терминале Ubuntu, используя скрипт Lua. Здесь я делюсь кодом, который я использовал для чтения. Оба работают довольно хорошо в терминале Ubuntu.

Первый:

local open = io.open
local function read_file(path)
local file = open(path, "rb") -- r read mode and b binary mode
if not file then return nil end
local content = file:read "*a" -- *a or *all reads the whole file
file:close()
return content

Второй:

local fileContent = read_file("output.txt");
print (fileContent);

function file_exists(file)
  local f = io.open(file, "rb")
  if f then f:close() end
  return f ~= nil
end

-- get all lines from a file, returns an empty 
-- list/table if the file does not exist
function lines_from(file)
  if not file_exists(file) then return {} end
  lines = {}
  for line in io.lines(file) do 
    lines[#lines + 1] = line
  end
  return lines
end

-- tests the functions above
local file = 'output.txt'
local lines = lines_from(file)

-- print all line numbers and their contents
for k,v in pairs(lines) do
  print('line[' .. k .. ']', v)
end

Моя проблема возникает, когда я отправляю код в NodeMCU, используя Esplorer для отправки кода. Но ошибка происходит так:

attempt to index global 'io' (a nil value)
stack traceback:
    applicationhuff.lua:5: in function 'file_exists'
    applicationhuff.lua:13: in function 'lines_from'
    applicationhuff.lua:23: in main chunk
    [C]: in function 'dofile'
    stdin:1: in main chunk

Моя основная цель - прочитать эти данные и опубликовать их в Mosquitto Broker по протоколу MQTT. Я новичок в этих темах. Если кто-то может справиться с моей проблемой, это будет оценено. Спасибо за вашу помощь...

1 ответ

введите описание изображения здесь

введите описание изображения здесь

NodeMCU не имеет io библиотека. Поэтому вы получаете ошибку для индексации io, который является нулевым значением.

Без обид, но иногда мне интересно, как вам, ребята, действительно удается найти свой путь в Stackru и даже написать некоторый код, не зная, как проводить базовые веб-исследования.

https://nodemcu.readthedocs.io/en/master/en/lua-developer-faq/

Прошивка заменила некоторые стандартные модули Lua, которые не соответствуют структуре SDK версиями, специфичными для ESP8266. Например, стандартные библиотеки io и os не работают, но в значительной степени были заменены узлами NodeMCU и библиотеками файлов.

https://nodemcu.readthedocs.io/en/master/en/modules/file/

Файловый модуль обеспечивает доступ к файловой системе и ее отдельным файлам.

Надеюсь, хватит помощи...

Другие вопросы по тегам