Fråga Box pussel (11 / 20 steg)
Steg 11: Sinatra ansökan
Låt oss dissekera den bifogade Sinatra app:Detta få är de nödvändiga bibliotek att göra Sinatra och följetong
kräver "serialport"
kräver "sinatra"
Det är där du kan konfigurera seriellt portnummer och hastighet
arduinoSerialPort = "COM22"
arduinoSerialPortSpeed = 9600
Detta skapar objektet seriell port. Det är inte jätteviktigt att förstå vad det innebär om inte du är en programmerare, men eftersom vi gjorde sp lika med SerialPort.new då sp.write är hur vi ska mata grejer till den seriella porten
SP = SerialPort.new (arduinoSerialPort, arduinoSerialPortSpeed, 8, 1, SerialPort::NONE)
Normalt i Sinatra skulle du ha en separat fil i en separat katalog med mallen på din sida. Jag ville ha denna app allt i samma fil, så jag gjorde en riktigt enkel mall nedan. I "linjer" (sidorna i URL) ersätta jag det kroppen nedanför med HTML-koden för den sidan jag vill visa.
htmlCode = "< html >< huvud >< / capita >< kropp > BODY < / body >< / html >"
Här är den första rutten. får bara betyder att det är en get-begäran, som är typ av begäran som händer när du skriver i en URL eller klickar på en länk. Den '/' betyder hemsidan i princip (så om jag skriver i http://servername/ då jag ska få till denna kod). Allt mellan "do" och "slutet" körs som en del av denna sida. Här är allt jag gör har en kropp och jag tilldela den en massa HTML för länkar till andra sidor. Det finns tre länkar nedan en /shootstuff, en till /lightallleds och en för /coinsound. Det sista jag gör är ersätta kroppen i htmlCode (från ovan) med HTML jag definieras här. Vad är det sista som i den väg få återvände och återges som sidan.
få ' /' göra
Body = "< en href = \" / shootstuff\ "> skjuta saker < /a >< br / >"
Body += "< en href = \" / lightallleds\ "> ljus alla lysdioder < /a >< br / >"
Body += "< en href = \" / coinsound\ "> Mario mynt ljud < /a >< br / >"
htmlCode.gsub ("BODY", kroppen)
slutet
Här är en annan väg, här är vad du får om du träffar http://servername/shootstuff. Det första den gör är sända "1" över följetong till min mynt låda. Sedan har det bara en länk till gå tillbaka till sista sidan.
få ' / shootstuff' göra
SP.Write "1"
Body = "< b > saker bör skjuta < /b >< /br >"
Body += "< en href = \" / \ "> tillbaka till åtgärder < /a >< br / >"
htmlCode.gsub ("BODY", kroppen)
slutet
Liknar rutten ovan, här en bränder när någon går till http://servername/lightallleds. Det skickar en 2 över seriell och ge en länk tillbaka till indexsidan
få ' / lightallleds' göra
SP.Write "2"
Body = "< b > alla lysdioder bör vara tänt < /b >< /br >"
Body += "< en href = \" / \ "> tillbaka till åtgärder < /a >< br / >"
htmlCode.gsub ("BODY", kroppen)
slutet
Denna väg är liknande till två ovanstående. Det bränder när någon träffar http://servername/coinsound, skriver en "3" över följetong och har en länk till indexsidan
få ' / coinsound' göra
SP.Write "3"
Body = "< b > mynt ljud bör ha lät < /b >< /br >"
Body += "< en href = \" / \ "> tillbaka till åtgärder < /a >< br / >"
htmlCode.gsub ("BODY", kroppen)
slutet