require("GPIO"); function StartUDPService() if UDPSocket == nil then UDPSocket = net.createUDPSocket(); UDPSocket:listen(6000); UDPSocket:on("receive", UDPService); UDPPort, UDPIP = UDPSocket:getaddr(); else UDPSocket:listen(6000); UDPSocket:on("receive", UDPService); UDPPort, UDPIP = UDPSocket:getaddr(); end --print(string.format("local UDP socket address / port: %s:%d", UDPIP, UDPPort)) end function UDPService(s, data, port, ip) local commandSet = {}; for word in string.gmatch(data, "[^-]+") do table.insert(commandSet,word); end print("get data count" .. #commandSet); if string.match(data,"^Go") then if #commandSet==2 then print(tonumber(commandSet[2])) Is_AutoClose = false; GPIOOn(0); GPIOOn(1); GPIOOn(2); s:send(port, ip, "1-1-1"); end end if string.match(data,"^Back") then if #commandSet==2 then print(tonumber(commandSet[2])) Is_AutoClose = false; GPIOOn(0); GPIOOff(1); GPIOOn(2); s:send(port, ip, "1-0-1"); end end if string.match(data,"^Stop") then Is_AutoClose = false; GPIOOff(0); GPIOOn(1); GPIOOff(2); s:send(port, ip, "0-1-0"); end if string.match(data,"^Ready") then Is_AutoClose = false; GPIOOff(0); GPIOOn(1); GPIOOff(2); s:send(port, ip, "0-1-1"); end if string.match(data,"^Status") then local result = ""; if LightArr[0] == true then result = "1-" else result = "0-" end if LightArr[1] == true then result = result .. "1-" else result = result .. "0-" end if LightArr[2] == true then result = result .. "1" else result = result .. "0" end s:send(port, ip, result); end if string.match(data,"^Addr") then s:send(port, ip, "Addr-"..IpCfg.ip); end end function StopUDPService() if UDPSocket ~= nil then UDPSocket:close(); end end --StartUDPService();