Smarta ord block (3 / 6 steg)
Steg 3: kod
Om du följt alla steg ovan, bör du nu ha en kopia av koden och alla dess beroenden på datorn. Så tar vi en minut här berätta vad den faktiskt gör.Det har en funktion kallas parse_book som tar en textfil, öppnar den och tolkar det genom att skapa en enda lång sträng utan linjen bryts och anropar en funktion kallas splitParagraphIntoSentences därifrån. Denna funktion, kredit till Pythonic prosa här, bryter punkterna i meningar och fyller en lista med dem med ett reguljärt uttryck. Funktionen parse_book returnerar den listan i fråga.
Vi måste naturligtvis också Skanna tabellen för ord, vilket är vad är funktionen grab_words ansvarar för. Anslutningen till Arduino använder modulen pyserial öppnas. Vid denna punkt, vi också initiera modulen pyqrcode och nollställa räknarna. Då har vi skriptet läsa den seriell kommunikationen från Arduino som representerar värdena från fotodioden. Ett värde under 55 ger oss en ganska bra idé som ett block kan vara i vägen; en ovanför 60 innebär vanligtvis att lasern pekar direkt på dioden, i vilket fall vill vi bara vänta till visas ett block.
När så är fallet, vi kontinuerligt ta bilder från webbkameran med kommandot streamer och konvertera de resulterande jpg -bilderna till png -filer. Funktionen skickar sedan den resulterande filen till pyqrcode biblioteket som upprepas processen ovan tills det framgångsrikt avkodar ord och producerar en lista med ord.
Funktion parse_words sedan tar båda listorna och använder ett reguljärt uttryck för att matcha det första ordet i listan av block för att listan på meningar och returnerar en lista med matchande meningarna. Det fortsätter sedan att tolka nästa ord mot att listan över matchande meningar, tills den hittar en mening som innehåller alla orden i fråga (eller returnerar föregående lista på meningar). Slutligen, den skriver meningen i fråga, tillsammans med meningen före och efter-kontext.