Oscilloskoper bruges til at måle intervaller af forskellige former for bølger og elektriske signaler. Deres aflæsninger bidrage til at give forskere inden indsigt i hyppigheden og styrken af bølger, der udsendes fra elektriske enheder og andre kilder . For hardwaren i et oscilloskop til at arbejde, skal det være forbundet til et program, der fortolker aflæsninger og viser dem i grafen . Instruktioner
1
Åbn en kode redigering program eller bruge en tekst redigering program som TextEdit i Mac OS X eller Notesblok i Microsoft Windows. Opret et nyt dokument til at huse scriptet af Python oscilloskop .
2
Definer de parametre , der skal bruges i scriptet , samt de to Python biblioteker, der kræves for scriptet ved at bruge følgende kode : Hej
import OS, sysimport Imageimport serialimport pygameimport tid
fra pyBusPirateLite.UART import * fra pyBusPirateLite.BitBang import *
3
Definer data rate og bruge print funktion til at aktivere programmet til grafen indgangene foretaget af oscilloskop :
DATA_RATE = 5720,0 # foranstaltninger /sekund ( anslået experimenticaly ) DEFAULT_TIME_SCALE = RES_X /DATA_RATE # default i sekunder til at gøre et vindue fillpygame . init () bp = UART ( BUS_PIRATE_DEV , 115200 ) print " Indtastning binmode : " hvis bp.BBmode (): print " OK". ellers : print " . mislykkedes" sys.exit () < br >
4
Definer parametre for programvinduet ved at bruge pygame.display funktionen : Hej
vindue = pygame.display.set_mode ( ( RES_X , RES_Y ) ) baggrund = ( 0,0 , 0) linie = ( 0,255,0 ) trig_color = ( 100,100,0 )
5
Opret manuskriptet til oscilloskopet selv ved at definere de parametre, der vil blive skrevet på grafen og give argumenter for x og y -aksen : Hej
bp.port.write ( "\\ x15 " ), mens 1: plot = {} spænding = {} maxv = 0minv = 100time_scale = DEFAULT_TIME_SCALE * time_divprev_voltage = 0measure = 0; hvis ( trig_mode = NO_SYNC !) : for k i området ( 1,2000 ) : prev_voltage = voltagemeasure = bp.response (2, sand) spænding = ORD (foranstaltning [0] ) << 8voltage = spænding + ORD (foranstaltning [ ,"1] ) spænding = ( voltage/1024.0 ) * 6,6 # stigende slopeif ( (spænding > = trigger_level ), og ( prev_voltage < (spænding * TRIG_CAL ) ), og ( trig_mode == RISING_SLOPE ) ) : BREAKHvis ( (spænding < trigger_level ) og (spænding > 0,01 ), og ( prev_voltage > spænding /TRIG_CAL ), og ( trig_mode == FALLING_SLOPE ) ) : breakfor i i området ( RES_X ) : for k i intervallet ( time_div - 1) : # ignorerer ( time_div -1 ) prøver at opnå ordentlig tid resolutionbp.response (2, sand) mål = bp.response (2, sand) spænding = ORD (foranstaltning [0] ) << 8voltage = spænding + ORD (foranstaltning [1] ) spænding = ( voltage/1024.0 ) * 6.6plot [i] = voltagefor i i området (1, RES_X ): hvis plot [i] > maxv : maxv = plot [i ], hvis plot [i] < minv : minv = plot [ ,"i] y = ( RES_Y ) - plot [i] * ( RES_Y /MAX_VOLTAGE ) - OFFSETx = ipx = i -1 , py = ( RES_Y ) - plot [i- 1 ] * ( RES_Y /MAX_VOLTAGE ) - OFFSETpygame.draw . line ( vindue , linje (px , py ) , (x, y) ) trig_y = RES_Y - trigger_level * ( RES_Y /MAX_VOLTAGE ) pygame.draw.line ( vinduet trig_color , (0, trig_y ) ( RES_X , trig_y ) )
6
Færdiggør oscilloskop ved at definere parametrene for oscilloskopet grafiske brugerflade : Hej
# # GUI) font = pygame.font.Font (None , 19) text_max_voltage = font . render ( "Max : % f V" % maxv , 1, (255 , 255, 255) ) text_min_voltage = font.render ( " Min: % f V" % minv , 1, (255 , 255, 255) ) text_time_scale = font.render ( " Tidshorisont : % f s" % time_scale , 1, (255 , 255, 255) ) text_maxv_Rect = text_max_voltage.get_rect () text_minv_Rect = text_min_voltage.get_rect () text_time_scale_Rect = text_time_scale.get_rect () text_maxv_Rect . x = 10text_maxv_Rect.y = 10text_minv_Rect.x = 10text_minv_Rect.y = 30text_time_scale_Rect.x = 10text_time_scale_Rect.y = 50window.blit ( text_max_voltage , text_maxv_Rect ) window.blit ( text_min_voltage , text_minv_Rect ) window.blit ( text_time_scale , text_time_scale_Rect )