oscilloscopen worden gebruikt om de intervallen van verschillende soorten golven en elektrische signalen te meten maken . De metingen helpen onderzoekers in inzicht in de frequentie en sterkte van golven uitgezonden door elektrische apparaten en andere bronnen . Voor de hardware een oscilloscoop te werken , moet worden aangesloten op een softwareprogramma dat de waarden geïnterpreteerd en weergegeven in een grafiek . Instructies 1 Open een code editing applicatie of gebruik een tekstbewerking toepassing , bijvoorbeeld TextEdit in Mac OS X of Kladblok in Microsoft Windows . Maak een nieuw document aan het script van de Python oscilloscoop huisvesten . Kopen van 2 Definieer de parameters die gebruikt zullen worden in het script , evenals de twee Python bibliotheken nodig voor het script met de volgende code : import os , sysimport Imageimport serialimport pygameimport tijd van pyBusPirateLite.UART import * van pyBusPirateLite.BitBang import * 3 Definieer de datasnelheid en gebruik de printfunctie om het programma in staat te stellen de grafiek van de ingangen die door de oscilloscoop : DATA_RATE = 5720,0 # maatregelen /seconde ( geschat experimenticaly ) DEFAULT_TIME_SCALE = RES_X /DATA_RATE # default tijd in seconden tot een venster fillpygame maken . init ( ) bp = UART ( BUS_PIRATE_DEV , 115200 ) afdrukt " invoeren binmode : " als bp.BBmode ( ) : print " OK . " else : print " . mislukt" sys.exit ( ) < br > Goedkope 4 Definieer de parameters voor het programmavenster met de pygame.display functie : venster = pygame.display.set_mode ( ( RES_X , RES_Y ) ) achtergrond = ( 0,0 , 0 ) lijn = ( 0,255,0 ) trig_color = ( 100,100,0 ) 5 Maak het script voor de oscilloscoop zelf door het definiëren van de parameters die zullen worden geschreven op de grafiek en het verstrekken van argumenten voor de x -en y-as : bp.port.write ( " \\ x15 " ) , terwijl 1 : perceel = { } spanning = { } MaxV = 0minv = 100time_scale = DEFAULT_TIME_SCALE * time_divprev_voltage = 0measure = 0 ; indien ( trig_mode = NO_SYNC ! ) : voor k in range ( 1,2000 ) : prev_voltage = voltagemeasure = bp.response ( 2 , True ) spanning = ord ( maatregel [ 0 ] ) << 8voltage = spanning + ord ( maatregel [ ,"1 ] ) spanning = ( voltage/1024.0 ) * 6.6 # stijgende slopeif ( ( spanning > = trigger_level ) en ( prev_voltage < ( spanning * TRIG_CAL ) ) en ( trig_mode == RISING_SLOPE ) ) : BREAKAls ( ( spanning < trigger_level ) en ( spanning > 0.01 ) en ( prev_voltage > spanning /TRIG_CAL ) en ( trig_mode == FALLING_SLOPE ) ) : breakfor i in range ( RES_X ) : voor k in range ( time_div - 1 ) : # negeren ( time_div - 1 ) monsters om een goede tijd resolutionbp.response bereiken ( 2 , True ) maatregel = bp.response ( 2 , True ) spanning = ord ( maatregel [ 0 ] ) << 8voltage = spanning + ord ( maatregel [ 1 ] ) spanning = ( voltage/1024.0 ) * 6.6plot [ i ] = voltagefor i in range ( 1 , RES_X ) : als perceel [ i ] > MaxV : MaxV = perceel [ i ] als perceel [ i ] < minv : minv = perceel [ ,"i ] y = ( RES_Y ) - perceel [ i ] * ( RES_Y /MAX_VOLTAGE ) - offsetX = ipx = i - 1 ; py = ( RES_Y ) - perceel [ i - 1 ] * ( RES_Y /MAX_VOLTAGE ) - OFFSETpygame.draw . lijn ( venster , lijn , ( px , py ) , ( x , y ) ) trig_y = RES_Y - trigger_level * ( RES_Y /MAX_VOLTAGE ) pygame.draw.line ( venster , trig_color , ( 0 , trig_y ) , ( RES_X , trig_y ) ) 6 Voltooi de oscilloscoop door het definiëren van de parameters voor de oscilloscoop grafische gebruikersinterface : # # GUI ) font = pygame.font.Font ( Geen, 19 ) text_max_voltage = lettertype . 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 ( " Timing : % 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 ) op Twitter
|