Oscilloskop används för att mäta intervallen av olika typer av vågor och elektriska signaler . Sina läsningar bidra till att ge forskare inom inblick i frekvens och styrka av vågor som avges från elektriska apparater och andra källor . För hårdvara i ett oscilloskop för att arbeta måste den vara ansluten till ett program som tolkar avläsningarna och visar dem i ett diagram . Instruktioner
1
Öppna en kod redigeringsprogram eller använda ett textredigeringsprogram , t.ex. Textredigerare i Mac OS X eller Anteckningar i Microsoft Windows . Skapa ett nytt dokument för att hysa manus av Python oscilloskopet .
2
Definiera parametrar som ska användas i skriptet , liksom de två Python bibliotek som behövs för skriptet genom att använda följande kod :
import os , sysimport bildimport serialimport pygameimport tid
från pyBusPirateLite.UART import * från pyBusPirateLite.BitBang import * Addera 3
Definiera datahastigheten och använd utskriftsfunktionen för att programmet till grafen ingångarna gjorts av oscilloskop :
DATA_RATE = 5720,0 # åtgärder /sekund ( uppskattat experimenticaly ) DEFAULT_TIME_SCALE = RES_X /DATA_RATE # default i sekunder för att göra ett fönster fillpygame . init ( ) BP = UART ( BUS_PIRATE_DEV , 115200 ) print " Ange binmode : " om bp.BBmode ( ) : print " OK . " annars : print " . misslyckades " sys.exit ( )
4
Definiera parametrarna för programfönstret genom att använda pygame.display funktionen :
fönster = pygame.display.set_mode ( ( RES_X , RES_Y ) ) bakgrund = ( 0,0 , 0 ) line = ( 0,255,0 ) trig_color = ( 100,100,0 )
5
Skapa manus till oscilloskopet själv genom att definiera de parametrar som ska skrivas på kurvan och ge argument för x-och y-axel:
bp.port.write ( "\\ x15 " ) medan en : plot = {} spänning = {} maxv = 0minv = 100time_scale = DEFAULT_TIME_SCALE * time_divprev_voltage = 0measure = 0 , om ( trig_mode = NO_SYNC ! ) : för ki intervallet ( 1,2000 ) : prev_voltage = voltagemeasure = bp.response ( 2 , Sant ) spänning = ORD ( åtgärd [ 0 ] ) << 8voltage = spänning + ORD ( åtgärd [ ,"1 ] ) spänning = ( voltage/1024.0 ) * 6.6 # stigande slopeif ( ( spänning > = trigger_level ) och ( prev_voltage < ( spänning * TRIG_CAL ) ) och ( trig_mode == RISING_SLOPE ) ) : breakif ( ( spänning < trigger_level ) och ( spänning > 0,01 ) och ( prev_voltage > spänning /TRIG_CAL ) och ( trig_mode == FALLING_SLOPE ) ) : breakfor i i intervallet ( RES_X ) : för ki intervallet ( time_div - 1 ) : # ignorerar ( time_div - 1 ) prov för att uppnå rätt tid resolutionbp.response ( 2 , Sant ) mått = bp.response 2 ( , sant) spänning = ORD ( åtgärd [ 0 ] ) << 8voltage = spänning + ORD ( mått [ 1 ] ) spänning = ( voltage/1024.0 ) * 6.6plot [ i] = voltagefor i i intervallet ( 1 , RES_X ) : om tomten [ i] > maxv : maxv = plot [ i] om tomten [ 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 . linjen ( fönster , fodra, (px , py ) , ( x, y) ) trig_y = RES_Y - trigger_level * ( RES_Y /MAX_VOLTAGE ) pygame.draw.line ( fönster , trig_color , 0 ( , trig_y ) , ( RES_X , trig_y ) )
6
Avsluta oscilloskopet genom att definiera parametrarna för oscilloskopet s grafiska användargränssnitt :
# # 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 ( " Tidsåtgång : % 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 ) katalog Addera ditt