Stap 11: De Sinatra toepassing
Laat de bijgevoegde Sinatra app ontleden:Deze krijgen is de vereiste libraries te doen Sinatra en Serial
vereisen 'serialport'
vereisen 'sinatra'
Dit is waar u het nummer van de seriële poort en snelheid configureren
arduinoSerialPort = 'COM22'
arduinoSerialPortSpeed = 9600
Dit maakt de seriële poort-object. Het is niet echt belangrijk om te begrijpen wat dit betekent, als je niet een programmeur, maar omdat we gemaakt sp gelijk is aan de SerialPort.new dan sp.write is hoe wij zal output spullen op de seriële poort
SP = SerialPort.new (arduinoSerialPort, arduinoSerialPortSpeed, 8, 1, SerialPort::NONE)
Normaal gesproken in Sinatra zou u moeten een afzonderlijk bestand in een aparte map met de sjabloon van uw pagina. Ik wilde dit app hebben allemaal in hetzelfde bestand, dus ik een echt eenvoudig sjabloon hieronder maakte. In de "routes" (de pagina's in de URL) vervangen ik woord door het lichaam onder de HTML-code voor die pagina die ik wilt weergeven.
htmlCode = "< html >< hoofd >< / head >< lichaam > lichaam < / body >< / html >"
Hier is de eerste route. krijg gewoon betekent dat het een get-verzoek, oftewel het type aanvraag dat gebeurt wanneer u in een URL typt of klik op een link. De '/' betekent van de homepage in feite (dus als ik typ in http://servername/ dan krijg ik deze code). Alles tussen de "do" en het "einde" wordt uitgevoerd als onderdeel van deze pagina. Hier is alles wat ik doen hebben een variabele lichaam en ik toewijzen een bos van HTML voor links naar andere pagina's. Er zijn drie links hieronder een /shootstuff, een /lightallleds en één voor /coinsound. Het laatste wat dat ik doe is het lichaam in htmlCode (van boven) te vervangen met de HTML-code die ik heb gedefinieerd hier. Wat het laatste ding in de weg te krijgen is geretourneerd en weergegeven als de pagina.
krijgt ' /' doet
lichaam = "< een href = \" / shootstuff\ "> schieten spul < /a >< br / >"
Body += "< een href = \" / lightallleds\ "> alle LEDs licht < /a >< br / >"
Body += "< een href = \" / coinsound\ "> Mario munt geluid < /a >< br / >"
htmlCode.gsub ("BODY", lichaam)
einde
Hier is een andere route, dit is wat je krijgt als je http://servername/shootstuff. Het eerste ding dat het doet is een "1" over seriële sturen naar mijn munt-box. Het heeft dan gewoon een link om terug te gaan naar de laatste pagina.
krijgen ' / shootstuff' doen
SP.Write "1"
lichaam = "< b > spullen moet schieten < /b >< /br >"
Body += "< een href = \" / \ "> Terug naar acties < /a >< br / >"
htmlCode.gsub ("BODY", lichaam)
einde
Vergelijkbaar met de bovenstaande route, deze branden wanneer iemand naar http://servername/lightallleds gaat. Het verzendt een 2 via seriële en geef een link terug naar de indexpagina
krijgen ' / lightallleds doen
SP.Write "2"
lichaam = "< b > Alle LED's moeten Lit < /b >< /br >"
Body += "< een href = \" / \ "> Terug naar acties < /a >< br / >"
htmlCode.gsub ("BODY", lichaam)
einde
Deze route is vergelijkbaar met de bovenstaande twee. Deze gebeurtenis wordt gestart wanneer iemand http://servername/coinsound raakt, een "3" over serieel schrijft en een link terug naar de indexpagina heeft
krijgen ' / coinsound' doen
SP.Write "3"
lichaam = "< b > munt geluid moet hebben geklonken < /b >< /br >"
Body += "< een href = \" / \ "> Terug naar acties < /a >< br / >"
htmlCode.gsub ("BODY", lichaam)
einde