我在nodemcu repo中使用这个例子:
ng-model="object.property"
但是,由于我使用的是uart模块,我无法通过LuaLoader与我的芯片通信,无法上传更新的$scope.object = {};
$scope.addRoom = function () {
$http.post("add_library_room.php", {'roomName': $scope.object.roomName, 'maxPax': $scope.object.maxPerson})
.then(function (response) {
$scope.msg = "Room is inserted into database.";
});
};
文件。相反,我必须将芯片置于闪存上传模式,然后刷新初始nodemcu固件,然后更新我的uart.setup(0,9600,8,0,1,0)
sv=net.createServer(net.TCP, 60)
global_c = nil
sv:listen(9999, function(c)
if global_c~=nil then
global_c:close()
end
global_c=c
c:on("receive",function(sck,pl) uart.write(0,pl) end)
end)
uart.on("data",4, function(data)
if global_c~=nil then
global_c:send(data)
end
end, 0)
。太多的步骤。
如何保留通过LuaLoader进行通信的能力?我尝试过这样的事情:
init.lua
它在另一个串行终端中打印init.lua
和uart.on('data', '\n', handleUartResponse, 0)
...
...
function handleUartResponse(response)
if response == 'flash\n' then
g_flash = true
toggleOutput(true)
uart.write(0, 'flash mode')
elseif response == 'endflash\n' then
g_flash = false
uart.write(0, 'normal mode')
toggleOutput(false)
elseif g_flash then
node.input(response)
else
if g_conn ~= nil then
g_conn:send(response, function(sock)
closeConnection(sock)
g_conn = nil
end)
end
end
end
function toggleOutput(turnOn)
if turnOn then
node.output(nil, 1)
else
node.output(silent, 0)
end
end
,但它在LuaLoader中不起作用。我认为问题出在uart设置中,也许它不应该是flash mode
,而是其他条件,我不知道是什么。
答案 0 :(得分:0)
知道了!不确定它是否是最佳选择,因为我是lua的新手,但它确实有用。
function handleNormalMode(response)
if response == 'flash\r' then -- magic code to enter interpreter mode
toggleFlash(true)
else -- tcp-to-uart
if g_conn ~= nil then
g_conn:send(response, function(sock)
closeConnection(sock)
g_conn = nil
end)
end
end
end
function ignore(x)
end
function uartSetup(echo)
uart.setup(0, 115200, 8, 0, 1, echo)
end
function toggleFlash(turnOn)
if turnOn then
uart.on('data') -- unregister old callback
uartSetup(1) -- re-configure uart
uart.on('data', 0, ignore, 1) -- this allows lua interpreter to work
node.output(nil) -- turn on lua output to uart
uart.write(0, 'flash mode') -- notify user
else
node.output(ignore, 0) -- turn off lua output to uart
uart.on('data') -- unregister old callback
uartSetup(0) -- re-configure uart
uart.on('data', '\r', handleNormalMode, 0) -- turn on tcp-to-uart
uart.write(0, 'normal mode') -- notify user
end
end
我在脚本开头调用toggleFlash(false)
。然后,输入flash\r
进入lua解释器模式并切换回我只需键入toggleFlash(false)
即可正常工作!这简化了每次更新init.lua
。