function inter_parse(line) print("inter_parse: line="..line) line = string.sub(line, 1, string.find(line, "\r")) local cmd = nil; local i = string.find(line, ":") if i == nil then print("inter_parse: invalid line: no command, line="..line) return end local cmd = string.sub(line, 1, i - 1) print("inter_parse: cmd="..cmd) local args = {} last = i+1 while i ~= nil do local key local value i = string.find(line, " ", last) arg = string.sub(line, last, i) print("inter_parse: arg: "..arg) j = string.find(arg, "=") if j == nil then key = arg args[key] = true print("inter_parse: key="..key.."=true") else key = string.sub(arg, 1, j-1) value = string.sub(arg, j+1) print("inter_parse: key="..key..", value="..value) end if i == nil then break end last = i + 1 end return cmd, args end local cb -- require('inter'); inter_init(); -- cmd:abc=123 xyz=qwe woot function inter_on_line(line) print("line:"..line) local cmd, args = inter_parse(line) if cmd == nil then return end -- print("cmd="..cmd) -- for k, v in pairs(args) do -- print(k.."="..tostring(v)) -- end if cb then cb(cmd, args) end end function inter_init(callback) -- uart.setup(id, baud, databits, parity, stopbits, echo) -- uart.setup(0, 115200, 8, 0, 1, 0) -- uart.setup(0, 9600, 8, 0, 1, 0) cb = callback tmr.alarm(0, 1000, 0, function() print("still alive!"); end) uart.on("data", "\r", inter_on_line, 0) print("inter ready: callback.."..tostring(cb)) end