osciloscopios se utilizan para medir los intervalos de los diferentes tipos de ondas y señales eléctricas. Sus lecturas ayudan a proporcionar los investigadores dentro de penetración en la frecuencia y la fuerza de las ondas emitidas por los dispositivos eléctricos y otras fuentes . Para el hardware en un osciloscopio a trabajar , que debe ser conectado a un programa de software que interpreta las lecturas y los muestra en una gráfica . Instrucciones
1
Abra una aplicación de edición de código o usar una aplicación de edición de texto como TextEdit en Mac OS X o el Bloc de notas de Microsoft Windows. Crear un documento nuevo a la casa de la secuencia de comandos del osciloscopio Python.
2
Definir los parámetros que se utilizarán en el guión , así como las dos bibliotecas de Python necesarios para la secuencia de comandos con el siguiente código :
import os , sysimport Imageimport serialimport pygameimport tiempo
de pyBusPirateLite.UART importación * de pyBusPirateLite.BitBang import *
3
Define la velocidad de datos y utilizar la función de impresión para que el programa para graficar las entradas realizadas por el osciloscopio :
DATA_RATE = 5720,0 # medidas /segundo ( experimenticaly estimado) DEFAULT_TIME_SCALE = RES_X /DATA_RATE # tiempo predeterminado en segundos para hacer una ventana fillpygame . init () pb = UART ( BUS_PIRATE_DEV , 115200 ) print " Entrando binmode : " si bp.BBmode ( ): print "OK . " else : print " . failed" sys.exit ()
4
Definir los parámetros de la ventana de la aplicación mediante la función pygame.display :
ventana
pygame.display.set_mode = ( ( RES_X , RES_Y ) ) background = (0,0 , 0 ) line = ( 0,255,0 ) trig_color = ( 100,100,0 )
5
Crear la secuencia de comandos para el propio osciloscopio mediante la definición de los parámetros que se escribirán en el gráfico y proporcionar argumentos a favor de la x y el eje y :
bp.port.write ("\\ x15 " ), mientras que 1 : parcela = { } { } = tensión MaxV = 0minv = 100time_scale = DEFAULT_TIME_SCALE * time_divprev_voltage = 0measure = 0 , si ( trig_mode = NO_SYNC !) : para k en el rango ( 1,2000 ) : prev_voltage = voltagemeasure bp.response = ( 2 , True) voltaje = ord ( medida [ 0 ] ) << 8voltage = Tensión + ord ( medida [ ,"1 ] ) Voltaje = ( voltage/1024.0 ) * 6.6 # creciente slopeif ( (tensión > = trigger_level ) y ( prev_voltage < (tensión * TRIG_CAL ) ) y ( trig_mode RISING_SLOPE == ) ) : BREAKSi ( (voltaje < trigger_level ) y (tensión > 0.01 ) y ( prev_voltage > tensión /TRIG_CAL ) y ( trig_mode FALLING_SLOPE == ) ) : breakfor i in range ( RES_X ) : para k en el rango ( time_div - 1 ) : # ignorando ( time_div - 1 ) muestras para lograr resolutionbp.response momento adecuado ( 2 , verdadera medida) = bp.response ( 2 , True) voltaje = ord ( medida [ 0 ] ) << 8voltage = Tensión + ord ( medida [ 1 ] ) Voltaje = ( voltage/1024.0 ) * 6.6plot [ i ] = voltagefor i in range ( 1 , RES_X ) : si parcela [ i ]> MaxV : MaxV = parcela [ i ] si parcela [ i ] < minv : minv = parcela [ ,"i ] y = ( RES_Y ) - parcela [ i ] * ( RES_Y /MAX_VOLTAGE ) - offsetX = ipx = i- 1 ; py = ( RES_Y ) - parcela [i- 1 ] * ( RES_Y /MAX_VOLTAGE ) - OFFSETpygame.draw . line ( ventana , línea, ( px, py) , (x, y)) = trig_y RES_Y - trigger_level * ( RES_Y /MAX_VOLTAGE ) pygame.draw.line ( ventana, trig_color , ( 0 , trig_y ) , ( RES_X , trig_y ) )
6
Finalizar el osciloscopio mediante la definición de los parámetros para la interfaz gráfica de usuario del osciloscopio :
# # GUI) font = pygame.font.Font (Ninguno, 19 ) text_max_voltage = fuente . 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 ( " Tiempo de realización: 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 )