2017-01-05 6 views
0

私の問題は、NodeMCU開発キットのテキストファイル(自分のコンピュータにある)を読むことです。私はLuaスクリプトを使ってUbuntu端末のファイルの内容を読むことができます。ここでは、私が読んで使用しているコードを共有しています。どちらもUbuntu端末でうまく動作しています。Luaを使ってNodeMCUでコンピュータにあるテキストファイルを読む

まず1:

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 

第二1:

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 

私の問題は、私は、コードを送信するためにEsplorerを使用して、NodeMCUにコードを送信したときに発生するが、エラーは次のように発生します。 :

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 Bに公開することですMQTTプロトコルを使用しています。私はこれらのトピックに新しいです。誰かが私の問題を処理できるなら、それは感謝されます。ご協力いただきありがとうございます...

答えて

1

enter image description here

enter image description here

NodeMCUはioライブラリを持っていません。したがって、インデックスがioの場合、エラーは発生しません。これはゼロ値です。

嫌なことはありませんが、実際にStackOverflowへのあなたのやり方を見つけ、基本的なWebリサーチを行う方法を知らずにコードを書いていることがあります。

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

ファームウェアがESP8266固有のバージョンとSDK構造とよく を整列していないいくつかの標準的なLuaのモジュールを交換しています。 の例では、標準のioおよびosライブラリは動作しませんが、 は主にNodeMCUノードおよびファイルライブラリに置き換えられています。

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

モジュールは、ファイルシステムおよびその個々の ファイルへのアクセスを提供するファイル。

私はこの答えのほとんどは(Google検索を行う方法)頼まれていなかった質問に回答され

+0

...それが十分助け願っています。その情報はおそらくコメントとしてよりよくなり、質問された質問に対する回答が容易に識別できるようになります。 さらに、「わからないことはわからない」という効果は、初心者が経験豊富な人には明らかな非効果的なGoogleクエリを使用する可能性があります。 –

+4

@KelsonB​​all私は同意しない。 10年前はウェブ検索が効果がなかったかもしれません。しかし、今日私はマイクのアイコンをクリックして、コンピュータに "nodemcuでファイルを読むにはどうすればいいですか?"そして、それは私に例を使って奇妙な答えを与えるでしょう...これはどうやって効果がありませんか?その知識を得るためにプログラマーとして多くの経験を積むこともありません。実際にはあなたはGoogleを知る必要はありません。実際に開発キットに付属のドキュメントを参照すれば十分でしょう... – Piglet

+2

@ピグレットあなたの欲求不満は完全に分かち合いますが、何らかの理由で私は続けます: -/ –

関連する問題