Göra en hemlig IR-kamera säkerhet raspberry pi enhet (10 / 22 steg)
Steg 10: Extended Ping - Pong
Skriptet har typiska ping-pong-funktion redan installerat, det betyder om du skickar ping till den klient som körs på manuset, det kommer att skicka dig en pong tillbaka. Du kan göra detta i timmar... :-)
Om du vill ha en reaktion på olika ord måste du lägga till vissa if-satser.
Med några få ord mer kan detta bli ganska förvirrande. Och du kan inte kombinera ord eller kommandon. Kommandot måste vara skicka som programmeras. Om du vill skicka "Ping" istället för "ping" ingenting skulle hända, eftersom detta inte är samma ord och meddelandetexten jämförs med == till strängen "ping".
En annan möjlighet att hitta kommandot-ord i meddelandet är att göra detta:
functionsnamen = {"hjälp", "tid", "klocka", "pid", "temp", "ping",
"start", "stop", "upptid"}
functionen = {sendhelp, sendtime, sendtime, sendpid, sendtemperature, sendping,
startsecuritycam, stopsecuritycam, senduptime}
funktion checkforcommand (TOID, FROMID)
för jag göra namn i pairs(functionsnamen)
--Skriv ut (jag.. " ".. namn)
om (string.find(string.lower(commandstringarray[1]), namn)) sedan
--Skriv ut ("kommando:".. namn..."hittade.")
functionen [i] (TOID, FROMID, commandstringarray)
returnera
slutet
slutet
slutet
--i lua innebär kommentar. För de två raderna ovan du kan ta bort kommentarer och se vad som händer inuti funktionen.
Checkforcommand kallas från inom on_msg_receive med detta:
om (msg.to.id == our_id) sedan
checkforcommand (msg.from.print_name, msg.from.id)
slutet
Det finns två matriser, en för kommandot som skickar kallas "functionsnamen" och den andra för funktioner i lua-skript som kallas om ett kommando är hittade.
Med string.lower() vi konvertera commandstringarray [1] till gemener och jämföra det med functionsnamen. Detta sätt spelar det ingen roll om vi skriver "Ping" eller "pINg" eller "PiNG" eller något sånt.
Du kanske har märkt att det är commandstringarray. Detta har följande funktion: efter receiveing ett meddelande, den färdiga texten analyseras i denna array. Detta sätt jag kan kolla om det första ordet i meddelandet var "ping" och andra var något annat och så vidare. Commandstringarray är en vektor av strängar. Lua är ganska lätt med variabel-typer och array-typer.
För att få ut budskapet i denna matris skrev jag denna funktion, som kallas uppenbarligen före checkforcommand:
commandstringarray = {}
funktion messagetextinstringarray(msg)
commandstringarray = {}
leerzeichen = 1
count = 1
completestring = msg.text
--Skriv ut ("checkfunction kallas: msg.text ist:". .completestring)
leerzeichen = (string.find (completestring, "%s"))
medan leerzeichen ~ = noll vill
commandstringarray [antal] = string.sub (completestring, 1, leerzeichen)
--Skriv ut ("ett utrymme finns. Partstring: "..commandstringarray[count])
completestring = string.sub (completestring, leerzeichen + 1)
antal = antal + 1
leerzeichen = (string.find (completestring, "%s"))
slutet
commandstringarray [antal] = completestring
slutet
slingan är ute efter ett mellanslag "" separera två ord och skriver partstrings till efterföljande index i matrisen.