添加字符以在文件上写入时出现Lua错误

时间:2016-11-21 14:24:27

标签: lua esp8266 nodemcu

我有一个带有nodemcu固件的ESP8266模块,必须使用lua进行编程。 我写了一些代码来保存从文件中的html页面输入的用户名/密码凭据。

这是lua函数,它工作正常

   function parse_wifi_credentials(vars)
    if vars == nil or vars == "" then
        return false
    end

  local _, _, wifi_ssid = string.find(vars, "wifi_ssid\=([^&]+)")
  local _, _, wifi_password = string.find(vars, "wifi_password\=([^&]+)")

    if wifi_ssid == nil or wifi_ssid == "" or wifi_password == nil then
        return false
    end

    pwd_len = string.len(wifi_password)
    if pwd_len ~= 0 and (pwd_len < 8 or pwd_len > 64) then
        return false
    end

   file.open("credentials.txt", "a")
   file.write(wifi_ssid)
   file.write(wifi_password)
   file.flush()
   file.close()

    return true
end

一切正常,但我的输出文件类似于

usernamepasswordotherusernameotherpassword

所以我将值插入到单独的字段中,如

 file.write(wifi_ssid)
 file.write(":")
 file.write(wifi_password)

以及许多其他方式,但我的代码在我的ESP8266上无效,因为我收到not enough memory错误但如果我不打印:我有10 kb免费的东西。

我也试过了file.write(wifi_ssid, "\n")但它有效,但输出没有改变。

Annyone知道如何插入字符beetwen字段?

1 个答案:

答案 0 :(得分:0)

您需要使用

file.writeline(wifi_ssid)

在文件行使用行尾char。

要确定文件是否因垃圾内容而导致内存不足问题,您可以先将其删除并重新写入凭据。

还可以在file.writeln或flush操作之后使用 collectgarbage()方法。