我有一个带有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错误,但是如果我不打印:,我就有大约10kb的空闲空间。
我也尝试过file.write(wifi_ssid, "\n"),它可以工作,但输出没有改变。
Annyone知道我应该怎么做才能在字段中插入字符?
发布于 2016-11-22 00:58:07
您需要使用
file.writeline(wifi_ssid)在文件行使用行尾字符。
要确定文件打开是否由于其垃圾内容而导致内存问题,您可以先删除它,然后重写凭据。
此外,在file.writeln或flush操作之后使用collectgarbage()方法也是很好的。
https://stackoverflow.com/questions/40722435
复制相似问题