Oscilloskop brukes til å måle intervaller av ulike typer bølger og elektriske signaler . Deres opplesninger bidra til å gi forskere innenfor innsikt i frekvens og styrke av bølger som sendes ut fra elektrisk utstyr og andre kilder. For maskinvaren i et oscilloskop til å arbeide , må den være koblet til et program som tolker målingene og viser dem i en graf. Instruksjoner
en
Åpne en kode redigering program eller bruke et tekstbehandlingsprogram som TextEdit i Mac OS X eller Notisblokk i Microsoft Windows. Opprett et nytt dokument for å huse manuset av Python oscilloskop .
2
Definer parameterne som skal brukes i skriptet , samt de to Python biblioteker som trengs for manuset ved hjelp av følgende kode : en
import os , sysimport Imageimport serialimport pygameimport tid
fra pyBusPirateLite.UART import * fra pyBusPirateLite.BitBang import *
3
Definer datahastighet og bruke print -funksjonen for å gjøre det mulig å fremstille innganger gjort av oscilloskop :
DATA_RATE = 5720,0 # tiltak /sekund ( anslått experimenticaly ) DEFAULT_TIME_SCALE = RES_X /DATA_RATE # default tid i sekunder for å gjøre ett vindu fillpygame . init ( ) bp = UART ( BUS_PIRATE_DEV , 115200 ) print "Taste binmode : " hvis bp.BBmode ( ) : print " OK . " else: print " . feilet" sys.exit ( )
4
Definer parametrene for programvinduet ved å bruke pygame.display funksjon : en
vindu = pygame.display.set_mode ( ( RES_X , RES_Y ) ) bakgrunn = (0,0 , 0 ) linje = ( 0,255,0 ) trig_color = ( 100,100,0 )
5
Lag manus til oscilloskop seg selv ved å definere parameterne som vil bli skrevet på grafen og gi argumenter for x-og y - akse:
bp.port.write ( "\\ x15 ") mens en : plot = {} spenning = { } maxv = 0minv = 100time_scale = DEFAULT_TIME_SCALE * time_divprev_voltage = 0measure = 0 ; hvis ( trig_mode = NO_SYNC ! ) : for k in range ( 1,2000 ) : prev_voltage = voltagemeasure = bp.response ( 2 , sann) spenning = ord (mål [ 0 ] ) << 8voltage = spenning + ord ( mål [ ,"1 ] ) spenning = ( voltage/1024.0 ) * 6.6 # stigende slopeif ( (spenning > = trigger_level ) og ( prev_voltage < (spenning * TRIG_CAL ) ) og ( trig_mode == RISING_SLOPE ) ) : BREAKHvis ( (spenning < trigger_level ) og (spenning > 0.01 ) og ( prev_voltage > spenning /TRIG_CAL ) og ( trig_mode == FALLING_SLOPE ) ) : breakfor jeg er innen rekkevidde ( RES_X ) : for k in range ( time_div - 1 ): # ignorerer ( time_div - en ) prøver å oppnå riktig tid resolutionbp.response ( 2 , sann) mål = bp.response ( 2 , sann) spenning = ord (mål [ 0 ] ) << 8voltage = spenning + ord (mål [ 1 ] ) spenning = ( voltage/1024.0 ) * 6.6plot [ i] = voltagefor jeg er innen rekkevidde ( 1 , RES_X ) : Hvis tomten [ i] > maxv : maxv = tomten [i ] hvis tomten [ i] < minv : minv = tomten [ ,"i] y = ( RES_Y ) - plot [ i] * ( RES_Y /MAX_VOLTAGE ) - OFFSETx = ipx = i- en ; py = ( RES_Y ) - plot [i - 1 ] * ( RES_Y /MAX_VOLTAGE ) - OFFSETpygame.draw . linje ( vindu , linje , ( px, py ) , ( x , y ) ) trig_y = RES_Y - trigger_level * ( RES_Y /MAX_VOLTAGE ) pygame.draw.line ( vindu , trig_color , ( 0 , trig_y ) , ( RES_X , trig_y ) )
6
Sluttføre oscilloskop ved å definere parametrene for oscilloskop grafiske brukergrensesnitt : en
# # GUI ) font = pygame.font.Font (Ingen, 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 ( " tidsskala :% 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 )