1 - TESIUAMI

Anuncio
UNIVERSIDAD AUTONOMA METROPOLITANA.
UNIDAD IZTAPALAPA.
CIENCIAS BASICAS E INGENIERIA.
DEPARTAMENTO DE INGENIERIA ELECTRICA.
REPORTE PROYECTO TERMINAL II.
ANALIZADOR DE ESTADOS LOGICOS.
ASESOR. M. EN C. AGUSTIN SUAREZ FERNANDEZ.
REALIZARON.
LICENCIATURA.
LOPEZ
GONZALEZ
94214578
ITZEL.
NORA
RUlZGAISTARDOENRIQUEESAU923231
AGUILAR
QUIROZ
SALVADOR.
9431
6548
RlBAZARATENESTORAARON.94317485
56
ELECTRONICA
ING. COMPUTACION.
EN
11 DE NOVIEMBRE DE 1999
Resumen
El principal objetivo de este proyecto es el poner en práctica los conocimientos
adquiridos y durante la carrera e implementar in analizador de estados lógicos
utilizando una PC y una tarjeta de adquisición lomásadecuada
posible,
inicialmente se presentan las diferentes opciones, para su desarrollo. Después de
analizar esas opciones, se optó por utilizar una tarjeta de adquisición de National
Instruments, la PCI-DIO-32HS. Consideramos que la utilización de esta tarjeta y
una computadora personal permitiría el rápido desarrollo de un aparato sofisticado
y costoso comoloes
un analizador de estados lógicos. Debido a que ésta
Institución no contó en su momento con los recursos económicos suficientes para
adquirir esa tarjeta. En su lugar se utilizó la PCI-MIO-I6E1, ésta esde un
propósito más general que la tarjeta seleccionada originalmente. Este cambio
limitó, demanera notable, la velocidad de adquisición y elnúmerode canales
disponibles, sin embargo el objetivo principal se mantenía.
A pesarde
estas limitaciones, este proyecto nos permitió aplicar nuestros
conocimientos en distintas áreas como son: circuitos analógicos, diseño de
circuitos digitales, programación
de
hardware
a bajo nivel y programación
orientada a objetos. Esta última, una
de
las formas más naturales de
programación, fue la que seleccionamos para desarrollar lo quepodríamos
considerar como un primer intento para desarrollar un instrumento ,basado en una
computadora personal.
La
metodología
utilizada pretende, entre otras cosas, hacer sencillo el
mantenimiento del sistema, ya que este representa un costo muy elevado cuando
se desarrollan sistemas de gran escala. En este aspecto, como en varios otros, la
programación orientada a objetos proporciona todas los herramientas necesarias
para que el profesional dedicado a esta tarea pueda desarrollar una aplicación en
la forma más ordenada y sencilla. También se utilizó el software manejador NIDAQ, desarrollado por National Instruments, que esmuy flexible y se acomoda
perfectamente al concepto de programación orientada a objetos: Además, cuenta
con librerías que fácilmente pueden ser llamadas por rutinas de alto nivel ya que
son librerías DLL. Esto nos permitió desarrollar la programación, rápidamente, en
un ambiente Visual adecuado para [email protected]ón se desarrolló
utilizado Visual Basic, versión 5, que esuna herramienta es muy amigable y
extendida, existen rutinas de prueba que National Instruments desarrolló para este
lenguaje.
Esperamos, que quienes estén interesados en el desarrollo de un proyecto similar
encuentrenútilla
información de éste reporte. El análisis está documentado,
aplicando la metodología UML, que se desarrollo en el programa Rational Rose
adjunto a este reporte.
INTRODUCCION
Un analizador lógico puede ser considerado como un osciloscopio con muchos
canales. Típicamente este instrumento tiene de 16 a 300 canales.
Un analizador lógico digital es uno de
los aparatos de medición mas complejos
que existen, ya que aplica las tecnologías mas nuevas para la medición y prueba
de sistemas sumamente complejos, generalmente la mayor parte de la tecnología
usada para su diseño es nueva y especifica para este tipo de aplicación.
Por lo tanto, el diseño y construcción de un analizador lógico no es una tarea
nada fácil. Realizar este proyecto pondrá en practica todos los conocimientos,
técnicas y teorías adquiridos en trimestres pasados sobre diseño digital, analógico
y programación en general.
Desde el inicio, al investigar el funcionamiento y construcción de un analizador
lógico, supimos que este iba a ser un proyecto extremadamente interesante, que
nos ayudaría a reafirmar algunos conocimientos, al mismo tiempoquenos
proveería de muchos nuevos.
Se pensó en realizar un analizador lógico digital que fuera capaz de reproducir las
funciones más básicas de un analizador lógico comercial. AI principio se tenía
pensado realizar todo el diseño y construcción del analizador lógico, desde el
diseño de los circuitos digitales y sistemas de control necesarios así como toda la
programación necesaria (en lenguajes ensamblador y C).
A esto se le tenían que sumar algunos contratiempos, ya que se tendría que
trabajar conuna
gran cantidad de integrados, ya sea en un protoboard (nada
recomendable) o basándose en wire-wrap. Se observó que la mayor parte de la
programación tendria que ser en lenguaje ensamblador.
AI tomar en cuenta estos y algunos otros detalles, llegamos a la conclusión de
quedos
trimestres no bastarían para llegar a ver nuestro analizador lógico
funcionando.
Nuestra meta desde un principio era que el analizador fuera un paquete mas de
software de una PC, que simplemente se le conectara la tarjeta de adquisición a
una ranura de la computadora, se cargara el programa para ambiente Windows, y
listo, el usuario tiene un analizador lógico basado en una PC. Viendo el problema y
el objetivo que se tenia planeado, decidimos que era mejor seguir por otro camino.
¿Quit otras opciones teníamos?
Podíamos:
1) Usar un puerto de la computadora (COMI, LPTI, etc.). (Cuya velocidad
de adquisición nos limitaría alos KHz).
2) Usar una Tarjeta de Adquisición de propósito General. ( J )
El objetivo principal de este proyecto es el de diseñar un analizador de estados
lógicos de bajo costo, para esto se propuso en un principio obtener una tarjeta de
adquisición digital con una velocidad y numero de canales apropiados para hacer
de este instrumento útil.
Para el desarrollo de este proyecto se contaban con diferentes opciones para su
análisis y desarrollo, por ejemplo el métodode
moderno,métodos
análisis y diseño estructurado
orientados por la información, entre otros. Sin embargo
optamos por el método deanálisis y diseño orientado a objetos.
¿Porqué objetos?
El enfoque de orientación a objetos, es una forma de observar la realidad que
permite al diseñador abordar todo tipo de problemas de una manera clara y
esquematizada siguiendo un orden y disminuyendo la complejidad del problema.
El mantenimiento de un sistema suele ser lo más costoso del mismo, por lo que es
importante tomar en cuenta este factor para el desarrollo del sistema. La
programación orientada a objetos facilita el mantenimiento de los sistemas debido
a que cada objeto cumple una tarea especifica y su funcionamiento es
independiente delfuncionamiento de otros objetos que componen al sistema.
Lastécnicas
orientadas a objetos están bien definidas y permiten crear
documentación clara y sin ambigüedades, este es un aspecto importante para el
desarrollo de los sistemas actuales.
La OOP (Object Oriented Programming) facilita el trabajo en equipo, permitiendo
que cada participante tenga una idea clara del alcance del sistema. Así, con la
ayuda de la documentación cada participante realiza la programación de una tarea
especifica que bien puedeser un objeto.
La tarjeta que se utilizo es laPCI-MIO-I6E1
de National Instruments, la cual
cuenta con 16 canales analógicos con una velocidad máxima de muestreo de 500
KHz para un solo canal, la velocidad de muestreo es inversamente proporcional al
numero de canales a muestrear.
En forma digital,la
tarjeta cuenta con 8 canales conuna
velocidad dehasta
IOKhz, frecuencia muy baja para ser usado como analizador digital.
Para el desarrollo del proyecto, en cuanto a software como apoyo se utilizó el NIDAQ versión 6.0 que es un software proporcionado por National Instruments y que
viene junto con latarjeta.
Como herramienta de desarrollo se utilizó Visual Basic versión 5.0, que es la
herramienta para programación de Windows más sencilla con la que disponemos,
además de que latarjeta cuenta con librerías desarrolladas para esta herramienta.
Investigamos que tipos de tarjeta de adquisición existen en el mercado, para
encontrar unaque cubriera nuestras necesidades. Así llegamos a la tarjeta de
adquisición digital PCI-DIO-32HS de National Instruments.
La 6533 (DIO-32HS) es unainterface paralela de E/S de alta velocidad de 32-bit
para computadoras PCI, PXI, Compac PCI, PCMCIA, e ISA. El 6533 incorpora el
ASIC DAQ-DIOde
National Instruments, una interface de32
bits de E/S de
propósito general, específicamente diseñada para dar un alto rendimiento en la
medición de sistemas digitales. La PCI-DIO-32HS es una tarjeta de adquisición
completamente sin switches o jumpers, es decir se configura automáticamente al
conectarla a la PC -Tecnología Plug and Play-.
El chip DAQ-DIO provee de dos
digitales, generaciónde
canales independientes de salidas y entradas
patrones y comunicaciones.Cada
canal ofrece las
siguientes funciones:
- Selección de varios anchos de palabra (8, 16 o 32 bits).
-
FIFO con capacidad para 16 muestras.
-
Contadores de 16 y 32 bits para el tiempo base y generación de
intervalos, con una resolución máxima de 50 ns.
- Un controlador de comunicaciones que implementa seis flexibles
protocolos de comunicación.
-
Detección por disparo y detección digital de patrones.
- 24 mA de salida estándar.
-
Histéresis y terminación de líneas basadas en diodos para todas las
entradas.
Con la DIO-32HS1 uno puedeusar su computadora comoun probador digital de
E/S, un analizador lógico digital, o un controlador de sistema para pruebas en
laboratorios, producción, y monitoreo y control de procesos industriales.
LaPCI-DIO-32HS
contiene la interface llamada MITE PC1 desarrollada por
National Instruments. La interface MITE PC1 6533 desarrolla mediciones sobre uno
o varios grupos de canales, hace generaciónde señales y transferencia de datos a
altas velocidades gracias a ungran
velocidades
rangode
protocolos decomunicación
cerca de los 76 Mbyteds (PCI).Unopuede
a
operar las 32 líneas
individualmente en una entrada simple, o como puertos de 8, 16, o 32 bits para la
generación de modelosy comunicaciones.
Se hizo una investigación muy completa sobre como se trabaja con esta tarjeta,
la forma de programarla y configurarla, y se observo que si se podía contar con
una tarjeta de adquisición de este tipo, la meta fijada podía ser alcanzada, esto es,
un analizador lógico de bajo costo, basado en una PC corriendo en una ambiente
Windows.
Descubrimosque
existen muchas opciones de dondeescogercuando
se
programa una tarjeta de adquisición como esta. Uno tiene a su disposición vía
Internet paquetes desarrollados por National Instruments como LabVlEW,
LabWindows/CVI,
Components
Works,
o NI-DAQ. Este ultimo se otorga
gratuitamente a cualquier persona que adquiera esta o cualquier otra tarjeta de
adquisición construida por National Instruments.
Component Works,
LabView, o
LabWindowslCVl
Ambiente
Convencional de
Programacion
Softwaredel
Controlador
NI-DAQ
Hardware de
Adquisición
Computadora
Personal
Este posee una extensa librería de funciones que uno puede llamar desde un
ambiente
de
programación. Estas funciones incluyen rutinas para entrada
analógica (Conversión AID), adquisición de datos al buffer (conversión AID de alta
velocidad), salida analógica (conversión DIA), generacióndeondas
D/A síncrona), entrada y salida digital, operaciones
con
contadores
(conversión
y
temporizadores, SCXl (Tecnología desarrollada por National Instruments), RTSl
(Real Time System Integration), calibración, comunicación, y adquisición de datos
a memoria extendida.
NI-DAQ posee funciones de E/S de alto nivel para mayor facilidad de
programación y funciones de E/S de bajo nivel para obtener mejor ejecución y
flexibilidad. Ejemplos de funciones de alto nivel escribir datos al disco o adquirir un
cierto número de datos. Un ejemplo deunafunción
de bajoniveles
escribir
directamente en los registros de latarjeta de adquisición.
NI-DAQ también
direcciona
computadora
y
internamente
muchas
el hardware
de
de
las
tareas
entre
la
adquisición como programación
la
de
interrupciones y controladores de DMA. NI-DAQ mantiene una constante interface
de software de tal manera que uno puede cambiar de plataforma con solo hacer
unos pequeños cambios en el código. Usando lenguajes de programación
convencionales o el software de National Instruments, la aplicación siempre usará
el software manejador NI-DAQ,como se ilustra a continuación,
Las librerías de funciones para Windows de NI-DAQ son DLL’s, lo que significa
que las rutinas deNI-DAQ no son ligadas dentro de los ejecutables de la
aplicación. Solo la información acerca de las rutinas es almacenada en los
ejecutables.
Las libreríasimportadascontieneninformación
DLLexportadas.Estasindicanlapresencia
acerca de las funciones de la
y localizaciónde
la rutinas DLL.
Dependiendo de las herramientasde desarrollo que se utilicen, uno puede mandar
información a las rutinas DLL a través de librerías importadas o de declaración de
funciones.
Usar prototipos de funciones es una buena practica en la buena programación.
Este es elmotivo por el cualNI-DAQ esta empaquetado con archivos de funciones
prototipo para diferentes herramientas de desarrollo para Windows.
Todo esto, hacía bastante interesante este enfoque, sin embargo no todo salió
como se planeaba. El principal (y gran) problema fue el financiamiento de este
proyecto.Debido a que la tarjeta de adquisición PCI-DIO-32HS tiene un precio
aproximado de 900 U.S.D. no nos fue posible que se nos otorgara el dinero para
su adquisición, lo que hizo por un momento que empezáramos a pensar de nuevo
en nuestraantiguaopciónde
construir todos los circuitos y dejar un proyecto
inconcluso.
Sin embargo se encontró otra opción que apesar de no ser la optima era lo
bastantebuena como para considerarla. Senos facilitó el uso de la
adquisición PCI-MIO-16E-1 de National Instruments, lacual
tarjeta de
es unatarjetade
adquisición cuya función principal es la adquisición de señales analógicas, lo cual
en realidad no era un inconveniente demasiado importante, por tanto aceptamos
gustosos la oferta y comenzamos a trabajar.
La PCI-DIO-16E-1 posee 16 canalesde
adquisición analógica, Io cuales
un
número bastante aceptable, el Único inconveniente es la velocidad a la que son
capaces de adquirir datos, ya que con tan solo 500 KHz dividido entre el numero
de canales muestreados, se convierte en un inconveniente de importancia para la
medición de circuitosdigitales veloces.
Esta tarjeta realiza en realidad
cual la hace una herramienta
muchas funciones de adquisición analógica, lo
muy poderosa en aplicaciones de esta indole, es
decir, vale loque cuesta. AI ver las características queposeía vimos queera
posible adaptarnos y trabajar con ella, ya que esto nos aportaría mas ventajas que
desventajas.
La tarjeta también posee 8 canales de adquisición digital, los cuales en realidad
sonmuchomas
lentos que los analógicos, contan
solo una velocidad de
adquisición de máximo 900 Hz.
A pesar de esto, contar con una tarjeta del mismo fabricante nos familiarizó con
el funcionamiento y programación de dichas tarjetas, ya que como se mencionó
anteriormente, el software de desarrollo para todas las tarjetas de National
Instruments es el mismo,solo cambian las funciones que puede desempeñar cada
tarjeta.
El poseer dicha tarjeta fue de vital importancia, y se hace énfasis en este punto,
ya que se demostró que fácilmente se puede crear un analizador lógico usando
una tarjeta de este tipo, y que un analizador bajo un ambiente Windows de bajo
costo era posible, llegando a un resultado aceptable usando una tarjeta que no era
la adecuada. Por tanto se logró lo que se tenía planeado implementando a baja
velocidad todas las funciones que se tenían pensadas al inicio de proyecto.
DIAGRAMA A BLOQUES DELA PROGRAMACION DEL
ANALIZADOR LOGIC0 UAM12000 (NIVEL 1).
A continuaciónsepresentauna
serie de diagramas debloque que explican
detalladamente como es que funcionay esta programado el analizador lógico.
El usuario introduce los parámetrosde
configuración necesarios para lacaptura.
Se programa la tarjeta con los parámetros
obtenidos del usuario y se capturan
los datos en unbuffer.
Se presentan en pantalla los datos
capturados en varios formatos.
Diagrama a bloques dela programación de la configuración de la entrada.
rConfiguración de los'
parámetros de
medición.
Configuración
Analógica
P Numero de canales
a muestrear.
P Velocidad de
muestreo.
> Numero de
muestras a
almacenar.
> Voltaje de umbral.
Palabra de disparo.
Digital
"r Numero de canales
a muestrear.
> Numero de
muestras a
almacenar.
G Palabra de disparo.
>
Archivo con
parámetros de
configuración
Diagrama a bloques del proceso de captura de datos.
Captura de datos
Captura
Analógica
O Numero de canales
>
Numero de
canales
muestreados
> Velocidad de
muestreo.
> Numero de
muestras
almacenadas.
P Voltaje de umbral.
P Palabra de
disparo.
muestreados.
O Numero de
muestras
almacenadas.
O Palabra de
disparo.
Buffer de datos
analógicos
Buffer de
datos digitales.
Conversión:
Datos digitales.
Datos Analógicos
+
Diagrama a bloques delproceso de visualizaci6n de resultados e
impresi6n de los mismos
n
Buffer de Datos
Digitales
Gisualización’
formato
decimal.
r
1
%sualizacion\
formato
1 r
r
Imtxesión.
1
1
Documentación del desarrollo de software.
Existen diferentes metodologías para análisis y desarrollo de sistemas. Existen en
estos momentos aquellas quese
basan en lamodularidady
aquellas que se
basan en el“Paradigma de objetos” como las mas conocidas.
Ambos enfoques tienen ventajas y desventajas y por si mismos ninguna de estos
es ideal en todos los casos.
La principal ventaja del enfoque modular es su sencillez y fácil documentaciónque
no consiste en otra cosa que explicar cada uno de los módulos del sistema. Estas
metodológicas se basan simplemente en el principio de “divide y
vencerás”. Sin
embargo, estas ventajas desaparecen cuando el sistema se vuelve más complejo.
En sistemas complejos el número de variables puede ser muy grande, controlar el
comportamiento de estas variables se vuelve cada vez más difícil, al grado de que
una modificación puede significar una inversión de tiempomayor
que el mismo
desarrollo inicial. Es decir, construir sistemas complejos con estas metodológicas
llevepor lo general al desarrollador, a confrontar unagrancomplejidaden
un
sistema muy rígido haciendo demasiado costoso el mantenimiento.
El enfoque orientado a objetos surge
como
una
consecuencia
de
estas
limitaciones. Aun que hoy en día este enfoque aun no cubre las expectativas de
quienes lo apoyan,esla
mejor opciónpara
construir sistemas complejos que
permitan un fácil mantenimiento.
El desarrollo de software orientado a objetos sebasa
enla
manera enque
nosotros vemos la realidad, en la manera que entendemos la realidad. Un sistema
desarrollado bajo este conjunto de principios es un sistema que trabaja sobre la
base de objetos que realizan una actividadespecifica y que se comunican entre sí
por medio de mensajes, de tal manera que lo que ve un objeto de otro es solo
mediante estos mensajes, lo que permite encapsular toda la complejidad de un
objeto, es decir, a un objeto nole interesa como realizasulabor
otro objeto,
simplemente le interesa su resultado. Por otro lado la P O 0 tambiénpermite
manejar los conceptos de herencia y polimorfismo. La
herencia
es
útil
principalmentepar
ir creando Plantillas de objetos (Clases)cadavez
más
complejas reutilizando las clases que ya se tiene construidas. El polimorfismo es
una herramienta elegante que permite reducir la complejidad de un sistema. Su
uso se basa principalmente en clasificar los tipos de mensajes entre objetos, en
vez de los objetos. Dicho de otra forma, el desarrollador debe saber el nombre del
método, mas que el nombre del objeto. Así por ejemplo la instrucción “objeto.Abre”
se torna común y no es necesario codificar “objetol.abre2”. Los mensajes son
clasificados por la funciónque realizan.
El mantenimiento de estos sistemas es más sencillo pues se trata de ir
sustituyendo objetos. Lo que no afecta al sistema ensu totalidad. Siempre y
cuando los mensajes sigan siendo los mismos.
En la realización de este proyecto nosotros optamos por el enfoque orientado a
objetos porlas
ventajas que ofrece y además por que contamos conuna
herramienta CASE y con un lenguaje deprogramación
visual que permite el
diseño orientado a objetos.
La herramienta CASE que utilizamos es Rational Rose. Eta herramienta permite
diseñar el sistema de una manera gráfica, siguiendo los pasos de la metodología
orientada a objetos. Por otro lado permite ircreando
la documentacióncaside
manera automática. De tal manera que si se modifica el diseño, se modifica
también la documentación.
La documentación contienebásicamente las siguientes partes.
1. Uses Cases. Enunciados que describen lo que hace el sistema.
2. Diagrama de Uses Cases. Describe la
manera en que interactuan las partes
del sistema de manera global.
3. Descripción de las clases. Describe las plantillas de objetos que interactuan en
el sistema.
4. Diagramas de colaboración. Describen la forma en que los objetos se
comunican. Especificando los mensajes, los parámetros del mensaje y el tipo
de respuesta si es que existe.
5. Diagramas de secuencia. Es una
consecuencia
de
colaboraciónperointentanenfatizar
mensajes.
los diagramas de
la secuencia en la quese
dan estos
PROCEDIMEINTO DE INSTALACION DEL SISTEMA.
Paralainstalaciónde
sistema UAM12000 esnecesario
que secuentecon
el
siguiente equipo:
Tarjeta DAQ PCI-MIO-16E-1 de National Instruments.
El software NI-DAQ V.6 o superior. Generalmente viene con latarjeta.
Windows 95/98.
Computadora con un procesador Pentium o superior.
Una ranura PC1 libre.
16 MB de memoria RAM.
Para la instalación completadel sistema se tienen que seguir los siguientes pasos:
1. Instalación del software NI-DAQ de National Instruments.
Inserte el CD-ROM de NI-DAQ.
El sistema arrancara automáticamente el programa de instalación, solo siga
los pasos que se le indican.
0
No
es
necesario que se instalen LAB-VIEW,
LabWindows/CVI,
o
Component Works, solo instale los controladores de la tarjeta y el software
NI-DAQ.
Reiniciesu computadora.
2. Instalación de la tarjeta PCI.MI0-16E-1
Asegúrese de tener apagada su computadora
Retire la cubierta de la computadora.
O
Extraiga cuidadosamente la tarjeta de su empaque antiestático e insértela
en la ranura PC1 libre.
O
Coloque de nuevo la cubierta de su computadora.
O
Enciendala
computadora y siga los pasos que le indique el sistema
operativo cuando detecte la tarjeta.
3. Instalación del software UAM12000.
O
Inserte el disco con la etiqueta DISCOI.
0
Ejecute el programa SETUP que viene el disco.
O
Siga los pasos de la instalación.
O
Para ejecutar el programa haga doble clic sobre el icono UAM12000 del
menú Inicio-Programas.
MANUAL DE USUARIO DEL ANALIZADOR LOGICO.
Uami2000, es un programa que le permite manipular los datos fácilmente, y con
una interfaces sencillas de operar, lo primero que hay que hacer es familiarizarse
con este programa, conocer cada uno de las opciones de la pantalla principal para
poder hacer uso del mismo. este manual tiene como propósito de explicar clara y
brevemente el manejo del programa Uami2000, ya queel
programa Uami200
trabajo en ambiente Windows, se maneja igual que cualquier otra aplicación de
Windows, la figura 1 muestra la pantalla principal de Uami2000
Figura 1 Pantalla principal del programa Uami2000
Para poder obtener el mayor beneficio del programa Uami2000, se debe seguir
los siguientes pasos:
$
$
j
J
1.- Entrar al menúde configuración, yasea con el menú o el icono
.......
...'
.
Una
vez que se llama al menú de configuración, la pantalla desplegará en la pantalla la
ventanadela
figura 2, esta ventana contiene los parámetrosde configuración
necesarios para que Uami2000funcione.
Figura 2 Opciones de configuración
Unavezque
se hallamado
al menúde
configuración las opciones son las
siguientes:
Configuración de captura digital
Tipo de captura: esta opción permite especificar el tipo de captura que se va a
realizar, si la captura es digital, la velocidad de captura es de 2000 khz por canal,
y el número de canales son
8 por default, el número de muestras por canal ya
están especificadas, por lo que no necesita especificar este parámetro, el voltaje
de umbral es el que reconoce el dispositivo digital a analizar como un uno lógico y
se refiere al límite inferior, por ultimo la palabra de disparo se refiere a la palabra
cuyo valor será el que inicie la captura del a n a l i z a d...o B i c o , si este valor nunca
sucede el sistema esperará el patrón y nunca comenzara la captura, si usted no
escribe ningún valor en este campo, el analizador lógico comenzara la captura
justo en el momento en que usted Presione en icono.
Configuración de captura analógica.
La tarjeta PCI-MIO-16E-1, la cual viene con el programaUami2000,puede
capturar hasta 16 canales digitales con una velocidad de 2000 Khz, si se utilizan
todos los canales, entonces se obtiene una velocidad máxima de khz, si se utiliza
un menor numero de canales, la velocidad por canal será proporcional al numero
de canales utilizados, además de que se pueden obtener hasta 256 muestras por
segundo, lo que significa que por canal se obtendrán 16 muestras por segundo por
parámetros
también
canal, los demás
se pueden modificar. Uno
de
las
posibilidades que tiene el Uami2000 es el de poder especificar la lógica que se
utilizará, es decir lógica positiva o negativa.
Es posible guardar los valores de configuración en un archivo, los archivos que
se generan tienen una extensión CFG, estos archivos se pueden recuperar
posteriormente y hacer uso de los parámetros especificados, la razón de guardary
posterior mente recuperar una configuración, es la de permitir que el usuario
pueda grabar los valores que mejor idea le den del sistema que este analizando.
Captura de datos.
Unavez
especificados los parámetrosde
configuración, deberáproceder
captura de datos en el menúde
a iniciar la captura de los datos. Nota, es
importante que revise que halla hecho correctamente la conexión del dispositivo
con las terminales de captura, si su dispositivo no esta correctamente conectado,
el sistema le mostrará una pantalla como muestra la figura I.3, es necesario que
comience desde el principio para evitarse futuras perdidas de tiempo.
Figura 3 Mensaje de error de captura
La captura de los datos es un proceso interno de la tarjeta que esta utilizando,
estasehará
configuración.
de acuerdo a los parámetros especificados en el menú de
Visualizar los datos numéricos obtenidos
M
L::..:que le permitirá abrir una pantalla similar al de la figura 4, en esta
Para visualizar el análisis hecho por el analizador Uami2000, debemos presionar
el botón
pantalla podemos ver unalínea
de búsqueda, ya sea en formato decimal,
hexadecimal o binario, lo que se debe hacer es especificar la palabra quese
desea, indicar el formato y posteriormente se presiona el botón Buscar,
Una vez terminado de visualizar los datos deseados, se presiona el botón cerrar
para continuar conla siguiente captura.
Visualizar los datos gráficamente
Para ver gráficamente los canales conectados a la tarjeta PCI-MIO-16E1, haga
y&&j
clic en el botón, i m m una vez hecho esto el programa Uami2000 le mostrará una
pantalla similar a la de la figura 5.
Como se puede observar, el programa Uami2000 es capaz de mostrar hasta 16
canales en el caso de una
setial analógica y 8 canales en el caso de señales
digitales.
Impresión de los resultados numéricos y gráficos
Una vez capturados los datos es posible imprimir la información numérica o las
gráficas, al imprimir los datos el sistema le preguntará el numero de la muestra de
inicio de impresión, es decir, el rango de muestras de datos del que desea obtener
los resultados impresos, usted deberá especificar en la ventana el rango de los
datos que desea imprimir, aunque el programa puede imprimir todos los datos que
halla capturado (no recomendado en el caso de tener demasiados datos). Una vez
especificado esto, el usuario verá en la pantalla una ventana similar a las que
muestran las aplicaciones de Windows, esto para facilitar la impresión, ya sea de
los datos numéricos o de las gráficas obtenidas. Véase la figura 7.
Figura 7 Opciones de Impresión
USO DE LOS ICONOS.
CONCLUSIONES
La primera parte de este proyecto (Proyecto terminal 1) tenia como principales
objetivos conocer a fondo el funcionamiento de un analizador lógico, conocer las
partes funcionales fundamentales de estos y proponer un diseño viable para un
analizador lógico.
Nuestra propuestainicial fue la de contar una tarjeta de adquisición de datos que
cumpliera con los requisitos de velocidad demuestreo y depuntasdeprueba
(Problemas más comunes a los que se enfrentan los diseñadores de analizadores
lógicos) para que fuera integrada a una PC y así realizar la programación
necesaria para realizar un analizador lógico.
La tarjeta sugerida por nosotros no se logro; en cambio se nos facilito una tarjeta
tambiénde
adquisición de datos pero que no cubrió con los requisitos de
velocidad demuestreo
requeridos. Enun
principio esto nosdesconcertó
pues
pensamos que el proyecto ya no seria realizable. La realidad fue otra, La tarjeta
con la que trabajamos (PCI-MCI-O) a pesar de tener limitaciones en cuanto a la
velocidad de muestreo, esuna
tarjeta muy completaquecuenta
entre otros
detalles con adquisición tanto digital como analógica; ambas programables.
En realidad los propósitos del proyecto terminal I no cambiaron en lo sustancial
con el cambio de tarjeta, los objetivos siguieron siendo los mismos: Diseñar un
analizador de estados lógicos.
Antesde
entrar a los detalles de la programaciónteníamos idea de cuales
debían ser los resultados obtenidos, habíamos visto funcionar otros analizadores
lógicos (inclusive demos) por lo que sabíamos mas ó menos cual debía ser el
alcance de nuestro proyecto, que si bien no alcanzaría para ser un instrumento
comparable con los del mercado, al menos contaría con las funciones mínimas
con las que cuenta uno de estos. Sin embargo el tener en mente los resultados
que se deben de alcanzar no es suficiente para atacar el diseño de un proyecto;
máximo si se trata de un sistema que trabaja con partes que se relacionan entre sí
y que pueden resultar en una compleja programación. Así que optamos por un
método de análisis orientado a objetos. Esta metodología de análisis permite a los
diseñadores ir conociendo a fondo la problemática del diseño a la vez que se van
obteniendo resultados paulatinamente más complejos. Permite también volver a
utilizar las partes que se van obteniendo en nuevas versiones del diseño, Por lo
quenoes
necesario volver a implementar todo elsistema.
realizar ladocumentación
Además permite
necesaria para entender el avance del diseño del
sistema. Estas dos ÚRimas características hacen del proyecto un sistema de fácil
mantenimiento. Si alguien desea continuar con el proyecto lo puedehacer sin
tener que confrontar un sistema rígido, difícil de modificar.
Incluso, si se llegase a cambiar la tarjeta de adquisición de datos, la estructura
del diseño nose modifica sustancialmente, pues todos los módulos del sistema
son independientes de los otros módulos, excepto en la forma en que estos se
comunican.
AI irnos empapando con el diseño nos dimos cuenta que la tarjeta contaba con
suficientes características (salvo las puntas y la velocidad de muestreo) comopara
ser programada como un analizador lógico. Estas características y la metodología
de análisis utilizada nos llevaron a realizar un trabajo que nosotros consideramos
bueno, pues se cubrieron todas las metas en un principio planteadas.
Cabe destacar lacooperación de nuestro asesorde
proyecto, el profesor
Agustín Suárez que puso en nuestras manos los elementos necesarios en cuanto
a conocimiento (pues fue nuestro profesor en las materias de Sistemas digitales,
básicas en el entendimiento de este problema) y por otro lado se preocupo por
poner también a nuestro alcance todos los elementos necesarios incluyendo la
infraestructura necesaria para el buen fin de este proyecto. Sin este apoyoel
proyecto no se hubiera logrado.
Bibliografía
Título
Using Visual Basic The mc
complete reference
Visual Basic 4, Developers Guic
Hacker's Guide of Visual Basic
SQL Server
Visual Basic 5 Interactive Cours
Visual Basic 4 Expert Solutions
Real
World
Programming
w
Visual Basic
Hacker's Guide to Visual Basic
Object Oriented Software
Engineering, a Use Case Driver
Approach
Instant UML,
Object Oriented Software
Engineering,
Object Oriented System Design
Object Oriented Analysis and
Desian with Applications.
Editorial
Autor(es)
Jeff Webb, Mike Mckelevy Que, 1995
Boyle, Rothmeier
Sams
Publishing,
Shannon, West, eta1
Microsoft Press
Vaughn, William R
1996
John Harrington, Mark Pretince Hill WaiteGroup
Spenik, Heidi Rumbaugh, Press Sams Publishing
Cliff Diamond
Steve
Potts,
Michael
Mckelvy,
Edward
B.
Toupin,
Michael
Marchuck,
James
A
Doeley, Joseph Armitage,
Elizabeth Boonin
Sams Publishing
Antony T. Mann
Vincent
Chen,
Jhon
Montgomery
Jacobson, Ivar,
Christerson, Magnus;
Jonsson, Patrik;
Overgaard, Gunnar
[Mullerl997] Muller,
Pierre-Alan
[Jacobson19951
Jacobson, Ivar;
[Yourdon19941 Yourdon,
Edward
[Boochl994] Yourdon,
Edward
Series
Editor
Wood
Leokhard
Addison-Wesley, 1992
Wrox, Birmingham,
Canadá, 1997
Addison-Wesley, 1995
Yourdon Press, 1994
Benjamin Cummings,
1994
La OOP (ObjectOriented
Programming) facilitaeltrabajo
en equipo,
permitiendo que cada participante tenga una idea clara delalcance del sistema.
Así, con la ayuda de
documentación
la
cada participante
realiza
la
programación deuna tarea específicaque bien puede ser un objeto.
La tarjeta que se utilizó es la PCI-MIO-16E1 de National Instruments, lacual
cuenta con 16 canales analógicos con una velocidad máxima de muestreo de500
Khz para un sólo canal, la velocidad de muestreo es inversamente proporcional
al número de canales a muestrear.
En forma digital, la tarjeta cuenta con 8 canales con una velocidad de hasta
lOKhz, frecuencia muy baja para serusado como un analizador digital.
Para el desarrollo del proyecto, en cuanto a software como apoyo se utilizó el
NI-DAQ versión 6.0 que
es
un software proporcionado
por
National
Instruments y que viene junto con la t a r j e t a
Como herramienta de desarrollo se utilizó Visual Basic versión 5.0, que es la
herramienta
para
programación
de
Windows más sencilla con la que
disponemos, además de que la tarjeta cuenta con librerías para esta herramienta.
CARACTEI~STICASDE LA TARJETA
Especificaciones de la tarjeta PCI-MIO-16E1
Entrada
Analógica
Caracteristicms
entrada
de
Numero
de canales:
16 en single-ended
8 diferencial
(la selección se hace mediante software)
Tipo de A D C :
por aproximaciones sucesivas
Resolución:
I2 bits, 1 en 4,096
Rango Máximo de Muestreo:
1.25 MS/s (en un canal)
Precisión
relativa:
Caracteristicas de transferencia
f 0.5 LSB typ dithered, f 1.5 LSB max undithered
DNL
fO.5LSBtyp,flLSBmáx
No missingcoQs:
12 bits, guaranteed
Error de offset:
Regain error after calibration
Regain error before calibration
f 12 pV máx
f 2.5 mV máx
C”Sticas
de Amplificación
Características dinámicas
Postgain mor after calibration
f 0.5 mV máx
Postgain
error
before
calibration
f 100 m V d x
Error de ganancia: (relativoa la referencia de calibración)
despuC de la calibración
(ganancia = 1)
f 0.02%de lectura
máx
antes de la
calibración
f 2.5% de ~ & I I %máx
ganancia # 1 con error de
ganancia ajustadaa O
con
ganancia
=1
f 0.02% de lectura máx
Imoedancia de entrada:
100 GQ en paralelo con 100 pF
encendidonormal
apagada
820 L-2 min
820 L-2 min
Inout bias current& Val(Forml.cboNm.Text) > 1000:
f 200 pA
Coniente de entrada de offset:
f 100 pA
CMRR, todos los rangos de entrada, DC a 60 Hz:
Ganancia
CMRR
0.5
95 dB
1
dB
100
22
106 dB
Ancho de banda:
Small
signal
(-3 dB)
1.6 Mhz
Large
signal (1% THD)
1 Mhz
Settling timeto fidl-scale step:
Ganancia
Precisión
30.o12%
(&.5LSB)
30.024
(*I LSB)
2pS typ,
3pS máx
1 . 5 P typ,
2pS máx
1.5w
2pS máx
1
2 w trp,
3pS máx
l.Wtyp,
1.3pSstyp,
1.5pS rnáx
2pS tYP,
3pS máx
1.spS
2pSmáx
2pS rnáx
m.
m,
100
2 P tYP,
1.w
3pS mix
2pS máx
Svstem noise (LSBrms. sin incluir cuantizaciónk
Ganancia
0.5 a 10
20
50
0.9
100
Crosstauc:
Dither Off
0.25
0.4
0.9@ typ,
1pSmáx
1pS typ,
1.5pS máx
Dither On
0.5
0.6
0.7
0.5
0.8
-80 dB, DC a 100 khz
Tiemoo recomendado de esperaantes de trabajar:
15 minutos.
Coeficiente de temoeratura de Oí€set:
Pregain
f 5 pVPC
Postgain
f 240 pVPC
Coeficiente de temmatura de la ganancia:
f 20 p p d C rnáx
Onboard calibration reference:
nivel
5,000 V (f2.5 mV)
(valor actualen la EEPROM)
coeficiente de temperatura f 5 ppm/”Cmáx
long-term stability
Salida
Analógica
Caracterisiticas
typ.
0.5
2 a 50
Estabilidad
-M. 09PA
(MLSB)
de salida
Número
f 15 ppml J“
m
de canales:
2 voltajes
Resolución:
12 bits, 1 en 4,096
Rango máximo de actualización:
1 canal
1 MSIs
2 canales
600 kS/s 1 MSIs
-
(depende del sistema)
T i w de DAC:
Double buffered, multiulicador
Tamailo d e l bufFer FIFO:
2.48 S
Transferencia de datos:
D M 4 intermpciones, WS programada
Modos DMA
Scatter gather
Recisión de la calibración:
despub de lacalibración
f 0.3 LSB typ, f O.5LSB m&
antes de la calibración
f4LSBmáx
DNL:
despub de la calibración
f 0.3 LSB typ,f 1.0 LSB máx
antes de la calibración
f3LSBmáx
Monotonicity
12 bits, garantizado después de la calibración
E m de otfset:
despuésde la calibración
f 1.0 mV máx
antes de la
calibración
f 200 mVmáx
Error de la panancia:
(relativo a la referencia interna)
después de la calibración
f 0.01% máx de salida
antes de la calibración
f 0.5% rnáx de salida
(relativo a la referencia extema)
después de la calibración
+ 0% a +lo% rnáx de salida,
(no ajustable)
Raneos:
f 10 V, O a 10 V, iEXTREF, O a EXTREF
(seleccionable mediantesohare)
Acodamiento de salida:
-
C”stiCas
de salida
-
Voltaje de salida
Dc
lrnoedancia de salida:
0.1 Rmáx
Corriente maneiada:
f 5 mAmáx
Protección:
cato circuito a tierra
Encendido:
ov
Raneo de referencia de entrada externa:
fllv
Roteccih de Sobrecarga:
f 25 V encendida, f 15 V apagada
Impedancia de entrada:
10 kR
Caractff’sticas Dinámicas
E n W S a l i d a Digital
canales:
Min
de
Ancho de banda: (-3 dB)
1 MHz
Settling
time
for
full-scale
w:
precisión de 3 ps a f 0.5 LSB
Coeficiente de TemDeratura de la Ganancia:
referencia
interna
f 25ppm/oC
referencia
extema
f 25ppm/oC
Onboard Calibration Reference
nivel
5.000 V (f2.5 mv)
(valor adual en la EEPROM)
coeficiente de temperatura
f 5 ppm/“C
long-term stability
Número
8 enWsalida
Compatibilidad
TTUCMOS
Niveles Lhgicos Digitals:
Nivel
voltaje
entrada
de
bajo
voltaje
entrada
de
alto
corriente de entrada bajo
(V,= o v)
corriente de entrada aIto
v
2.0 v
Max
0.8 V
5.0 V
-
-320 @
0.0
(V, = 5 v )
10 PA
voltaje de salida bajo
( I ~=
L 24 mA)
V
0.4
voltaJe de salida alto
(IOL = 13 mA)
4.35 v
Encendido:
Entrada (alta impedancia)
Transferencia de datos:
E/s programada
Número de c a n a l e s :
2 altobajo contadoreskmporizadores,
1 escalador de fiecuencia
Resolución:
24 bits
contadoredkmporizadores
escalador de ffecuencia
4 bits
ComDatbilidad:
TTTUCMOS
Reloies de base d i s h b l e s :
20 MHz, 100 kHz
contadoresHemporizadores
escalador de frecuencia
10 MHz, 100 kHz
Precisión del reloi base:
I
I
-
Temporización E/S
f0.01%
Frecuencia máxima de la fuente:
20 MHz
Duración minima del pulso de la fuente:
10 m,edge-detect mode
Duración minima del pulso de la compuerta:
1 O ns, edgedetect mode
Tranferencia de datos:
D M 4 interrupciones, EIS programada
Modos de DMA
scatter gather
Disparadores
Fuente:
Disparadoranalógico
Nivel:
u
ACH<O ...IS>, disparador extemo(PFlO/TRIGl)
f full-scale, interna;f lOV, externa
positiva o negativa (seleccionadapor sohare)
Resolucibn:
8 bits, 1 en 256
Histéresis:
programable
Ancho de banda: (-3 dB)
2 MHz interna, 7 MHz externa
Entrada extema: (PFlO/TRIGl)
Impedancia
10 kn
Acoplamiento
Dc
Protección
0.5 a V,, + 0.5 cuando esta
contigurado como una seiíal
digital, f 35 V cuando está
configurado como un disparador
anal6gico o desabilitada, f 35 V
apagada.
Compatibilidad:
-
Disparador digital
TTL
Res~~esta:
rising or falling edge
Ancho del pulso:
10 nsmin
Trimer lines:
7
RTSI
m
Interface de Bus
Requerimientos de
alimentación
Físicas
+5
conectores)
incluye
maestro, esclavo
VDC (f5%)
Alimentación uennitidaen el conector de WS:
+4.65 a +5.25 VDC a 1 A
Dimensiones: (no
17.5 x 10.6 cm (6.9 x 4.2 in)
Conector E/S:
Temperaura
Ambientales
macho de 68 patas tipo SCSI-I1
de o p e r a c i ó n :
OD a 55OC
TemDeratura de almacenamiento:
-55" a 150°C
Humedad relativa:
5% a 90% no condensada
Ranuos de la seiial de e
n
t
r
h
Ganancia
del
canal
Rango de la tarjeta
(ambosse seleccionan mediantesoftware)
Bipolar
Unipolar
0.5
It 1ov
1
f5V
Oa10V
2
f 2.5 V
Oa5V
O a52 V
flV
10
f 500 mV
OalV
20
f 250 mV
Oa500mV
50
f 100 mV
O a 200 mV
100
f 50 mV
O a 100 mV
Aco~lamientode entrada:
"
Dc
Máximo voltaie de trabaio: (signal and common mode)
each input should remainwithin It 11V o f ground.
Protection de sobrecarea:
f 25 V encendido, f 15 V apagado
Entrada motepida:
ACH<O..15>, AISENSE
Tamaiio del buffer FIFO:
512 S
Transferencia de datos
DMA, interrupciones, E/S programadas.
Modos DMA:
Scatter-gather
Tamaño de la memoriam confiwración:
5 12 palabras
I
Class name:
Ingeniero
View Case
Use
Category:
Stereotype:
Actor
Export Control: Public
Cardinality:
Hierarchy:
none Superclasses:
Associations:
<no rolename> : Configuracion de la Captura Analogica
in association
<no rolename> : Captura de datos digitales.in association
<no rolename>: Captura de datos analogicos.in association
<no rolename> : Despliegue de datos numericos.in association
<no rolename, : Despliegue de grafica delos datos. in association
<no rolename>: Guardar Resultados a fichero.in association
<no rolename>: Guardar configuracion a fichero.in association
<no rolename>: Imprimir Resultados. in association
Sequential
ansient
State machine:No
Concurrency:
Persistence:
Use Case name:
Configuracion de la Captura Analogica
View Case
Use
Category:
Documentation:
Pasos:
1. Escoger entre configuracion predeterminadao manual.
2. Se indica el numero de canales.
3. Se indicad numero de muestras por segundo.
4. Seindicalaconfiguracion y velocidaddelrelojdemuestreo.
5. Se indican el numero de muestras.
6. Se indicanlos voltajes de umbral.
7. Se indica el tipo de16gica usada.
8. Indicar el patron de disparo.
Abstract:
State machine:No
Associations:
No
<no rolename> : Ingeniero in association
Use Case name:
Captura de datos digitales.
Category:
Documentation:
Pasos:
Use Case View
1. Esperar el patron de disparo.
Page 1
2. Capturar datos hasta que se llegue al numero de muestras o se encuentre el patron de paro.
3. Entregar el arreglo decimal con los datos capturados.
Abstract:
State machine: No
Associations:
No
<no rolename> : Ingeniero in association
Use Case name:
Captura de datos analogicos.
Category:
Documentation:
Case
Use
View
Pasos:
l. Traer los parametros de configuracion.
2. Configurar la tarjeta usando estos datos.
3. Capturar datos en un arreglo.
4. Ayudandose de los valores de voltaje de umbral, convertir y unir los datos del arreglo en un formatoen
decimal.
5. Entregar un arreglo con los tiempos de captura.
6. Entregar el arreglo decimal.
Abstract:
State machine: No
Associations:
No
<no rolenames : Ingeniero in association
Use Case name:
Despliegue de datos numericos.
Category:
Documentation:
Use Case View
Pasos:
1. Recibir datos de entrada.
2. Convertir los datos de entrada a formato hexadecimal y binario.
3. Presentar en pantalla los resultados.
Abstract:
State machine:No
Associations:
No
<no rolename> : Ingeniero in association
Use Case name:
Despliegue de grafica de los datos.
Page 2
Category:
Documentation:
Pasos:
Use Case View
l . Recibir datos capturados.
2. Mostrar los datos.
Abstract:
State machine: No
Associations:
No
<no rolename7 : Ingeniero in association
Use Casename:
Guardar Resultados a fichero.
Case
View
Use
Category:
Documentation:
Pasos:
1. Recibe arreglo de datos capturados.
2. Guarda los datos a un archivo con extension.UAM
Abstract:
State machine: No
Associations:
No
<no rolename>: Ingeniero in association
Use Case name:
Guardar configuracion a fichero.
View Case
Use
Category:
Documentation:
Pasos:
1. Reunir todos los datos de la configuracion.
2. Guardar datos de la configuracionun
a fichero con extension .CFG
Abstract:
State machine: No
Associations:
No
<no rolename> : Ingeniero in association
Use Case name:
Imprimir Resultados.
View Case
Use
Category:
Page 3
Documentation:
Pasos:
1. Configurar impresion.
2. Imprimir.
Abstract:
State machine:No
Associations:
No
<no rolename> : Ingeniero in association
Association:
Derived:
Direction:
Association
Class:
No
<non-directional>
none
Role:
Use Case:
Configuracion deCaptura
la
Cardinality/ Multiplicity:
Navigable:
YeS
Aggregate:
No
Static:No
friend:
No
Access:
Public
Containment:
Unspecified
Analogica
Role:
C/ass:lngeniero
Cardinality/ Multiplicity:
Navigable:
No
Aggregate:
No
Static:No
Friend:
No
Access:
Public
Containment:
Unspecified
Association:
Derived:
Direction:
Association
Class:
No
enon-directional>
none
Role:
Use Case:
Captura
de
datos digital-.
Cardinality/ Mukiplictty:
Navigable:
YeS
Aggregate:
No
Static:No
friend:
No
Public
Access:
Containment:
Unspecified
Page 4
Role:
C1ass:lngeniero
Cardinaldy / Mult@icity:
Navigable:
No
Aggregate:
No
Static:No
No
friend:
Access:
Public
Containment:
Unspecified
Association:
Derived:
No
cnon-directional>
Direction:
Association
Class:
none
Role:
Use
Case:
Captura
datos
deanalogicos.
Cardinality/ Multiplicity:
Yes Navigable:
Aggregate:
No
Static:No
Friend:
No
Access:
Public
Containment:
Unspecified
Role:
C1ass:lngeniero
Cardinality/ Multiplicity:
Navigable:
No
Aggregate:
No
Static:No
Friend:
No
Access:
Public
Containment:
Unspecified
Association:
Derived:
No
Direction:
<non-directional>
none
Association
Class:
Role:
Use
Case:
Despliegue
Cardinality / Multiplicity:
Yes Navigable:
Aggregate:
No
Static:No
Friend:
No
Access:
Public
Containment:
Unspecified
de datos
numericos.
Role:
C1ass:lngeniero
Page 5
Cardinal@1Multiplic@:
Navigable:
No
Aggregate:
No
Static:No
Friend:
No
Access:
Public
Containment:
Unspecified
Association:
Derived:
No
<non-directional>
Direction:
none
Association
Class:
Role:
Use Case:
Despliegue
de
grafica
de
Cardinality/ Multiplicity:
Navigable:
YeS
Aggregate:
No
Static:No
Friend:
No
Access:
Public
Containment:
Unspecified
los datos.
Role:
C1ass:lngeniero
Cardinality / Multiplicity:
Navigable:
No
Aggregate:
No
Static:No
Friend:
No
Access:
Public
Containment:
Unspecified
Association:
Derived:
No
<non-directional>
Direction:
none
Association
Class:
Role:
Use
Case:
Guardar
Resultados
Cardinality/ Muttiplicity:
Navigable:
YeS
Aggregate:
No
Static:No
Friend:
No
Access:
Public
Containment:
Unspecified
a fichero.
Rok:
Class:lngeniero
Cardinality/ Multiplicity:
Navigable:
No
Page 6
Public
Aggregate:
Static:No
Friend:
Access:
Containment:
Unspecified
No
No
Association:
Derived:
No
Direction:
<non-directional>
none
Association
Class:
Role:
Use Case:
Guardar
configuracion
Cardinality/ Muffiplicity:
Navigable:
Yes
Aggregate:
No
Static:No
Friend:
No
Access:
Public
Containment:
Unspecified
a fichero.
Role:
C1ass:lngeniero
Cardinality/ Muffiplicify:
Navigable:
No
Aggregate:
No
Static:No
Friend:
No
Access:
Public
Containment:
Unspecified
Association:
Derived:
No
Direction:
enon-directional>
Association Class:
none
Role:
Case:
Use
Imprimir Resultados.
Cardinality / Muffiplicity:
YeS
Navigable:
Aggregate:
No
Static:No
Friend:
No
Access:
Public
Containment:
Unspecified
Role:
C1ass:lngeniero
Cardinality/ Multiplicity:
No
Navigable:
Aggregate:
No
Static:No
Page 7
Friend:
Access:
Containment:
No
Public
Unspecified
Page 8
n
1: Iniciar Captura
4
oPantPrinc::cPantPrinc
I
0DiSCO::cDiSCO
oPCIMIO-16El::cPCI-MIO-16E1
\
7: Regresaro
IV
5: ArregloDecimal:ConviertaAD(ArregloVoHajes)
6: Write
oDisco::cDisco
I
oPantPrinc::cPantPrinc
File: A:\UAM12000,rndl Tue Apr 20 18:36:27 1999 Collaborati Diagram: Captura de datos analogicos. I Captura de datos analogicos. Page 2
I:
Iniciar Captura
_j
0PantPrinc::cPantPrinc
I
oDisco::cDisco
oPCIMIO-l6El::cPCIMI0-16El
6: Regresar 0
oDisco::cDisw
oPantPrinc::cPantPrinc
File: A:\UAM12000.mdl Tue Apr 20 18:36:27 1999 Collaboration Diagram: Captura de datos digitales. I Captura de datos digitales. Page 3
1: Configuracion
"3
oPantPrinc::cPantPrinq
5: Write
"3-
oDirc0::cDirco
oPantPrinc::cPantPrinc
File: A:\UAM12000,mdl Tue Apr 20 18:36:28 1999 Collaboration Diagram: Configuracion de la Captura Analogica I Confguracion de la Captura Analogi
I: Ver resuttados numerims
"i3
oPantPrinc::cPantPrinc
oCConversion::cConvsrsion
6: Regresar
v
oCConversion::cConversion
oPantPrinc::cPantPrinc
File: A:\UAM12000.rndl
Tue Apr 20 18:36:281999 Collaboration Diagram: Despliegue de datos numericos. I Despliegue de datos numericos. Page 5
1: Ver Grafica
-e3
0PantPrinc::cPantPrinc
I
2: Show (1
V
3:
--"It
I
I
5: Regresar
0PantPrinc::cPantPrinc
File: A:\UAM12000.mdl Tue Apr 20 18:36:28 1999 Collaboration Diagram: Despliegue de g r a f i de los datos. I Despliegue de grafica de los datos. Pa
1 : GuardarConfiguracion
I
olnaeniero
::ctnaeniero
”+
I
I
oPantPrinc::cPantPrinc
I
I
1
-
oDisco::cDisco
3: Aceptar
1-
olnaeniero ::cln
eniero
0CDialoaoGuardarr::cCDialoaoGuardar
I
5: Regresar
V
A
oPantPrinc::cPantPrinc
File: A:\UAM12000.mdl Tue Apr 20 18:36:28 I999 Collaboration Diagram: Guardar configuracion a fichero. / Guardar configuracion a fchero. Page 7
1: GuardarFichero
0PantPrinc::cPantPrinc
I
2:Show ( )
V
oDisco::cDisco
3: Aceptar
4
olnaeniero ::clnaeniero
oCDialoaoGuardar::cCDialoaoGuardar
I
V
5: Regresar
r"-l
oPantPrinc::cPantPrinc
File: A:\UAM12000.mdl Tue Apr 20 18:36:28 1999 Collaboration Diagram: Guardar Resultados a fichero. I Guardar Resultados a fichero. Page 8
1 : ImprimirResultados
oPantPrinc::cPantPrinc
olmDresora::clmDresora
I
2: Show ( )
V
4: Imprimir(Datos)
I
3: Aceptar
+
oCDialoaolm~rimir::cCDialoaolmDrirnir
oPantPrinc::cPantPrinc
File: A:\UAMl2000.mdl Tue Apr
20 18:36:291999 Collaboration Diagram: Imprimir Resultados. I Imprimir Resultados. Page 9
m
Iniciar Captura
loDatos:capturaq .
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
r
I
I
I
T
I
I
ReadConf
I
I
I
I
I
I
Procs
I
I
\I
I
I
I
ArregloDecirnal:ConvierteAD(ArregloVdtajes) I
U
I
Regresar(
I
I
I
7
I
I
I
I
I
I
I
I
I
I
I
\ I
I
I
I
I
I
I
I
I
I
I
I
;
l
i
l
I
I
I
I
I
I
File: A:\UAM12000.rndl Tue Apr 20 18:36:29 1999 Sequence Diagram: Captura de datos analogicos. I Captura de datos analogicos. Page 1O
Iniciar Captura
&“+Ti
U
il
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
ArregloDatos:CapturaDatos(
I
\ L
LT
I
I
I
Pros
I
I
I
1L
I
F
I
I
I
I
I
I
I
\I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
File: A:\UAM12000.mdl Tue Apr 20 18:36:29 1999 Sequence Diagram: Captura de datos diglales. I Captura de datos diglales. Page 1 1
Use Case 1.
,
I
I
I
I
I
I
Configuracio
I
I
I
.+
Show
\
I
o
I
I
1
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
Writ
I
I
I
I
I
I
3
I
File: A:\UAM12000.mdl Tue Apr 20 18:36:29 1999 Sequence Diagram: Configuracion de la Captura Analogica I Configuracion de la Captura Analogic
olnaeniero ::c
0PantPrinc::c
oPantDesp1Nurn::CPant
DesplNum
numericos Ver resultados
I
F
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
1
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I/
I r
Y
I
I
I
I
I
I
I
File: A:\UAM12000.mdl Tue Apr
Show ( )
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
1
I
-T
I
Read(ArregloDecimal,Tiempo)
I
ArregloBinario:ConvierteBin(Arreglo
rl”--%
ArregloHexadecirnal:ConvierteHex(Arreglo
J
Regresa
T
u
I
\I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
20 183629 1999 Sequence Diagram: Despliegue de datos numericos. / Despliegue de datos numericos. Page 13
oClmDrimeGrafica::cClmwime
Grafiw::CPant
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
File: A:\UAM12000.mdl Tue Apr
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
Read(ArregloDecimal,Tiempo)
ImprimeDatos(Arreg1o
7
Regresa
7’
-
I
\I
I
I
I
I
I
I
I
I
I
I
\I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
20 18:36:29 1999 Sequence Diagram: Despliegue de grafica de los datos. / Despliegue de grafica de los datos. Page
oCDia1oaoGuardarr::cCDialoaoGuardar
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
Show (
Acepta
I
I
I
I
I
I
I
I
I
I
I
I
,,
,
Regresa
Write(Configuracio
~
1,
l
-
I
I
I
I
I
I
I
I
I
I
I
File: A:\UAM12000.rndl Tue Apr 20 18:36:29 1999 Sequence Diagram: Guardar configuraciona fichero. I Guardar configuracion a fichero. Page 15
oCDia1oaoGuardar::c
oDisco::cDisco
CDialoaoGuardar
l
GuardarFichero
File: A:\UAM12000.mdl Tue Apr
I
I
I
20 18:36:30 1999 Sequence Diagram: Guardar Resultados a fichero. I Guardar Resultados a fichero. Page 16
I
I
I
IrnprimirResultados
I
Acepta
I
I
Irnprirnir(Datos)
I
I
I
I
I
I
legresa
I
I
I
LJ
File: A:\UAM12000.mdl Tue Apr 20 18:36:301999 Sequence Diagram: Imprimir Resultados. I Imprimir Resultados. Page 17
cerca-De
- 1
r i v a t e Sub OK Boton-Click()
c e r c a De. Hidend SUE
GuardaConf - 3
Forml.cboVu.Enab1ed = False
Forml.lblMs.Enabled = False
Forml.lblVu.Enabled = False
nd Sub
()
ublic Sub analogica
Forml.cboMs.Enabled =
Forml.cboVu.Enabled =
Forml.lblMs.Enabled =
Forml.lblVu.Enabled =
nd Sub
ublic
Function
True
True
True
True
valida
( ) As Integer
1ngPalabra = -1
<> "x" Then
If Forml. txtPalabra. Text
palabra hex= Trim(Forml.txtPa1abra.Text)
palabraIhex = "&H" C palabra-hex
hex)
1ngPalabra = Val (palabra
End If
If (Val(Forml.cboNc.Text) = O ) Then
msg = MsgBox("1ntroduzca un valor en 'Número
de canales'", vbOKOnly, "Errorde configuración
1
Forml.cboNc.SetFocus
valida = 1
Exit Function
ElseIf (IngPalabra = O ) Then
msg = MsgBox("1ntroduzca un valor en 'Palabrade disparo'", vbOKOnly, "Errorde configuració
)
Forml.txtPalabra.SetFocus
valida = 1
Exit Function
ElseIf (Val(Forml.cboMs.Text) <= 1) Then
msg = MsgBox("1ntroduzca un valor numerico mayor que uno en 'Muestras/seg.
canal"',
por
vbOK
nly, "Error de configuración")
Forml.cboMs.SetFocus
valida = 1
Exit Function
ElseIf (Val(Forml.cboNm.Text) <= 1 Or Val(Forml.cboNm.Text) > 1000) Then
msg = MsgBox("1ntroduzca un valor numerico mayor que uno y menor
1000
queen I # de muestras
3r canal I
vbOKOnly, "Errorde configuración")
Forml.cboNm.SetFocus
valida = 1
Exit Function
End If
If Forml.Optionl(O).Value = True Then
If (Val(Forml.cboNc.Text) > 8) Then
msg = MsgBox("Imposib1e leer en mas
de 8 canales", vbOKOnly, "Errorde configuración")
Forml.
cboNc.
SetFocus
valida = 1
Exit Function
End If
Else
If (Val(Forml.cboNc.Text) > 16) Then
msg = MsgBox ("Imposible
leer en mas de 16 canales", vbOKOnly, "Error
de configuración")
Forml.cboNc.SetFocus
valida = 1
Exit Function
End If
End If
If (IngPalabra > (2 Val(Form1.cboNc.Text) - 1)) Then
msg = MsgBox("E1 tamañode la palabra no es valido", vbOKOnly, "Error
de configuración"1
Forml.txtPalabra.SetFocus
valida = 1
Exit Function
ElseIf (Val(Forml.cboMs.Text) > 500000 / Val(Form1.cboNc.Text)) Then
* segundo", vbOKOnly, "Errorde c
msg = MsgBox("No es posible obtener dicho número muestras
nfiguración")
'I,
GuardaConf - 4
Forml.cboMs.SetFocus
valida = 1
Exit Function
ElseIf (Forml.Optionl(l).Value = True And Val(Forml.cboNm.Text)> 231 / Val(Forml.cboNc.Text))
Then
Forml.cboNm.SetFocus
valida = 1
Exit Function
End If
valida = O
nd Function
ublic Function valida20 As Integer
1ngPalabra = -1
If Forml
.Txtpalabra2. Text
<> "x" Then
palabra hex = Trim(Forml.Txtpalabra2.Text)
palabrarhex = "&H" & palabra hex
lngPalabra = Val (palabra-hex7
End If
If (Val(Forml.CboNc2.Text) = O ) Then
de configuración
msg = MsgBox("1ntroduzca un valor en 'Número de canales'", vbOKOnly, "Error
)
Forml.CboNc2.SetFocus
valida2 = 1
Exit Function
ElseIf (IngPalabra = O ) Then
msg = MsgBox("1ntroduzca un valor en 'Palabra de disparo'", vbOKOnly, "Error de configuraci
)
Forml.Txtpalabra2.SetFocus
valida2 = 1
Exit Function
ElseIf (Val(Forml.CboMs2.Text) <= 1 Or Val(Forml.CboNm2.Text) > 1000) Then
msg = MsgBox("1ntroduzca un valor numerico mayor que uno y menor
1000que
en 'Muestras/seg.
or canal
vbOKOnly, "Error de configuración")
Forml.CboMs2.SetFocus
valida2 = 1
Exit Function
ElseIf (Val(Forml.CboNm2.Text) <= 1) Then
msg = MsgBox("1ntroduzca un valor numerico mayor que uno I en
# de
muestras porcanal"', vbOK
nly, "Error de configuración")
Forml.
CboNm2.
SetFocus
valida2 = 1
Exit Function
End If
If Forml.Option3(0).Value = True Then
If (Val(Forml.CboNc2.Text) > 8) Then
8 canales", vbOKOnly, "Errorde configuración")
msg = MsgBox("1mposible leer en mas de
Forml.CboNc2.SetFocus
valida2 = 1
Exit Function
End If
Else
If (Val(Forml.CboNc2.Text) > 16) Then
msg = MsgBox ("Imposible leer en mas16de
canales", vbOKOnly, "Errorde configuración")
Forml.CboNc2.SetFocus
valida2 = 1
Exit Function
End If
End If
If (IngPalabra > (2 Val(Forml.CboNc2.Text) - 1)) Then
vbOKOnly, "Error de configuración")
es
msg = MsgBox("E1 tamaño de la palabra novalido",
'I,
Forml.Txtpalabra2.SetFocus
valida2 = 1
Exit Function
ElseIf (Val(Forml.CboMs2.Text) > 500000 / Val (Forml.CboNc2.
Text
) ) Then
'GuardaConf- 5
msg = MsgBox("No es posible obtener dicho número muestras
* segundo", vbOKOnly, "Error de c
nfiguración")
Forml.CboMs2.SetFocus
valida2 = 1
Exit Function
ElseIf (Forml.Option3(1).Value = True And Val(Forml.CboNm2.Text)> 231 / Val(Forml.CboNc2.Text
) Then
msg = MsgBox("No es posible alamcenar tal número de muestras", vbOKOnly, "Error de configura
ión")
Forml.CboNm2.SetFocus
valida2 = 1
Exit Function
End If
valida2 = O
nd
Function
ublic Sub abrir()
Dim dir As String
On Error GoTo errores
Forml.Abrir conf.CancelError = True
Form1
.Abrir-conf.
ShowOpen
name = Formi.Abrir-conf.filename
dir = Forml.Abrir-conf.InitDir
name = name
Open (name) For InputAs #3
Input #3, strFormato, intcanales, intTambuffer, lngmuestrasxseg, bolTipocap, strPalabra, CurUm
ral, bolTipolog
If (strFormato = "Comenzo en biacrusis") Then
Forml.CboMs2.Text = lngmuestrasxseg
Forml.CboNc2.Text = intcanales
Forml.CboNm2.Text = intTambuffer
Forml.CboVu2.Text = CurUmbral
Forml.Txtpalabra2.Text = strPalabra
Forml.Option3(0).Value = Not bolTipocap
Forml.Option3(1).Value = bolTipocap
Forml.Option4(0).Value = Not bolTipolog
Forml.Option4(1).Value = bolTipolog
Forml.LblNombre.Caption = name
Forml.LblNombre.Visible = True
Close 3
Exit Sub
Else
msg = MsgBox(("E1 archivo de configuración & name & ' ' I no es formato UAMI2000o esta da
sdo.*') , vbOKOnly, "Errorde configuración")
Close 3
End If
'I1
rrores :
If Err <> 32755 Then
msg = MsgBox ( ("Se produjoun error
configuración")
End If
Forml.SSTabl.Tab = O
nd Sub
ublic Sub
Dim
()
como
dirAs String
On Error GoTo errores
Forml.Abrir-conf.CancelError = True
Forml.Abrir conf.ShowSave
name = Formi.Abrir conf.filename
dir = Forml.Abrir-zonf.InitDir
al
abrir
el
archivo
'"
&
name
&
I"
.
'I)
, vbOKOnly, "Error d
GuardaConf - 6
rrores :
If Err = 32755 Then
Forml.SSTabl.Tab = O
End I f
End Sub
GuardarArchivo - 1
ublic Sub GuardarArchivo
()
n Error GoTo errores
enuPrinc.Dialogo.Cance1Error = True
e n u F r i n ~ . D i a : ~ g o . F i i ~=~ ~"A~ciifvosirami2000 (*.üatnj iq.UafijTOd6S 10s arclifttos {*:*)
enuPrinc.Dialogo.Defau1tExt = uam
enuPrinc.Dialogo.ShowSave
o d r e = MenuPrinc.Dialogo.filename
ileCopy "c: \windows\uamiZOOO\Data", nombre
rrores :
nd
Sub
j*
Imprimir - 1
ublic Sub datos(inici0 As Integer, Final As Integer)
Dim mensaje As String
Dim start As Integer
Dim notermine As Boolean
notermine
=
True
On Error GoTo Rutina-Errores
MenuPrinc.Dialogo.Cance1Error
=
True
MenuPrinc.Dialogo.ShowPrinter
LEFTO = Printer.ScaleLeft
TOPO = Printer.ScaleTop
Printer.ScaleLeft = -500
Printer.ScaleTop = -500
mensaje =
MUESTRAS
Frmdata.Data.Row
=
For
=
mensaje
+
LOS
DATOS
CAPTURADOS"
+
Chr(l3)
+
Chr(l3)
O
For i = O To 3
Frmdata.Data.Co1 = i
mensaje = mensaje +
Next i
mensaje
DE
I'
'I
Chr(l3)
+
+
Frmdata.Data.Text
Chr(l3)
start= inicio To Final
mensaje = mensaje + Chr(l3)
Frmdata.Data.Row = start
For i = O To 3
Frmdata.Data.Co1 = i
mensaje = mensaje +
Next i
'I
+
Frmdata.Data.Text
Next start
Printer. Font
= "Arial"
Printer.FontSize = 10
Printer.Print
DoEvents
mensaje
Printer.ScaleLeft = LEFTO
Printer.ScaleTop = TOPO
Printer.EndDoc
MsgBox "Datos enviados a la impresora", vbInformation, "Mensaje"
Exit Sub
utina-Errores:
f Err = 32755 Then
Resume fin
lse
msg =
Ha ocurrido el error
+ Str$ (Err) + imprevisto en la impresion, revisar impresora"
MsgBox msg, vbExclamation, "Errorde Impresion"
Resume fin
nd If
in :
:Imprimir - 2
:nd Sub
ublic
,im
Sub
Grafica
()
mensaje
As Variant
In Error GoTo Rutina
- Error
:enuPrinc.Dialogo.CancelError = True
':enuPrinc.Dialogo.ShowPrinter
rinter. Font
= "Arial"
'rinter.FontSize = 16
,EFT0= Printer.ScaleLeft
'OPO = Printer.ScaleTop
rinter.ScaleLeft = -2550
rinter.ScaleTop = - 9 8 0
rawWidth = 1
rinter.Line ( O , O)-Step(Señal.PictData.Width, Señal.PictData.Height), , B
rinter.Line ( O , 1000) -Step (Señal. PictData.O) Width,
rinter.CurrentX = (Señal.PictData.Width - Printer.TextWidth("señal'*)) / 2
= (1000 - Printer. TextHeight
( "Señal")) / 2
rinter. CurrentY
rinter.ScaleLeft = -1500
rinter.ScaleTop = - 5 8 0
'or i = O To Señal.Controls.Count - 1
If TypeOf Señal.Controls(i) I s Label Then
dibujaretiqueta Señal.Controls(i)
End If
ext i
rinter.ScaleLeft = -2550
rinter.ScaleTop = - 9 9 0
rinter.PaintPicture Señal.PictData.Image, 1, 1
oEvents
rinter.ScaleLeft = LEFT0
rinter.ScaleTop = TOPO
rinter.EndDoc
utina-Error:
f Err = 32755 Then
Resume Final
lse
msg =
Ha ocurrido el error + Str$ (Err) +
imprevisto en la impresion, revisar impresora"
MsgBox msg, vbExclamation, "Errorde Impresion"
Resume Final
nd If
'I
inal:
nd
Sub
Imprimir - 3
rivate Sub dibujaretiqueta(ctr1 As Control)
Dim
Dim
alto As Integer
anchoAs Integer
Printer.FontBold = ctrl.FontBold
Printer.FontItalic = ctrl.FontItalic
Printer.FontSize = ctrl.FontSize
alto = Printer.TextHeight(ctrl.Caption)
ancho = Printer.TextWidth(ctrl.Caption)
If ctrl.BorderStyle = 1 Then
DrawWidth = 2
Printer.CurrentX = ctrl.Left - 100
Printer.CurrentY = ctr.Top
Printer.Line -Step(ctrl.Width, ctrlHeight),
End If
,B
Printer.CurrentY = ctrl.Top
Select Case ctrl.Alignment
Case O
Printer.CurrentX = ctrl.Left
Case 1
Printer.CurrentX = ctrl.Left - (ctrl.Width - ancho)
Case 2
Printer.CurrentX = ctrl.Left + ((ctrl.Width - ancho) / 2)
End Select
Printer.Print ctrl.Caption
:nd Sub
'rivate Sub dibujarimagen(ctr1 As Control)
Dim pixel, fila, posx, posy, scrx, scry As Integer
Dim colorAs Long
scrx = Screen.TwipsPerPixelX
scry = Screen.TwipsPerPixe1Y
ctrl.ScaleMode = 2
For fila = O To (ctrl.ScaleHeight - 1)
posy = ctrl.Top + (fila * scry)
For pixel = O To (ctrl.ScaleWidth - 1 )
posx = ctrl.Left + (pixel * scrx)
color = ctrl. Point (pixel, fila)
color, BF
Printer.Line (posx, posy) -Step (scrx, , scry)
Next pixel
DoEvents
Next fila
End Sub
'orml - 1
ption Explicit
im ocGuardaConf As New cGuardaConf
rivate
Sub
-Click()
CmdAceptar
Dim iAs Integer
If ocGuardaConf.valida = O Then
i = ocGuardaConf.guarda()
Forml.Hide 'Tal vez sea necesario destruir esta opción.
End If
nd
Sub
rivate
Sub
CmdAceptar2
-Click0
Dim iAs Integer
If ocGuardaConf.valida2= O Then
()
i = ocGuardaConf. guarda2
Forml.Hide 'Tal vez sea necesario destruir esta opción.
End If
nd Sub
rivate
orml.
Sub
CmdCancelar2
-Click()
Hide
nd Sub
rivate Sub Cmdguardar-Click()
cGuardaConf.como
nd Sub
rivate Sub Commandl-Click()
cGuardaConf.por-omision2
nd Sub
rivate Sub Command2-Click()
Forml.Hide
nd Sub
rivate
Sub
Command4
-Click()
cGuardaConf.por-omision
nd Sub
rivate
Sub
Form
Load()
ocGuardaConf.inicia1iza
nd Sub
rivate Sub Optionl-Click(1ndexAs Integer)
If Index = O Then
ocGuardaConf.digita1
Else
ocGuardaConf.analogica
End If
nd Sub
rivate
Dim
Sub
SSTabl
-Click(PreviousTab As Integer)
auxlAs Boolean
'orml - 2
Dim aux2 As Boolean
I f PreviousTab = O Then
Forml.CmdAceptar.Defau1t = False
Forml.CmdAceptar2.Default = True
ocGuardaConf.abrir
Else
Forml.CmdAceptar.Defau1t = True
Forml.CmdAceptar2.Default = F a l s e
End I f
nd Sub
'rmdata - 1
rivate
Dim
Dim
Dim
Dim
Sub Buscar Click()
oclAs cCBugcar
fila As Integer
nummuestrasAs Integer
columnaAs Integer
nummuestras
Set
=
100
ocl = New cCBuscar
If (Valor .Text
= "")
Then
MsgBox "Tiene que introducir un numero con el formato seleccionado en el campo de val
.bExclamation, "Error al buscar"
Else
If Optionl(O).Value= True Then
columna = 1
tipo =
DI*
Else
If Optionl(l).Value= True Then
columna = 2
tipo =
H"
Else
columna = 3
tipo =
B"
End If
End If
ocl.buscar Valor.Text & tipo, columna, nummuestras, fila
If (fila = O ) Then
MsgBox "Dato no fue encontrado", vbInformation, "Informacion"
Else
Data.Row = fila
Data.TopRow = fila
End If
End If
Set ocl = Nothing
nd Sub
rivate
Sub
Cerrar
-Click0
Frmdata.Hide
nd Sub
rivate
Sub
Valor
-KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Buscar- Click
End If
nd Sub
rmSplash - 1
lption Explicit
rivate Sub Timerl-Timer()
Unload frmSplash
Timerl.Enabled = False
MenuPrinc.Show
,nd Sub
enuPrinc - 1
ption
Explicit
rivate Sub Mabrir-Click()
Dim oCAbrirAs cAbrirArchivo
Set
oCAbrir= New cAbrirArchivo
BarraEstado.Panels(2).Text = "Indicar
oCAbrir
.AbrirArchivo
BarraEstado.
Set
el nombre del archivo UAMI-2000"
Panels
(2).Text
=
""
oCAbrir= Nothing
nd Sub
rivate Sub Macerca-Click()
.cerca-De.Show
nd Sub
rivate
Sub
MCascada
-Click()
MenuPrinc.Arrange
vbCascade
nd Sub
rivate Sub Mconfigurar-Click()
BarraEstado.Panels(2).Text = "Configurar Captura de la tarjeta PCI-16E-1"
Forml.Show
nd Sub
()
rivate Sub MDIForm-Load
Dim nombre As String
Open "c:\windows\uami2000\nomconf.nom" For Input As#1
Input # 1 , nombre
Close #1
FileCopy nombre, "c:\windows\uami2000\param.cf"
nd Sub
rivate
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Sub
MGrafica
-Click()
muestrasxseg As Long
nummuestras As Integer
numbits As Integer
totalmuestras As Integer
tipolog As Boolean
volref As Double
i As Integer
tempo
validacion As String
Dim arreglodeco As Long
Dim arreglobino As String
Dim arreglohexo As String
Open "c:\windows\uami2000\data" For Input As#1
Input # 1 , validacion, nummuestras, numbits, muestrasxseg', volref, tipolog
ReDim arreglodec(nummuestras)
ReDim arreglohex(numuestras)
ReDim arreglobin(nummuestras)
enuPrinc - 2
For i = O To nummuestras - 1
Input # 1 , arreglodec(i)
Next i
For i = O To numuestras - 1
Input #1, arreglobin (i)
Next i
For i = O To nummuestras - 1
Input #1, arreglohex(i)
Next i
Close #1
totalmuestras
=
nummuestras
*
numbits
Conversion a Binario para
10 canales
Dim
oc3
As
cImprimeGrafica
Set oc3 = New
cImprimeGrafica
Señal.Tiempo.Max
=
nummuestras
Señal.Tiempo.LargeChange = Int((1 / nummuestras)
Señal.Tiempo.SmallChange = Int((1 / nummuestras)
*
*
10000)
1000)
If nummuestras <= 100 Then
Señal.Tiempo.Visible = False
Señal.Tiempo.Enab1ed = False
oc3.Grafica arreglodec, O, nummuestras, numbits, tipolog
Else
Señal.Tiempo.Visible = True
Señal.Tiempo.Enabled = True
oc3.Grafica arreglodec, 1 , 100, numbits, tipolog
End If
Set oc3 = Nothing
tempo
= 1
/ muestrasxseg
For i = O To 4
Señal.LabTime(i) .Caption
= Format(Str(temp0 * i), "0.000000")
Next i
Señal.Show
MImprimirGrafica.Enabled
Señal.
nd
=
True
SetFocus
Sub
rivate Sub Mguardar-Click()
Dim
oCGuardar
As
cGuardarArchivo
Set
oCGuardar= New cGuardarArchivo
BarraEstado.Panels(2).Text = "De el nombre del archivo a guardar"
oCGuardar.GuardarArchivo
Set
oCGuardar= Nothing
:enuPrinc - 3
;nd Sub
rivate
Sub
MImprimirDatos
-Click0
Dim oclAs cImprimir
Dim inicioAs String
Dim FinalAs String
Dim inicAs Integer
Dim finAs Integer
Set
ocl = New cImprimir
inicio = InputBox("Numero de la muestra de Inicio de Impresion", "Limites de las muestras
primir?")
If inicio = '''' Then
Exit Sub
End If
inic = Val
(inicio)
Final = InputBox("Numero de la muestra del final de Impresion", "Limites de las muestras a I
)
rimi r?
If Final =
Exit Sub
End If
I"'
Then
fin = Val ( Final)
While fin < inic
MsgBox "El numero de la muestra de inicio debe ser menor que la final", vbExclamation,
or en Limites"
Final = InputBox("Numero de la muestra del final de Impresion", "Limites de las muestra
Imprimir?")
If Final = " " Then
Exit Sub
End If
fin = Val (Final)
Wend
ocl
.datos
inic,
fin
Set ocl = Nothing
nd Sub
rivate
Sub
MImprimirGrafica
-Click0
im ocl As cImprimir
et
ocl = New cImprimir
cl.Grafica
et ocl = Nothing
nd Sub
rivate
Sub
Miniciar-Click()
im longitud As Integer
im intervaloAs Integer
( ) As Double
'im datos
As Double
'im samplesxseg
im nummuestraAs Integer
[enuPrinc - 4
lim
lim
lim
km
km
lim
lim
km
numcan As Integer
tipo As Boolean
pal-disparo As String
nomconf As String
tipolog As Boolean
volref As Double
i As Integer
validacion As String
k m datadec() As Long
k m datahex() As String
lim databin() As String
,arraCaptura( O ).Visible
=
True
;arraEstado.Panels(Z).Text
=
'or i = O To 10
BarraCaptura(O).Value
'ext i
i
=
"Configurando la tarjetaPCI-MIO-16E-1"
lpen "c:\windows\uami2000\param.cf" For Input As #1
nput #1, validacion, numcan, nummuestra, samplesxseg,tipo, pal-disparo, volref, tipolog
lose 1
.eDim datos (nummuestra
* numcan)
.eDim datadec (nummuestra)
.eDim datahex (nummuestra)
.eDim databin (nummuestra)
Capturar Datos del Exterior
'or i = 11 To 25
Barracaptura ( O ).Value = i
ext i
f (tipo = True) Then
Dim oCaplAs cCapturaAnalogica
Set oCapl= New cCapturaAnalogica
numcan,
oCapl.CapturaDatosA datos, samplesxseg, nummuestra,
Set
oCapl= Nothing
Dim
oConvlAs cConversion
Set
oConvl= New cConversion
pal
-disparo
oConv1.Conversion datos, nummuestra* numcan, nummuestra, datadec, databin, datahex, numcan,
.olref
Set oConvl= Nothing
lse
Dim oCap2As cCapturaDigita1
Set oCap2= New cCapturaDigita1
oCap2.CapturaD datadec, nummuestra, pal-disparo
Set oCap2= Nothing
Dim
oConv2As cConversion
Set
oConv2= New cConversion
oConv2.Hexadecimal datadec, datahex, nummuestra
oConv2.Binario datadec, nummuestra, databin, numcan
[enuprinc - 5
Set oConv2= Nothing
:nd If
'or i = 26
To70
Barracaptura ( O ).Value
=
i
'ext i
Convertir arreglo de muestras mezcladas en uno
solo
'pen
"c:
\windows\uami2000\data"
For
Output
As #1
'rite # 1 , "Comenzo el Biacrucis", nummuestra, numcan, samplesxsegI , tipolog, volref
'or i = O To nummuestra - 1
Write #1, datadec (i)
ext i
'or i = O To nummuestra - 1
Write # 1 , databin (i)
ext i
'or i = O To nummuestra - 1
Write #1, datahex (i)
ext i
lose #1
Numeros.Enabled = True
:Grafica.Enabled = True
oolbarl.Buttons.Item(l0) .Enabled = True
oolbarl.Buttons.Item(ll).Enabled = True
or i = 71 To 100
BarraCaptura(O).Value
=
i
ext i
MsgBox "B O L A
M U E R T A", vbOKOnly, "Captura finalizada"
arraCaptura(O).Visible = False
arraEstado.
Panels
(2).Text = "Captura
nd Sub
rivate Sub MMozaico-Click()
MenuPrinc.Arrange
vbTileVertica1
nd Sub
rivate Sub MNumeros-Click()
Dim Provisional (1600) As Double
Dim muestrasxsegAs Double
Dim nummuestras As Integer
Dim numbits As Integer
Dim totalmuestrasAs Integer
Dim tipolog As Boolean
Dim volrefAs Double
Dim i As Integer
Dim TiempoAs Double
finalizada"
IenuPrinc
Dim
-
6
validacionAs String
Dim arreglodeco As Long
Dim arreglobin ( ) As String
Dim arreglohexo As String
Open "c:\windows\uami2000\data" For InputAs #1
Input #1, validacion, nummuestras, numbits, muestrasxsegI , volref, tipolog
ReDim arreglodec(numuestras)
ReDim arreglohex(nummuestras)
ReDim arreglobin(nummuestras)
For i = O To nummuestras - 1
Input #1, arreglodec(i1
Next i
For i = O To numuestras - 1
Input # 1 , arreglobin (i)
Next i
For i = O To nummuestras - 1
Input #1, arreglohex(i)
Next i
Close #1
totalmuestras
Tiempo
= 1
=
nummuestras * numbits
/ muestrasxseg
Frmdata.SetFocus
Frmdata.Data.Rows = nummuestras
Frmdata.Data.Co1 = 1
Frmdata.Data.Row = O
Frmdata .Data. Text
= "Decimal"
Frmdata.Data.Co1 = O
Frmdata.Data.Row = O
Frmdata. Data. Text
= "Tiempo"
Frmdata.Data.Co1 = 2
Frmdata.Data.Row = O
Frmdata. Data. Text
= "Hexadecimal"
Frmdata.Data.Co1 = 3
Frmdata.Data.Row = O
Frmdata. Data. Text
= "Binario"
Frmdata.Data.Co1 = O
For i = 1 To nummuestras - 1
DoEvents
Frmdata.Data.Row = i
Frmdata.Data.Text = Format(Str(Tiemp0 * i), " 0 . 0 0 0 0 0 0 " )
Next i
Frmdata.Data.Co1 = 1
&
"
S"
[enuprinc - 7
For i = 1 To nummuestras- 1
DoEvents
Frmdata.Data.Row = i
= Str
Frmdata. Data.Text
(arreglodec - (i
1))
&
'I
D"
Next i
Frmdata.Data.Co1 = 2
For i = 1 To nummuestras - 1
DoEvents
Frmdata.Data.Row = i
Frmdata. Data .Text
= arreglohex (i - 1)
&
H"
Next i
Frmdata.Data.Co1 = 3
For i = 1 To nummuestras
-
1
DoEvents
Frmdata.Data.Row = i
Frmdata.Data.Text = Format (arreglobin(i- l), "0000000000000000")
&
B"
Next i
Frmdata.Data.ColWidth(0) =
Frmdata.Data.ColWidth(1) =
Frmdata.Data.ColWidth(2) =
(3) =
Frmdata. Data. ColWidth
1100
900
1200
2000
Frmdata.Show
MImprimirDatos.Enabled = True
nd
Sub
rivate
Dim
Sub
MSalir
-Click()
respuesta
respuesta = MsgBox
If respuesta= vbOK
End
End If
nd
("¿Seguro
desea
salir
de
UAMI-2000?",
vbOKCancel,
Then
Sub
rivate
Toolbarl
-ButtonClick(ByVa1
Sub
Select Case Button.Key
Case Is
=
"Abrir": 'Abrir
Mabrir-Click
Case Is = "Guardar":
Mguardar-Click
Case Is = "ImpGrafica":
ButtonAs ComctlLib.Button)
"Finalizar
sesion")
[enuPrinc - 8
MImprimirGrafica -Click
Case Is = "ImpDatos":
MImprimirDatos -Click
Case Is
=
"Configurar":
Mconfigurar -Click
Case Is
=
"Iniciar":
Miniciar-Click
Case Is
=
"Grafica":
MGrafica -Click
Case Is
=
"Numeros":
MNumeros -Click
Case Is = "Acerca":
Macerca-Click
End Select
:nd Sub
:eñal - 1
'rivate SubCerrar-Click0
Señal.Hide
hd Sub
'rivate
Sub
Tiempo-Change
()
Dim muestrasxsegAs Double
Dim nummuestrasAs Integer
Dim numbitsAs Integer
Dim totalmuestrasAs Integer
Dim tipologAs Boolean
Dim arreglodeco As Long
Dim arreglobino As String
Dim arreglohex()As String
tipolog = True
Open "c:\windows\uami2000\data" For Input As #1
Input #1, validacion, nummuestras, numbits, muestrasxseg, volref, tipolog
ReDim
ReDim
ReDim
arreglodec(nummuestras)
arreglohex(nummuestras)
arreglobin(nummuestras)
For i = 0 To nummuestras - 1
Input #1, arreglodec (i)
Next i
For i = 0 To nummuestras - 1
Input # 1 , arreglobin (i)
Next i
For i = O To nummuestras - 1
Input #1, arreglohex(i)
Next i
Close #1
totalmuestras = nummuestras * numbits
Dim oc2As cImprimeGrafica
Set
oc2= New cImprimeGrafica
If ((nummuestras - Tiempo.Value) >= 100) Then
oc2.Grafica arreglodec, Tiempo.Value, Tiempo.Va1ue + 100, 16, tipolog
tempo
=
1 / nummuestras * Tiempo.Value
For i = O To 4
Señal.LabTime(i) .Caption= Format (Str(tempo
+ ( 1 / 1 0 0 ) * i), "0.000000")
Next i
Else
oc2.Grafica arreglodec, Tiempo.Value, nummuestras - 1, 16, tipolog
tempo = 1 / nummuestras * Tiempo.Value
For i
=
O To 4
leña1 - 2
Señal.LabTime ( i ).Caption
Next i
End I f
Set o c l = Nothing
:nd Sub
=
Format
(Str
(tempo
+ ( 1 / 100)
*
i ) , "O. 000000")
4brirArchivo - 1
ublic Sub AbrirArchivo
()
im cadval As String
n Error GoTo errores
2nuPrinc.Dialogo.CancelError = True
2nuPrinc.Dialogo.Filter = "Archivos Uarni2000 (*.uam)I*.uamlTodos los aerchivos ( * , * ) I * . * "
2nuPrinc.Dialogo.DefaultExt = uam
?nuPrinc.Dialogo.ShowOpen
mbre = MenuPrinc.Dia1ogo.filename
?en MenuPrinc.Dialogo.fi1ename For Input As #1
nput #1, cadval
f cadval = "Comenzo el Biacrucis" Then
lose #1
ileCopy nombre, "c: \windows\uamiZOOO\Data"
2nuPrinc.MNumeros.Enabled = True
2nuPrinc.MGrafica.Enabled = True
snuPrinc.Toolbarl.Buttons.Item(lO).Enabled = True
2nuPrinc.Toolbarl.Buttons.Item(ll).Enabled = True
Lse
d e Archivo"
sgBox "El archivo no es formato Uami2000", vbExclamation, "Error
Lose #1
Id If
rrores :
Id Sub
CapturaAnalogica - 1
ption
Explicit
ublic Function CapturaDatosA(datos()As Double, samplesxsegAs Double, nummuestraAs Integer, n
mcan As Integer, pal-disparo As String) As Integer
OperacionAsinc
datos,
samplesxseg,
numcan,
nummuestra,
pal
-disparo
nd Function
........................................................................
Funcion : OperacionAsinc
DESCRIPTION: The main NI-DAQ operations are here
........................................................................
rivate Sub OperacionAsinc(datos() As Double, samplesxseg
As Double, numcan As Integer, numuest
a As Integer, pal-disparo As String)
I
'
Declaracion de Variables Locales
Dim
istatus As Integer
'Estado
de
la
captura
Dim iRetValAs Integer
se usa
DimiDevice As Integer'Numerodedispositivoque
As Integer
' Canales
Dim
iChan
As Integer
'Ganancia
en
DB
Dim
iGain
Dim
dSampRate As Double
'Razon
de
Muestre0
Dim
dScanRate As Double
'Razon
de
lectura
As Long
'Numero
Muestras
de
Dim
ulCount
Dim dGainAdjustAs Double
As Double
'Offset
doffset
Dim
Dim iUnitsAs Integer
Dim iSampTBAs Integer
Dim uSampIntAs Integer
Dim iScanTBAs Integer
Dim uScanIntAs Integer
l o s datos
Dim piBuffer() As Integer 'Vector para guardar
'capturados
Dim pdVoltBuffer0 As Double 'Vector para guardar los datos
'capturados en un mejor formato
Dim iDAQstoppedAs Integer
Dim ulRetrieved As Long
Dim iNumMUXBrdsAs Integer
As Integer
'Numero
canales
de
Dim
iNumChans
Static piChanVect() As Integer 'Vector de canales
Static piGainVect0 As Integer 'Vector de ganacias
Dim iIgnoreWarningAs Integer
Dim iYieldON As Integer
Dim iAs Long
On Error GoTo errores:
iDevice8 = 1
iChan8 = 1
iGain8 = 1
dSampRate# = samplesxseg#
dScanRate# = O #
ulCount& = nummuestra * numcan
dGainAdjust# = 1#
doffset# = O #
iNumChans% = numcan%
ReDim pdVoltBuffer(nummuestra* numcan)
ReDim piBuffer(nummuestra * numcan)
ReDim piChanVect(numcan)
CapturaAnalogica - 2
ReDim
piGainVect(numcan)
Inicializacion de los canales y su ganancia
For i = O To numcan - 1
piChanVect8 (i) = i
Next i
For i = O To numcan - 1
piGainVect% (i) = 1
Next
i
Convertir la razonde muestreo (Muestras/Seg) a valores
de tiempo
base e intervalos de muestreo.
istatus% = DAQ-Rate(dSampRate#,
iUnits%,
iSampTB%,
uSampInt%)
DAQ-Rate(dScanRate#,
iUnits8,
iScanTB%,
uScanInt%)
iStatus%
=
istatus% = SCAN-Setup(iDevice%, iNumChans%, piChanVect%(O), piGainVect%(O))
iRetVal% = NIDAQErrorHandler(iStatus8,
" S C A N -Setup",
iIgnoreWarning%)
Adquirir muestras de multiples canales.
istatus% = SCAN-Start(iDevice%,
nt8)
piBuffer%(O),
iRetVal% = NIDAQErrorHandler(iStatus8,
ulCount&,
" S C A N -Start",
iSampTB%,
uSampInt%,
iIgnoreWarning%)
While ((iDAQstoppedB <> 1) And (istatus% = O ) )
Hacer un cliclo hasta quetoda la adquisicion este completa
Es posible realizar otraslabores mientra se reliza esto.
istatus% = DAQ-Check(iDevice%,
iDAQstopped%,
ulRetrieved&)
DoEvents
Wend
iRetVal% = NIDAQErrorHandler(iStatus8, "DAQ-Check",
istatus%
=
iIgnoreWarning8)
SCAN-Demux(piBuffer%(O), ulCount&, iNumChans8, iNumMUXBrds%)
iRetVal% = NIDAQErrorHandler(iStatus%, "SCAN-Demux",
iIgnoreWarning8)
NIDAQErrorHandler(iStatus8, "DAQ-VScale",
iIgnoreWarning%)
iRetVal%
=
Limpiar - No se revisa por errores.
istatus% = DAQ-Clear(iDevice8)
Frmdata.Data.Co1 = 1
'Frmdata.Data.Rows = 300
For i
=
O To numcan
* nummuestra
datos# (i) = pdVoltBuf
fer#
(i)
' Frmdata.Data.Row = i
' Frmdata. Data.Text= Str (datos
(i)) +
+
Str (i)
iScanTB%,
uSca
CapturaAnalogica - 3
Next i
E x i t Sub
rrores :
MsgBox "Error en l a c a p t u r a , v e r i f i q u e
d ec a p t u r a " ,v b c r i t i c a l ," E r r o rd eC a p t u r a "
E x i t Sub
nd Sub
que este b i e n c o n e c t a d a l a t a r j e t a
o l ac o n f i g u r a c i o n
CapturaDigital - 1
........................................................................
Funcion : CapturaD
de la tarjeta.
DESCRIPCION: Captura l o s datos del puerto digital
........................................................................
ublic Sub CapturaD(datos()
As Long, nummuestrasAs Integer, patronAs String)
Declaration de las variables locales
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
istatus As Integer
iRetVal As Integer
iDevice As Integer
Puerto
iPort As Integer
iMode As Integer
iDir As Integer
iPattern As Integer
iIgnoreWarning As Integer
iAs Integer
'Estado de la
captura
'Numero de dispositivo
'Modo
' Patron
iDevice8 = 1
Configurar como puertode entrada.
istatus8 = DIG-Prt-Config(iDevice8, iPort8, iMode%, iDir%)
iRetVal%
=
NIDAQErrorHandler(iStatus8, "DIG-Port-Config",
iIgnoreWarning%)
i = O
'inicializar
vectorde Datos
Do While (i < numuestras)
datos(i) = O
i = i + l
Loop
i = O
'Do While (iPattern8<> Val ("&H" + Trim(patron)) )
iStatus8 = DIG-In-Port(iDevice%,
iPort%,
iPattern%)
' DoEvents
I
Loop
'Captura continuade datos
Do While (i< nummuestras)
istatus% = DIG-In-Port(iDevice%, iPort%, iPattern%)
datos (i) = iPattern8
iRetVal% = NIDAQErrorHandler(iStatus%, "DIG In Port",
i = i + l
"
Loop
nd Sub
iIgnoreWarning8)
CBuscar - 1
ublic Sub buscar(text0As String, columna As Integer, maxfila As Integer, ByRef fila As Integer
ila = O
With Frmdata.Data
.Col = columna
.Row = fila
Do While (fila <> maxfila
fila = fila + 1
.Row = fila
Loop
End With
If (fila = maxfila - 1) Then
fila = O
End If
nd Sub
-
1 And StrComp(Trim(.Text), Trim(text0)) <>
o)
Conversion - 1
ublic Function Conversion(Muestras() As Double, longitud
As Integer, loginter As Integer, ByRef
arreglodec() As Long, ByRef arreglobin()
As String, ByRef arreglohexo As String, numbits As In
eger, volref As Double) As Integer
Data Muestras, longitud, loginter, arreglodec, numbits, volref
Binario arreglodec, loginter, arreglobin, numbits
Hexadecimal arreglodec, arreglohex, loginter
nd Function
.......................................................
Procedimiento : Conversion
de
Descripcion : Convierte el arreglo con el conjunto
lectura de l o s canales a uno solo.
.......................................................
rivate Sub Data(datos() As Double, longitud As Integer, logintervalo As Integer,
ByRef DatDecO
As Long, numbitsAs Integer, volref As Double)
im BufferDigitalO As Integer
im BufferDecimal ( ) As Long
eDim BufferDigital(1ongitud)
eDim BufferDecimal(loginterva1o)
or i = O To longitud - 1
If datos(i) < volref Then
Buf ferDigita1
(i) = O
Else
BufferDigital (i) = 1
End If
ext i
= o
alor
=
t
- 1
BufferDecimal (i) = O
t = Valor
For j = O To numbits - 1
BufferDecimal(i) = 2
j * BufferDigital(t)
t = (j + 1) * logintervalo + Valor
Next j
Valor = Valor + 1
ext i
or i = O To logintervalo
+
BufferDecimal(i)
or i = O To logintervalo - 1
DatDec(i) = BufferDecimal
(i)
ext i
nd Sub
ublic Sub Hexadecimal(Arreg1o-Floral()
For i
=
As
Long,
Arreglo-Hex()
As
String,
O To longitud
Arreglo-Hex (i) = Hex
(Arreglo
-Floral (i))
Next i
nd Sub
........................................................................
Funcion : Bin
longitud
As Integer)
:Conversion - 2
Descripcion : Convierte un entero a cadena con el numero en binario
.........................................................................
'ublic Sub Binario(Arreg1o-Floral() As Long, MuestrasAs Integer, ArregloBinarioO As String, nu
-bits As Integer)
)im Binario As Double
)im cociente As Long
)im i As Integer
'or j = O To Muestras
num = Arreglo-Floral (j)
Binario = O
i = O
cociente = num
Do While (cociente <> O )
If (num Mod 2 ) <> O Then
cociente = num / 2 - 0 . 5
Else
cociente = num / 2
End If
temp = num Mod 2
Binario = temp * 10
(i) + Binario
i = i + l
num = cociente
Loop
ArregloBinario (j) = Format$
'ext j
hd Sub
(Binario,
" ~ 0 0 0 0 0 0 0 ~ ~ ~ ~ ~ ~ ~ ~ " )
:GuardaConf - 1
lption Explicit
)im intcanales As Integer
Dim intTriggerAs Integer
)im intTambuffer As Integer
)im lngmuestrasxseg As Long
)im bolTipocap As Boolean
)im bolTipolog As Boolean
)im strpalabra As String
)im CurUmbral As Currency
)im nombre As String
)im msg As Integer
)im lngpalabra As Long
)im palabra-hex As String
)im name As String
)im strFormato As String
Sub cGuardaConf-InitProperties()
Forml. lblMs. Caption
= "initialize"
End Sub
Private Sub form-Initialize()
= "initialize"
Forml. lblMs .Caption
End Sub
()
ublic Sub inicializa
lim nombre As String
In Error GoTo Default
lpen "c:\windows\uami2000\nomconf.nom" For InputAs # 4
nput # 4 , nombre
lose 4
Open (nombre) For InputAs #2
Input #2, strFormato, intcanales, intTambuffer, lngmuestrasxseg, bolTipocap, strPalabra, CurUm
Iral, bolTipolog
If (strFormato = "Comenzo en biacrusis") Then
Forml.cboMs.Text = lngmuestrasxseg
Forml.cboNc.Text = intcanales
Forml.cboNm.Text = intTambuffer
Forml.cboVu.Text = CurUmbral
Forml.txtPalabra.Text = strPalabra
Forml.Optionl(O).Value = Not bolTipocap
Forml.Optionl(l).Value = bolTipocap
Forml.OptionZ(O).Value = Not bolTipolog
Forml.OptionZ(l).Value = bolTipolog
Close 2
Exit Sub
Else
msg = MsgBox ( ("El archivo
& nombre &
no es formato UAMI2000"), vbOKOnly, "Error de con
iguración")
Close 2
End If
lefault:
lngmuestrasxseg = 31250
Forml.cboMs.Text = 31250
intcanales = 16
Forml.cboNc.Text = 16
intTambuffer = 1 4
Forml. cboNm.Text
= 14
CurUmbral = 2.5
Forml.cboVu.Text = 2.5
strpalabra = "x"
"x"
Forml. txtPalabra. =
Text
Forml.Optionl(O).Value = False
bolTipocap = True
Forml.Optionl(l).Value = True
(O) .Value = False
Forml. Option2
bolTipolog = True
Forml.Option2(1).Value = True
Open ("c:\windows\uami200O\default.cfg") For Output As #S
Write #5, "Comenzo en biacrusis", intcanales, intTambuffer, lngmuestrasxseg, bolTipocap, strPa
:GuardaConf
-
2
Labra, CurUmbral, bolTipolog
Close 5
Open ("c:\windows\uamiZOOO\nomconf. nom") For Output
As # 2
Write #2, "c:\windows\uami2000\default.cfg"
Close 2
Znd Sub
()
Public Sub por-omision
Open ("c:\windows\uami200O\default.cfg") For InputAs # S
Input #5, strFormato, intcanales, intTambuffer, lngmuestrasxseg, bolTipocap, strPalabra, CurUm
sral, bolTipolog
If (strFormato = "Comenzo en biacrusis") Then
Forml.cboMs.Text = lngmuestrasxseg
Forml.cboNc.Text = intcanales
Forml.cboNm.Text = intTambuffer
Forml.cboVu.Text = CurUmbral
Forml.txtPa1abra.Text = strPalabra
Forml.Optionl(O).Value = Not bolTipocap
Forml.Optionl(l).Value = bolTipocap
Forml.OptionZ(O).Value = Not bolTipolog
Forml.OptionZ(l).Value = bolTipolog
Else
msg = MsgBox("E1 archivo de configuración 'default.cfg' se ha dañado. Vuelva a instalar
Iplicación", vbOKOnly, "Error de configuración")
End If
Close 5
3nd Sub
()
'ublic Sub por-omision2
Open ("c:\windows\uamiZOOO\default.cfg") For Input As #5
Input #5, strFormato, intcanales, intTambuffer, lngmuestrasxseg, bolTipocap, strPalabra, CurUm
ral, bolTipolog
If (strFormato = "Comenzo en biacrusis") Then
Forml.CboMs2.Text = lngmuestrasxseg
Forml.CboNc2.Text = intcanales
Forml.CboNm2.Text = intTambuffer
Forml.CboVu2.Text = CurUmbral
Forml.Txtpalabra2.Text = strPalabra
Forml.Option3(0).Value = Not bolTipocap
Forml.Option3(1).Value = bolTipocap
Forml.Option4(0).Value = Not bolTipolog
Forml.Option4(1).Value = bolTipolog
Forml.LblNombre.Visib1e = False
Else
msg = MsgBox("E1 archivo de configuración default.cfg se ha dañado. Vuelva a instalar l
:ación", vbOKOnly, "Error de configuración")
End If
Close 5
.id Sub
lblic Function guarda0 As Integer
)en "c:\windows\uamiZOOO\param. cf" For Output
As #1
:ite #1, "Comenzo en biacrusis", Val (Forml. cboNc. Text), Val (Forml.
, Val cboNm.Text)
(Forml. cboMs.
Ixt), Forml.Optionl(l).Value, Forml.txtPalabra.Text, Val(Forml.cboVu.Text), Forml.Option2(1).Va
e
ose 1
d Function
blic Function guarda20
en "c:\windows\uamiZOOO\param. cf" For Output
As #1
ite #1, "Comenzo en biacrusis", Val(Forml.CboNcZ.Text), Val(Forml.CboNmZ.Text), Val(Forml.CboM
.Text), Forml.Option3(1).Value, Forml.TxtpalabraZ.Text, Val(Forml.CboVu2.Text), Forml.Option4(
I
Value
.ose 1
id Function
ublic Sub digital
()
Forml.cboMs.Enabled = False
Descargar