PyPrintPi på en Raspberry Pi (20 / 23 steg)
Steg 20: Skapa ett sista bibliotek
I nästa svarar några steg vi ska skapa ett användargränssnitt där Pi skriver ut instruktioner och användaren med hjälp av knapparna.
För att göra så vi behöver att expandera gauss_pi_lib biblioteket vi skapade tidigare. Det nya biblioteket kallas PiPrintLib. Här är det:
från decimal import *
importera os
def gauss_pi_method(decimals):
getcontext () .prec = decimaler + 10 #sets precision med 10 fler decimaler än bad om.
PI = 4*(12*arctan(18) + 8*arctan(57) - 5*arctan(239))
getcontext () .prec = decimaler #this kodblock rundor pi antal decimaler som bad om
PI = + pi
f = öppna ('pi.txt', 'w') #this block sparar våra värdet på pi till pi.txt
f.write(Str(PI))
f.Close()
returnera
def arctan(x):
en = 10 ** getcontext () .prec
xSquaredPlusOne = (x * x) + 1
fract = (x * en) / / xSquaredPlusOne
Total = fract
numurator_num = 2
medan 1:
nämnaren = (numurator_num + 1) * xSquaredPlusOne
fract * = numurator_num
fract = fract / / nämnare
om fract == 0:
Break
totala += fract
numurator_num += 2
återgå Decimal(Decimal(total)/Decimal(one))
def printer_print(string): #this funktion sparar en sträng till en textfil och sedan använder en python 2-program att skriva ut den
f = öppna ('passtopython2.txt', 'w') #this block sparar våra värdet på pi till pi.txt
f.write(string)
f.Close()
OS.system ("python printfrom3.py")
returnera
def pi_cheat(decimals): #this funktion används för att ändra pi.txt till ett värde av pi korrekt att antalet platser bad om utan att behöva beräkna pi
f = öppna ('pi_cheat.txt', 'r') #This block öppnar pi.txt och sparar innehållet som en sträng
pi_cheat = f.read()
f.Close()
om decimaler > len(pi_cheat):
p = öppna ('pi.txt', 'w') #this block sparar våra värdet på pi till pi.txt
p.write(Str(pi_cheat))
p.Close()
annat:
p = öppna ('pi.txt', 'w') #this block sparar våra värdet på pi till pi.txt
p.write (str (pi_cheat [: decimaler]))
p.Close()
returnera
def printpi():
OS.system ("sudo python printpi.py")
Du kan visa programmet från din Raspberry Pi genom att skriva:
Nano PiPrintLib.py
att stänga nano tryck kontroll x.
Detta bibliotek är samma som det tidigare biblioteket utom den innehåller tre ytterligare funktioner: printer_print(), pi_cheat() och printpi().
printer_print() används för att skriva ut en sträng på skrivaren från Python 3. För att göra detta först sparas strängen i text dokument passtopython2.txt, det sedan samtal en Python 2 program som heter printfrom3.py som öppnas i texten och skriver ut den och sedan tas den bort.
Printfrom3.py programmet ser ut:
#! / usr/bin/python
från Adafruit_Thermal import * #imports Adafruits_library
importera os
f = öppna ('passtopython2.txt', 'r') #This block öppnar passtopython2.txt och sparar innehållet som en sträng
sträng = f.read()
f.Close()
skrivaren = Adafruit_Thermal ("/ dev/ttyAMA0", 19200, timeout = 5) #creates Skrivarobjektet
Printer.println(Str(string))
OS.system ("rm passtopython2.txt")
Du kan se den från din Raspberry Pi genom att skriva:
Nano printfrom3.py
Nästa funktion i biblioteket är pi_cheat(), den här funktionen tar argument decimaler och kopierar det antalet tecken från pi_cheat.txt till pi.txt. Detta innebär att du kan skriva ut π till ett visst antal decimaler utan att behöva beräkna det (pi_cheat.txt gjordes med gauss_pi_lib_test.py så det inte är ett komplett fusk).
Den senaste funktionen, printpi(), helt enkelt kör Python 2 program printpi.py som vi skapade i föregående steg.