“Conocimiento Programación>Python Programming

Cómo hacer un osciloscopio en Python

2013/8/13
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 )

Python Programming
Cómo compilar comandos Python
Cómo probar controladores Stream Python
Cómo obtener las teclas presionadas en Python
Cómo imprimir en Python sin cambiar la línea
Cómo encontrar las mayúsculas en Python
Cómo hacer que Python Espere un comando Quit
Cómo extraer el primer dígito en Python
Cómo dividir cadenas en Python
Conocimiento de la computadora © http://www.ordenador.online