Bienvenido: Ingresar
location: attachment:control_osc.py de LabElectronica/ControlOsciloscopioHammer

Adjunto 'control_osc.py'

Descargar

   1 #! /usr/bin/python
   2 #coding=utf-8
   3 
   4 from __future__ import division
   5 import serial
   6 import sys
   7 import pylab
   8 import time
   9 import numpy
  10 
  11 
  12 class communication(serial.Serial):
  13     def __init__(self, *args, **kwargs):
  14         #Asegura que el timeout tenga un valor rasonable
  15         timeout = kwargs.get('timeout',0.1)
  16         if timeout < 0.01: timeout = 0.1
  17         kwargs['timeout'] = timeout
  18         serial.Serial.__init__(self, *args, **kwargs)
  19         self.buf = ''
  20 
  21     def readline(self, timeout=1):
  22         """timeout en segundos es el máximo tiempo que debe esperar para una trama completa"""
  23         tries = 0
  24         while 1:
  25             self.buf += self.read(512)
  26             pos = self.buf.find('\n')
  27             if pos > 0:
  28                 line, self.buf = self.buf[:pos+1], self.buf[pos+1:]
  29                 return line
  30             tries += 1
  31             if tries * self.timeout > timeout:
  32                 break
  33         line, self.buf = self.buf, ''
  34         return line
  35 
  36     def readlines(self, sizehint=None, timeout=1):
  37         """Lee todas las tramas que hay disponibles. Aborta después del timeout
  38         o cuando no hay mas datos."""
  39         lines = []
  40         while 1:
  41             line = self.readline(timeout=timeout)
  42             if line:
  43                 lines.append(line)
  44             if not line:# or line[-1:] != '\n':
  45                 break
  46         return lines
  47 
  48     def send_cmd(self, dato):
  49         if not dato.endswith('\n'):
  50             dato += '\n'
  51         self.write(dato)
  52 
  53     def get_trace(self):
  54         self.send_cmd(':TRAC:FORMAT ASCII')
  55         time.sleep(0.1)
  56         self.send_cmd(':TRAC:DATA?')
  57         return self.readline(8).strip()
  58 
  59     def get_time_scale(self):
  60         s.send_cmd(':HOR:MAIN:SCAL?')
  61         return s.readline().strip()
  62 
  63     def get_amplitud_scale(self, channel="1"):
  64         s.send_cmd(':CHAN%s:SCAL?' % channel)
  65         return s.readline().strip()
  66 
  67 
  68 
  69 if __name__=='__main__':
  70     if len(sys.argv) <= 2:
  71         print """
  72 Uso: python %s /dev/ttyUSB0 filename""" % sys.argv[0]
  73         sys.exit(0)
  74     PORT = sys.argv[1]
  75     BAUDRATE = 115200
  76     s = communication(PORT, BAUDRATE)
  77     s.flush()
  78     data = s.get_trace()
  79     fh_out = open("%s.txt" % sys.argv[2], 'w')
  80     fh_out.write(data)
  81     fh_out.close()
  82     data = data.split(',')
  83     data = numpy.asarray(data, numpy.float32)
  84     cant_ptos = len(data)
  85     axis_t = numpy.arange(cant_ptos)
  86     time_scale = s.get_time_scale()
  87     time_scale_float = float(time_scale)
  88     #axis_t = axis_t * time_scale_float * 10
  89     t_por_pto = (10*time_scale_float)/cant_ptos
  90     axis_t = axis_t * t_por_pto
  91 
  92     pylab.xlabel('%s Tiempo/Div' % time_scale)
  93     pylab.ylabel('%s Voltage/Div' % s.get_amplitud_scale())
  94     pylab.title('%s' % sys.argv[2])
  95     pylab.grid(True)
  96     pylab.plot(axis_t, data)
  97     #print numpy.arange(0, 10*time_scale_float, time_scale_float)
  98     pylab.xticks(numpy.arange(0, 10*time_scale_float, time_scale_float))
  99     #pylab.xticks(numpy.arange(0, 10*s.get_time_scale(), s.get_time_scale()))
 100     #pylab.yticks(numpy.arange(0, 8*float(s.get_amplitud_scale()), float(s.get_amplitud_scale())))
 101     pylab.savefig('%s' % sys.argv[2])
 102     #pylab.show()
 103     print "Captura %s terminada" % sys.argv[2]
 104     sys.exit(0)

Archivos adjuntos

Para referirse a los adjuntos de una página, usa attachment:nombredelarchivo, como se muestra abajo en la lista de archivos. NO uses la URL del enlace [get], ya que puede cambiar fácilmente y dejar de funcionar.
  • [obtener | ver] (2010-07-22 12:29:39, 397.8 KB) [[attachment:HAMEG_SCPI_V09_Commands_EN.pdf]]
  • [obtener | ver] (2010-07-22 12:29:58, 3.2 KB) [[attachment:control_osc.py]]
 All files | Selected Files: delete move to page copy to page

No tienes permisos para adjuntar un archivo a esta página.