Чтение текстового файла, расположенного на компьютере с 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/
Файловый модуль обеспечивает доступ к файловой системе и ее отдельным файлам.
Надеюсь, хватит помощи...