Proyecto Fin de Carrera Desarrollo de un conjunto de módulos OCX

Proyecto Fin de Carrera
Desarrollo de un conjunto de módulos OCX en
Visual Basic para un sistema de adquisición de
datos vía USB
Ioannis Lykidis
Sokratis Partalas
Donostia 2004
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
ÍNDICE
CAPÍTULO 1 ................................................................... 3
ARCHIVOS OCX
CAPÍTULO 2 ................................................................... 4
DESCRIPCIÓN DE LOS ARCHIVOS OCX
CAPÍTULO 3 ................................................................... 5
DESCRIPCIÓN DEL PROGRAMA PRINCIPAL
CAPÍTULO 4 ................................................................... 10
FORMULARIOS CON CIRCUITOS
CAPÍTULO 5 ................................................................... 12
PROBLEMAS DURANTE LA CREACIÓN DEL
PROYECTO
CAPÍTULO 6 .................................................................. 14
EL CÓDIGO
2
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Capítulo 1.0
Archivos OCX
1.1 Diseño de archivo OCX
Para diseñar los archivos OCX el usuario tiene que instalar a su ordenador el
programa Microsoft Visual Studio 6.0. Después debe seguir los próximos pasos:




Cuando está en su escritorio elige la opción “Inicio”. Después va a los
programas y elige “Microsoft Visual Studio 6.0” y Visual Basic.
Al cabo de paso anterior en su pantalla aparece un menú donde el
usuario debe elegir la opción ActiveX Control.
Escribe el código y diseña los formularios que quiere.
Guarda el proyecto que ha hecho.
1.2 Creación de archivo OCX
Cuando el usuario ha guardado su proyecto, va a la opción Archivo y elige
Make ocx file. Lo guarda otra vez y el archivo OCX está preparado para
utilizarlo.
1.3 Diseño de archivo EXE con archivos OCX
El usuario debe hacer los dos primeros pasos en párrafo 1.1 pero en lugar de
ActiveX Control elige Standard EXE. Para poner los archivos OCX sigue los
próximos pasos:






Lleva el cursor a Tool box, que está a la izquierda de la pantalla, y hace
derecho click y elige la opción Components.
Este momento aparece una formulario que se llama Controls y hace un
click al botón que escribe Browse para encontrar los archivos OCX.
Cuando lo ha encontrado, lo elige y pulsa el botón “Abrir”. El archivo
aparece a la formulario Controls donde ahora será elegido, y el usuario
puede hacer un click al botón Apply y después close.
Ahora en Tool box aparece el dibujo de archivo OCX.
Elige este icono y el cursor sobre el formulario transforme a una cruz.
A continuación hace click a un punto y arrastra el cruz hasta el punto
que el OCX aparecerá todo.
Ahora el usuario puede escribir el código para utilizar el OCX, cuando
terminará, guardará el proyecto y para crear una aplicación debe que ir
a la opción Archivo y elegir Make exe file. Después esto el archivo
EXE está preparado para utilizarlo.
3
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Capítulo 2.0
Descripción de los archivos OCX
2.1 Los archivos OCX
Los archivos OCX que se están utilizando en este programa son:
a.
c.
e.
g.
Analogiko05
Bar05
Grafikh05
Gain
b.
d.
f.
h.
Analogiko55
Bar55
Grafikh55
Metro
2.2 Utilización de archivos OCX
Para utilizar un archivo OCX dentro en un programa el usuario tiene que
utilizar los métodos con esta manera:
NombreOCX.Método(parámetro)
Los métodos son los siguientes:
Archivos
OCX
Analogiko05
Métodos
Parámetros
Descripción
Analogiko
a
Analogiko55
Analogiko
a
Bar05
Bar
a
Bar55
Bar
a
Grafikh05
Paint
a
Grafikh55
Paint
a
Gain
Gain
a, b, c
Metro
-------
-------
La amplitud de parámetro a es 0 – 255 (0 - 5
V) y representa la amplitud de la Scroll Bar y
lo utiliza para mover la línea en el voltímetro.
La amplitud de parámetro a es 0 – 510 (-5 - +5
V) y representa la amplitud de la Scroll Bar y
lo utiliza para mover la línea en el voltímetro.
La amplitud de parámetro a es 0 – 255 (0 - 5
V) y representa la amplitud de la Scroll Bar y
lo utiliza para mover la línea en el voltímetro.
La amplitud de parámetro a es 0 – 510 (-5 - +5
V) y representa la amplitud de la Scroll Bar y
lo utiliza para mover la línea en el voltímetro.
La amplitud de parámetro a es 0 – 255 (0 - 5
V) y representa la amplitud de la Scroll Bar y
lo utiliza para dibujar el voltaje en un sistema
X,Y.
La amplitud de parámetro a es 0 – 510 (-5 - +5
V) y representa la amplitud de la Scroll Bar y
lo utiliza para dibujar el voltaje en un sistema
X,Y.
Los parámetros a y b son los mínimo y
máximo valor de la escala, y el parámetro c es
el aumento.
Solo tiene 4 textboxes para escribir el mínimo,
máximo, valor, título que quiere introducir.
4
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Capítulo 3.0
Descripción del programa principal
3.1 Formulario inicial
En este formulario hay tres opciones


Exit
: el usuario puede terminar la aplicación
Start
: con esta opción comienza la aplicación, pero si el usuario no
ha hecho los settings, la aplicación no comienza, sino aparece el próximo
mensaje
5
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB

Settings : después la elección de esta opción, aparece un formulario
nuevo donde el usuario puede hacer los ajustes que desea
3.2 Formulario de ajustes
En este formulario el usuario tiene cinco opciones. Puede elegir dos
voltímetros, dos gráficas de barras (barr-graph) y una gráfica. En principio,
ninguna opción está elegida y por eso, la aplicación no puede comenzar. Sólo dos
opciones están activas (estas de los dos voltímetros). Cuando un voltímetro está
elegido, entonces el barr-graph correspondiente está activo y la gráfica también. Si
el voltímetro 0-5 volts está elegido automáticamente está activa la gráfica con la
escala de 0-5 volts. En caso que está elegido el voltímetro –5 - +5 volts o los dos
voltímetros juntos entonces aparece la gráfica con la escala de –5 - +5 volts.
6
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Hay también tres botones:

Accept
: si el usuario pulsa este botón todas los ajustes se guardan y la
aplicación está preparada para comenzar y el programa vuelve a la
formulario inicial. Si ninguna ajuste está guardando entonces a la pantalla
aparece el mensaje próximo que dice al usuario que elija una opción:


Reset
Cancel
: borra todas las opciones que están en el formulario
: el programa vuelve a la formulario inicial
Si el usuario ha hecho los ajustes que quiere, puede pulsar el botón Start para
comenzar la aplicación.
7
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
3.3 Formulario final
En el caso que ha hecho todos los ajustes y ha pulsado el botón Start aparece
en la pantalla el tercer formulario con todos los instrumentos que ha elegido.
Además de este formulario hay un instrumento más que lo utiliza para introducir
las unidades. Esto tiene cuatro Textboxes y tiene que escribir en estos la mínima,
máxima unidad para crear la escala, también la unidad que quiere ver y la unidad.
Empujando el botón Accept puede ver el resultado. En caso que quiere
cambiar el valor tiene que pulsar el botón Change.
Además en la versión que el programa funciona con el circuito hay un archivo
OCX más para hacer y demostrar la existencia de la conexión.
8
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Abajo de la gráfica hay tres botones:
Empieza la gráfica.
Stop la gráfica. Después esto, si el usuario pulsa el botón anterior
empieza un gráfica con color diferente.
Borra la gráfica.
Existen dos botones más:
Back: vuelve a la formulario inicial.
Exit: El usuario sale del programa.
9
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Capítulo 4.0
Formularios con circuitos
4.1 Ejemplos
El usuario puede elegir entre 17 circuitos diferentes. A continuación, están
describiendo los dos formularios más representativos.
4.1.1 Ejemplo 1
El usuario puede cambiar el voltaje que entra al circuito (Vinput) con un Scroll
Bar y puede ver el cambio también el voltaje que sale de circuito (Voutput). El
cambio parece en los voltímetros analógicos y a los barr-graphs también. Además
si quiere, puede empezar la gráfica y ver allí el cambio. En cada formulario hay un
circuito diferente que parece arriba a la derecha.
10
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
4.1.2 Ejemplo 2
El usuario puede cambiar las voltajes que entran al circuito (Vinput1,2) con
dos Scroll Bars y puede ver el cambio también la voltaje que sale de circuito
(Voutput). El cambio parece a los voltímetros analógicos. Existe otro instrumento
que aparece la ganancia del circuito que es un número constante. Si el usuario
quiere cambiarlo, puede con un Scroll Bar que representa el valor de
potenciómetro. El cambio del valor de potenciómetro parece también al circuito.
Cada formulario hay un circuito diferente que parece arriba a la derecha.
11
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Capítulo 5.0
Problemas durante la creación del proyecto
Durante la creación del proyecto aparecían algunos problemas. La mayoría se
han resuelto. Los problemas son los siguientes:






La lengua Española
La conexión USB
Precisión de la escala
Los archivos OCX
El circuito
Los resultados de los voltímetros
La lengua Española
En el principio no había conocimiento del idioma español para hacer el
proyecto y la presentación. Pero paso a paso, con el curso de español y la vida en
el País Vasco, el problema estaba enfrentado.
La conexión USB
Este proyecto debía trabajar con la adquisición de datos USB pero no ha sido
así. Nuestro ordenador tiene el sistema operativo en lengua griega y no es
compatible con el sistema USB que está en lengua española. No ha sido posible
instalar Visual Basic en español en los ordenadores del centro de cálculo por eso
se ha realizado todo en inglés y sin poder usar la conexión USB.
Precisión de la escala
Las escalas que están en los voltímetros y los barr-graphs no están precisos
porque hay problemas con los dibujos. Está haciendo una esfuerzo para corregirlas
pero todavía continúan a existir.
Los archivos OCX
Si el usuario tenía un programa con archivos OCX y quería transportarlo en un
otro ordenador, no podía funcionarlo porque el ordenador no los encontraba y
debe cada vez declararlos en el programa. La solución es la colocación de los
archivos OCX en una carpeta y después debe :


Va a “Inicio” y después a Realización.
Allí los registra y está escribiendo :
12
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Regsvr32 RUTA\nombre.ocx
Ej.
Regsvr32 C:\fp\Analogiko05.ocx
El circuito
La lengua del microprocesador que está programado, no está compatible con
la lengua del ordenador que está utilizado por la creación de este proyecto. Para
resolver este problema están situado a las formularios, Scroll Bars para simular la
función del circuito.
Los resultados de los voltímetros
Si el usuario cambia por la primera vez el voltaje en el voltímetro no muestra
el valor correcto pero cuando continua está corregido. Este problema está
ocurriendo porque las variables en el principio no toman los valores propios.
13
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Capítulo 6.0
El Código
6.1 Código de archivos OCX
6.1.1 Analogiko05
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
x As Long
y As Long
xarxiko As Long
yarxiko As Long
xteliko As Long
yteliko As Long
angleg As Double
angler As Double
inp As Double
Private Sub Timer1_Timer()
analogiko (a)
End Sub
Public Sub analogiko(a As Integer)
xarxiko = 1800
yarxiko = 1800
inp = a / 1.495
angleg = inp + 5
angler = angleg * 3.14 / 180
x = Cos(angler) * 1450
y = Sin(angler) * 750
Line1.X1 = xarxiko - x
Line1.Y1 = yteliko - 0.95 * y
xteliko = xarxiko - x
14
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
yteliko = yarxiko - y
End Sub
6.1.2 Analogiko55
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
x As Long
y As Long
xarxiko As Long
yarxiko As Long
xteliko As Long
yteliko As Long
angleg As Double
angler As Double
inp As Double
a As Integer
Private Sub Timer1_Timer()
analogiko (a)
End Sub
Public Sub analogiko(a As Integer)
xarxiko = 1800
yarxiko = 1800
inp = a / 2.97
angleg = 4 + inp
angler = angleg * 3.14 / 180
x = Cos(angler) * 1450
y = Sin(angler) * 750
Line1.X2 = xarxiko - x
Line1.Y2 = yteliko - y
xteliko = xarxiko - x
yteliko = yarxiko - y
End Sub
15
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
6.1.3 Bar05
Private Sub Timer1_Timer()
bar (a)
End Sub
Public Sub bar(a As Integer)
Picture1.Height = 2650 - a * 10.3
If (Picture1.Height >= 2650) Then
Picture1.Height = 2650
Else
If (Picture1.Height <= 24) Then
Picture1.Height = 25
End If
End If
End Sub
6.1.4 Bar55
Dim a As Integer
Private Sub Timer1_Timer()
bar (a)
16
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
End Sub
Public Sub bar(a As Integer)
Picture1.Height = 2655 - a * 5
If (Picture1.Height >= 2655) Then
Picture1.Height = 2655
Else
If (Picture1.Height <= 115) Then
Picture1.Height = 15
End If
End If
End Sub
6.1.5 Grafikh05
Dim
Dim
Dim
Dim
Dim
Dim
ay As Integer
ax As Integer
by As Integer
bx As Integer
countg As Boolean
a As Integer
17
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Dim c As Integer
Private Sub Command3_Click()
ax = 400
If (countg = True) Then
Picture1.Line (ax, ay)-((ax + 30), by),
RGB(255, 0, 0)
Timer2.Enabled = True
Timer2.Interval = 200
Else
Timer1.Enabled = True
Timer1.Interval = 200
End If
End Sub
Private Sub Command4_Click()
countg = True
Timer1.Enabled = False
Timer2.Enabled = False
End Sub
Private Sub Command5_Click()
Picture1.Cls
ax = 400
countg = False
End Sub
Private Sub Timer1_Timer()
grafikh (a)
End Sub
Private Sub Timer2_Timer()
grafikh2 (a)
End Sub
Private Sub grafikh(a As Integer)
by = a * 10.3
Picture1.Line (ax, ay)-((ax + 30), by), RGB(0,
255, 0)
Picture1.DrawWidth = 3
ax = ax + 50
ay = by
If ax = 7700 Then
Picture1.Refresh
ax = 400
End If
End Sub
Private Sub grafikh2(b As Integer)
by = b * 10.3
Picture1.Line (ax, ay)-((ax + 30), by),
RGB(255, 0, 0)
18
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Picture1.DrawWidth = 3
ax = ax + 50
ay = by
If ax = 7700 Then
Picture1.Refresh
ax = 400
End If
End Sub
Private Sub UserControl_Initialize()
ay = 2625
by = 2625
End Sub
Public Sub paint(c As Integer)
a = 255 - c / 1.1
End Sub
6.1.6 Grafikh55
Dim ay As Integer
19
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Dim
Dim
Dim
Dim
Dim
Dim
ax As Integer
by As Integer
bx As Integer
countg As Boolean
a As Integer
c As Integer
Private Sub Command3_Click()
ax = 400
If (countg = True) Then
Picture1.Line (ax, ay)-((ax + 50), by),
RGB(255, 0, 0)
Timer2.Enabled = True
Timer2.Interval = 200
Else
Timer1.Enabled = True
Timer1.Interval = 200
End If
End Sub
Private Sub Command4_Click()
countg = True
Timer1.Enabled = False
Timer2.Enabled = False
End Sub
Private Sub Command5_Click()
Picture1.Cls
ax = 400
countg = False
End Sub
Private Sub Timer1_Timer()
grafikh (a)
End Sub
Private Sub Timer2_Timer()
grafikh2 (a)
End Sub
Private Sub UserControl_Initialize()
ay = 5050
by = 5050
End Sub
Private Sub grafikh(a As Integer)
by = a * 10.3
Picture1.Line (ax, ay)-((ax + 50), by), RGB(0,
255, 0)
Picture1.DrawWidth = 3
ax = ax + 50
ay = by
20
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
If ax = 7700 Then
Picture1.Refresh
ax = 400
End If
End Sub
Private Sub grafikh2(b As Integer)
by = a * 10.3
Picture1.Line (ax, ay)-((ax + 50), by),
RGB(255, 0, 0)
Picture1.DrawWidth = 3
ax = ax + 50
ay = by
If ax = 7700 Then
Picture1.Refresh
ax = 400
End If
End Sub
Public Sub paint(c As Integer)
a = 255 * 1.92 - c / 1.1
End Sub
6.1.7 Metro
Dim inp As Double
Dim amount As Double
Private Sub Command1_Click()
Picture1.Visible = True
Text7.Visible = False
Text8.Visible = False
Text9.Visible = False
Text10.Visible = False
Text5.Text
Text6.Text
Text2.Text
Text1.Text
Text5.Text
=
=
=
=
Text7.Text
Text8.Text
Text10.Text
((Text6.Text - Text5.Text) / 2) +
21
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Text3.Text = ((Text6.Text - Text5.Text) / 4) +
Text5.Text
Text4.Text = (((Text6.Text - Text5.Text) * 3) /
4) + Text5.Text
inp = Text8.Text - Text7.Text
amount = Text9.Text
If (Text8.Text <= Text7.Text) Then
Picture1.Visible = False
Text7.Visible = True
Text8.Visible = True
Text9.Visible = True
Text10.Visible = True
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""
Text1.Text = ""
Text3.Text = ""
Text5.Text = ""
Text4.Text = ""
Text6.Text = ""
Text10.Text = ""
MsgBox ("Wrong Scale")
Call Command2_Click
Else
If (amount >= Text7.Text And amount < (0.05
* inp + Text7.Text)) Then
Line1.X2 = 720
Line1.Y2 = 1800
Else
If (amount >= (0.05 * inp + Text7.Text) And
amount < (0.1 * inp + Text7.Text)) Then
Line1.X2 = 720
Line1.Y2 = 1680
Else
If (amount >= (0.1 * inp + Text7.Text) And
amount < (0.15 * inp + Text7.Text)) Then
Line1.X2 = 720
Line1.Y2 = 1460
Else
If (amount >= (0.15 * inp + Text7.Text) And
amount < (0.2 * inp + Text7.Text)) Then
Line1.X2 = 840
Line1.Y2 = 1280
Else
If (amount >= (0.2 * inp + Text7.Text) And
amount < (0.25 * inp + Text7.Text)) Then
Line1.X2 = 960
Line1.Y2 = 1050
Else
22
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
If (amount >= (0.25 * inp + Text7.Text) And
amount < (0.3 * inp + Text7.Text)) Then
Line1.X2 = 1080
Line1.Y2 = 855
Else
If (amount >= (0.3 * inp + Text7.Text) And
amount < (0.35 * inp + Text7.Text)) Then
Line1.X2 = 1200
Line1.Y2 = 720
Else
If (amount >= (0.35 * inp + Text7.Text) And
amount < (0.4 * inp + Text7.Text)) Then
Line1.X2 = 1350
Line1.Y2 = 650
Else
If (amount >= (0.4 * inp + Text7.Text) And
amount < (0.45 * inp + Text7.Text)) Then
Line1.X2 = 1650
Line1.Y2 = 500
Else
If (amount >= (0.45 * inp + Text7.Text) And
amount < (0.5 * inp + Text7.Text)) Then
Line1.X2 = 1900
Line1.Y2 = 440
Else
If (amount >= (0.5 * inp + Text7.Text) And
amount < (0.55 * inp + Text7.Text)) Then
Line1.X2 = 2145
Line1.Y2 = 400
Else
If (amount >= (0.55 * inp + Text7.Text) And
amount < (0.6 * inp + Text7.Text)) Then
Line1.X2 = 2350
Line1.Y2 = 440
Else
If (amount >= (0.6 * inp + Text7.Text) And
amount < (0.65 * inp + Text7.Text)) Then
Line1.X2 = 2650
Line1.Y2 = 510
Else
If (amount >= (0.65 * inp + Text7.Text) And
amount < (0.7 * inp + Text7.Text)) Then
Line1.X2 = 2850
Line1.Y2 = 600
Else
If (amount >= (0.7 * inp + Text7.Text) And
amount < (0.75 * inp + Text7.Text)) Then
Line1.X2 = 3050
Line1.Y2 = 720
Else
If (amount >= (0.75 * inp + Text7.Text) And
amount < (0.8 * inp + Text7.Text)) Then
23
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Line1.X2 = 3190
Line1.Y2 = 860
Else
If (amount >= (0.8 * inp + Text7.Text) And
amount < (0.85 * inp + Text7.Text)) Then
Line1.X2 = 3280
Line1.Y2 = 970
Else
If (amount >= (0.85 * inp + Text7.Text) And
amount < (0.9 * inp + Text7.Text)) Then
Line1.X2 = 3420
Line1.Y2 = 1200
Else
If (amount >= (0.9 * inp + Text7.Text) And
amount < (0.95 * inp + Text7.Text)) Then
Line1.X2 = 3520
Line1.Y2 = 1480
Else
If (amount >= (0.95 * inp + Text7.Text) And
amount < (inp + Text7.Text)) Then
Line1.X2 = 3580
Line1.Y2 = 1600
Else
If (amount = Text8.Text) Then
Line1.X2 = 3600
Line1.Y2 = 1800
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End Sub
Private Sub Command2_Click()
24
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Picture1.Visible = False
Text7.Visible = True
Text8.Visible = True
Text9.Visible = True
Text10.Visible = True
End Sub
Private Sub UserControl_Initialize()
Picture1.Visible = False
Text7.Visible = True
Text8.Visible = True
Text9.Visible = True
Text10.Visible = True
End Sub
6.1.8 Gain
Public Sub gain(a As Double, b As Double, c As
Double)
Text5.Text = a
Text6.Text = b
Text2.Text = "Gain"
Text1.Text = ((Text6.Text - Text5.Text) / 2) +
Text5.Text
Text3.Text = ((Text6.Text - Text5.Text) / 4) +
Text5.Text
Text4.Text = (((Text6.Text - Text5.Text) * 3) /
4) + Text5.Text
inp = b - a
amount = c
If (amount >= a And amount < (0.05 * inp + a))
Then
Line1.X2 = 720
Line1.Y2 = 1800
Else
25
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
If (amount >= (0.05 * inp + a) And amount <
(0.1 * inp + a)) Then
Line1.X2 = 720
Line1.Y2 = 1680
Else
If (amount >= (0.1 * inp + a) And amount <
(0.15 * inp + a)) Then
Line1.X2 = 720
Line1.Y2 = 1460
Else
If (amount >= (0.15 * inp + a) And amount <
(0.2 * inp + a)) Then
Line1.X2 = 840
Line1.Y2 = 1280
Else
If (amount >= (0.2 * inp + a) And amount <
(0.25 * inp + a)) Then
Line1.X2 = 960
Line1.Y2 = 1050
Else
If (amount >= (0.25 * inp + a) And amount <
(0.3 * inp + a)) Then
Line1.X2 = 1080
Line1.Y2 = 855
Else
If (amount >= (0.3 * inp + a) And amount <
(0.35 * inp + a)) Then
Line1.X2 = 1200
Line1.Y2 = 720
Else
If (amount >= (0.35 * inp + a) And amount <
(0.4 * inp + a)) Then
Line1.X2 = 1350
Line1.Y2 = 650
Else
If (amount >= (0.4 * inp + a) And amount <
(0.45 * inp + a)) Then
Line1.X2 = 1650
Line1.Y2 = 500
Else
If (amount >= (0.45 * inp + a) And amount <
(0.5 * inp + a)) Then
Line1.X2 = 1900
Line1.Y2 = 440
Else
If (amount >= (0.5 * inp + a) And amount <
(0.55 * inp + a)) Then
Line1.X2 = 2145
Line1.Y2 = 400
Else
If (amount >= (0.55 * inp + a) And amount <
(0.6 * inp + a)) Then
26
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Line1.X2 = 2350
Line1.Y2 = 440
Else
If (amount >= (0.6 * inp + a) And amount <
(0.65 * inp + a)) Then
Line1.X2 = 2650
Line1.Y2 = 510
Else
If (amount >= (0.65 * inp + a) And amount <
(0.7 * inp + a)) Then
Line1.X2 = 2850
Line1.Y2 = 600
Else
If (amount >= (0.7 * inp + a) And amount <
(0.75 * inp + a)) Then
Line1.X2 = 3050
Line1.Y2 = 720
Else
If (amount >= (0.75 * inp + a) And amount <
(0.8 * inp + a)) Then
Line1.X2 = 3190
Line1.Y2 = 860
Else
If (amount >= (0.8 * inp + a) And amount <
(0.85 * inp + a)) Then
Line1.X2 = 3280
Line1.Y2 = 970
Else
If (amount >= (0.85 * inp + a) And amount <
(0.9 * inp + a)) Then
Line1.X2 = 3420
Line1.Y2 = 1200
Else
If (amount >= (0.9 * inp + a) And amount <
(0.95 * inp + a)) Then
Line1.X2 = 3520
Line1.Y2 = 1480
Else
If (amount >= (0.95 * inp + a) And amount <
(inp + a)) Then
Line1.X2 = 3580
Line1.Y2 = 1600
Else
If (amount = b) Then
Line1.X2 = 3600
Line1.Y2 = 1800
End If
End If
End If
End If
End If
End If
27
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
End
End
End
End
End
End
End
End
End
End
End
End
End
End
End If
End Sub
If
If
If
If
If
If
If
If
If
If
If
If
If
If
28
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
6.2 Código de programa principal
6.2.1 Forma 1
Dim chkarray2(5) As Boolean
Private Sub Exit_Click()
End
End Sub
Private Sub Settings_Click()
Unload Form1
Form2.Visible = True
End Sub
Public Sub Start_Click()
Dim count As Integer
For i = 0 To 4
If (chkarray2(i) = False) Then
count = count + 1
End If
Next i
If (count = 5) Then
MsgBox ("No Settings")
Else
Unload Form1
Form3.Visible = True
Form3.analogiko05.Visible = chkarray2(0)
Form3.analogiko55.Visible = chkarray2(1)
Form3.bar05.Visible = chkarray2(2)
Form3.Bar55.Visible = chkarray2(3)
29
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
If (chkarray2(0) = True And chkarray2(1) =
False) Then
Form3.grafikh05.Visible = chkarray2(4)
Else
If (chkarray2(0) = False And chkarray2(1) =
True) Then
Form3.grafikh55.Visible = chkarray2(4)
Else
If (chkarray2(0) = True And chkarray2(1) =
True) Then
Form3.grafikh55.Visible = chkarray2(4)
End If
End If
End If
End If
End Sub
Public Sub record(chkarray() As Boolean)
For i = 0 To 4
chkarray2(i) = chkarray(i)
Next i
End Sub
6.2.2 Forma 2
Public Sub Accept_Click()
Dim count As Integer
Dim chkarray(5) As Boolean
Dim countg As Integer
chkarray(0)
chkarray(1)
chkarray(2)
chkarray(3)
chkarray(4)
=
=
=
=
=
Check1.Value
Check3.Value
Check5.Value
Check7.Value
Check9.Value
30
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Call Form1.record(chkarray())
For i = 0 To 4
If (chkarray(i) = False) Then
count = count + 1
Else
If (chkarray(i) = True) Then
countg = 1
End If
End If
Next i
If (count = 5) Then
MsgBox ("Make a choise")
Else
If (count < 5) Then
Unload Form2
Form1.Visible = True
End If
End If
End Sub
Private Sub Cancel_Click()
Unload Form2
Form1.Visible = True
End Sub
Private Sub Check1_Click()
Check5.Enabled = True
Check9.Enabled = True
If (Check1.Value = False) Then
Check5.Enabled = False
Check5.Value = False
If (Check3.Value = True) Then
Check9.Enabled = True
Else
If (Check3.Value = False) Then
Check9.Enabled = False
Check9.Value = False
End If
End If
End If
End Sub
Private Sub Check3_Click()
Check7.Enabled = True
Check9.Enabled = True
If (Check3.Value = False) Then
Check7.Enabled = False
Check7.Value = False
If (Check1.Value = True) Then
Check9.Enabled = True
Else
If (Check1.Value = False) Then
Check9.Enabled = False
31
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Check9.Value = False
End If
End If
End If
End Sub
Private Sub Reset_Click()
Check1.Value = False
Check3.Value = False
Check5.Value = False
Check7.Value = False
Check9.Value = False
End Sub
6.2.3 Forma 3
Dim a As Integer
Dim b As Integer
Private Sub Command1_Click()
Unload Form3
Form1.Visible = True
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub HScroll1_Change()
a = HScroll1.Value
32
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
bar05.bar (a)
analogiko05.analogiko (a)
grafikh05.Paint (a)
End Sub
Private Sub HScroll2_Change()
b = HScroll2.Value
analogiko55.analogiko (b * 2)
grafikh55.Paint (b * 2)
Bar55.bar (b * 2)
End Sub
6.3 Código de los formularios con circuito
6.3.1 C_204
Dim a As Double
Dim b As Double
Private Sub HScroll1_Change()
a = HScroll1.Value
If (a >= 82) Then
b = 0
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
grafikh55.Paint (b)
Else
If (a < 82) Then
33
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
b = 255 + (a * (-3.1))
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
grafikh55.Paint (b)
End If
End If
analogiko05.analogiko (a)
bar05.bar (a)
End Sub
6.3.2 C_326
Dim
Dim
Dim
Dim
Dim
a
b
c
d
e
As
As
As
As
As
Double
Double
Double
Double
Double
Private Sub HScroll1_Change()
a = HScroll1.Value
If (a >= 23.5) Then
b = 0
c = -10.8
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
Else
34
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
If (a < 23.5) Then
b = 255 + (a * (-10.8))
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
d = a / 51
e = (b / 51) - 5
c = e / d
End If
End If
analogiko05.analogiko (a)
bar05.bar (a)
Call gain1.gain(-12, 12, c)
End Sub
6.3.3 C_337
Dim
Dim
Dim
Dim
Dim
Dim
a
b
c
d
e
p
As
As
As
As
As
As
Double
Double
Double
Double
Double
Double
Private Sub HScroll1_Change()
a = HScroll1.Value
If (b >= 331.8) Then
a = 255
35
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
b = 255 + (a * 0.3)
c = 0.3
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
Else
If (b <= 331.8) Then
b = 255 + (a * 0.3)
d = a / 51
e = (b / 51) - 5
c = e / d
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
End If
End If
analogiko05.analogiko (a)
bar05.bar (a)
Call gain1.gain(-2, 2, c)
End Sub
6.3.4 C_347
Dim a As Double
Dim b As Double
Private Sub HScroll1_Change()
a = HScroll1.Value
If (a >= 87) Then
36
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
b = 0
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
grafikh55.Paint (b)
Else
If (a < 87) Then
b = 255 + (a * (-3))
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
grafikh55.Paint (b)
End If
End If
analogiko05.analogiko (a)
bar05.bar (a)
End Sub
6.3.5 C_350
Dim
Dim
Dim
Dim
Dim
a
b
c
d
e
As
As
As
As
As
Double
Double
Double
Double
Double
Private Sub HScroll1_Change()
a = HScroll1.Value
37
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
If (b >= 383) Then
a = 255
b = 255 + (a * 0.5)
c = 0.5
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
Else
If (b < 383) Then
b = 255 + (a * 0.5)
d = a / 51
e = (b / 51) - 5
c = e / d
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
End If
End If
analogiko05.analogiko (a)
bar05.bar (a)
Call gain1.gain(0.1, 1.2, c)
End Sub
6.3.6 C_358
Dim a As Double
Dim b As Double
Dim c As Double
38
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Private Sub HScroll1_Change()
a = HScroll1.Value
analogiko05.analogiko (a)
bar05.bar (a)
Call calc(a, b)
End Sub
Private Sub HScroll2_Change()
b = HScroll2.Value
analogikoref.analogiko (b)
barref.bar (b)
Call calc(a, b)
End Sub
Private Sub calc(a As Double, b As Double)
c = (2 * a - b) + 255
If (c = 509) Then
c = 509
analogiko55.analogiko (c)
bar55.bar (c)
Else
If (c = 0) Then
c = 0
analogiko55.analogiko (c)
bar55.bar (c)
Else
If (c > 0 And c < 509) Then
c = (2 * a - b) + 255
analogiko55.analogiko (c)
bar55.bar (c)
End If
End If
End If
End Sub
39
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
6.3.7 C_366
Dim a As Double
Dim b As Double
Private Sub HScroll2_Change()
a = HScroll2.Value
If (a >= 127) Then
b = 510
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
grafikh55.Paint (b)
Else
If (a < 127) Then
b = 255 + (a * 2)
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
grafikh55.Paint (b)
End If
End If
analogiko05.analogiko (a)
bar05.bar (a)
End Sub
40
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
6.3.8 C_369
Dim a As Double
Dim b As Double
Private Sub HScroll1_Change()
a = HScroll1.Value
analogiko05.analogiko (a)
bar05.bar (a)
b = (a * 9.8) + 255
If (b = 509) Then
b = 509
analogiko55.analogiko (b)
bar55.bar (b)
Else:
If (a = 0) Then
b = 255
analogiko55.analogiko (b)
bar55.bar (b)
Else:
If (b < 510) Then
b = (a * 9.8) + 255
analogiko55.analogiko (b)
bar55.bar (b)
End If
End If
End If
End Sub
41
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
6.3.9 C_377
Dim a As Double
Dim b As Double
Private Sub HScroll1_Change()
a = HScroll1.Value
b = 255 + a
analogiko55.analogiko (b)
bar55.bar (b - 0.05)
analogiko05.analogiko (a)
bar05.bar (a)
End Sub
6.3.10 C_387
42
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Dim
Dim
Dim
Dim
a
b
c
d
As
As
As
As
Double
Double
Double
Double
Private Sub HScroll1_Change()
a = HScroll1.Value
analogiko05.analogiko (a)
bar05.bar (a)
Call calc(a, b)
End Sub
Private Sub HScroll2_Change()
b = HScroll2.Value
analogiko2.analogiko (b)
bar2.bar (b)
Call calc(a, b)
End Sub
Private Sub calc(a As Double, b As Double)
d = a + b
c = 255 - d
If (c = 0) Then
c = 0
analogiko55.analogiko (c)
bar55.bar (c)
Else
If (c > 0) Then
c = 255 - d
analogiko55.analogiko (c)
bar55.bar (c)
End If
End If
End Sub
43
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
6.3.11 C_398
Dim a As Double
Dim b As Double
Dim c As Double
Private Sub HScroll1_Change()
a = HScroll1.Value
analogiko05.analogiko (a)
bar05.bar (a)
Call calc(a, b)
End Sub
Private Sub HScroll2_Change()
b = HScroll2.Value
analogiko2.analogiko (b)
bar2.bar (b)
Call calc(a, b)
End Sub
Private Sub calc(a As Double, b As Double)
c = (a + b) + 255
If (c = 509) Then
c = 510
analogiko55.analogiko (c)
bar55.bar (c)
Else
If (c < 509) Then
c = a + b + 255
analogiko55.analogiko (c)
44
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
bar55.bar (c)
End If
End If
End Sub
6.3.12 C_420
Dim
Dim
Dim
Dim
Dim
a
b
c
d
p
As
As
As
As
As
Double
Double
Double
Double
Double
Private Sub HScroll1_Change()
a = HScroll1.Value
analogiko05.analogiko (a)
Call calc(a, b, p)
End Sub
Private Sub HScroll2_Change()
b = HScroll2.Value
analogiko2.analogiko (b)
Call calc(a, b, p)
End Sub
45
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Private Sub calc(a As Double, b As Double, p As
Double)
p = p + 0.1
c = ((b - a) * ((2 * 10 + p) / p)) + 255
If (c = 509) Then
c = 510
analogiko55.analogiko (c)
Call gain2(a, b, c, p)
Else
If (c <= 0) Then
c = 0
analogiko55.analogiko (c)
Call gain2(a, b, c, p)
Else
If (c < 509 And c > 0) Then
c = ((b - a) * ((2 * 10 + p) / p)) + 255
analogiko55.analogiko (c)
Call gain2(a, b, c, p)
End If
End If
End If
End Sub
Private Sub gain2(a As Double, b As Double, c
As Double, p As Double)
p = p + 0.1
If (c = 256 Or b = a Or (b = 0 And a = 0)) Then
d = 0
Call gain1.gain(0, 6, d)
Else
d = (2 * 10 + p) / p
Call gain1.gain(0, 6, d)
End If
End Sub
Private Sub HScroll3_Change()
p = HScroll3.Value
Text5.Text = " " & (HScroll3.Value)
Call calc(a, b, p)
End Sub
46
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
6.3.13 C_430
Dim a As Double
Dim b As Double
Dim c As Double
Private Sub HScroll1_Change()
a = HScroll1.Value
analogiko05.analogiko (a)
bar05.bar (a)
Call calc(a, b)
End Sub
Private Sub HScroll2_Change()
b = HScroll2.Value
analogiko2.analogiko (b)
bar2.bar (b)
Call calc(a, b)
End Sub
Private Sub calc(a As Double, b As Double)
c = (a - b) + 255
analogiko55.analogiko (c)
bar55.bar (c)
End Sub
47
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
6.3.14 C_442
Dim a As Double
Dim b As Double
Dim c As Double
Private Sub HScroll1_Change()
a = HScroll1.Value
analogiko05.analogiko (a)
bar05.bar (a)
Call calc(a, b)
End Sub
Private Sub HScroll2_Change()
b = HScroll2.Value
analogiko2.analogiko (b)
bar2.bar (b)
Call calc(a, b)
End Sub
Private Sub calc(a As Double, b As Double)
c = ((a - b) * 2) + 255
If (c = 509) Then
c = 510
analogiko55.analogiko (c)
bar55.bar (c)
Else
If (c <= 0) Then
c = 0
analogiko55.analogiko (c)
48
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
bar55.bar (c)
Else
End
End
End
End
If (c < 509) Then
c = ((a - b) * 2) + 255
analogiko55.analogiko (c)
bar55.bar (c)
If
If
If
Sub
6.3.15 C_452
Dim a As Double
Dim b As Double
Dim c As Double
Private Sub HScroll1_Change()
a = HScroll1.Value
analogiko05.analogiko (a)
bar05.bar (a)
Call calc(a, b)
End Sub
Private Sub HScroll2_Change()
b = HScroll2.Value
analogiko2.analogiko (b)
49
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
bar2.bar (b)
Call calc(a, b)
End Sub
Private Sub calc(a As Double, b As Double)
c = ((a - b) * 2) + 255
If (c = 509) Then
c = 510
analogiko55.analogiko (c)
bar55.bar (c)
Else
If (c <= 0) Then
c = 0
analogiko55.analogiko (c)
bar55.bar (c)
Else
If (c < 509) Then
c = ((a - b) * 2) + 255
analogiko55.analogiko (c)
bar55.bar (c)
End If
End If
End If
End Sub
6.3.16 C_464
50
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
Dim a As Double
Dim b As Double
Dim c As Double
Private Sub HScroll1_Change()
a = HScroll1.Value
analogiko05.analogiko (a)
bar05.bar (a)
Call calc(a, b)
End Sub
Private Sub HScroll2_Change()
b = HScroll2.Value
analogiko2.analogiko (b)
bar2.bar (b)
Call calc(a, b)
Call calc2(a, b)
End Sub
Private Sub calc(a As Double, b As Double)
c = ((b - a) * 2) + 255
If (c = 509) Then
c = 510
analogiko55.analogiko (c)
bar55.bar (c)
Else
If (c <= 0) Then
c = 0
analogiko55.analogiko (c)
bar55.bar (c)
Else
If (c < 509) Then
c = ((b - a) * 2) + 255
analogiko55.analogiko (c)
bar55.bar (c)
End If
End If
End If
End Sub
Private Sub calc2(a As Double, b As Double)
c = (a - b) + 255
If (c = 509) Then
c = 510
analogiko22.analogiko (c)
bar22.bar (c)
Else
If (c <= 0) Then
c = 0
analogiko22.analogiko (c)
51
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
bar22.bar (c)
Else
End
End
End
End
If (c < 509) Then
c = (a - b) + 255
analogiko22.analogiko (c)
bar22.bar (c)
If
If
If
Sub
6.3.17 C_471
Dim a As Double
Dim b As Double
Dim c As Double
Private Sub HScroll1_Change()
a = HScroll1.Value
analogiko05.analogiko (a)
bar05.bar (a)
Call calc(a, b)
End Sub
Private Sub HScroll2_Change()
b = HScroll2.Value
analogiko2.analogiko (b)
52
Desarrollo de un conjunto de módulos OCX en V.B. para un sistema de adquisición de datos vía USB
bar2.bar (b)
Call calc(a, b)
End Sub
Private Sub calc(a As Double, b As Double)
c = (((a - b) * 2) * -1) + 255
If (c = 509) Then
c = 510
analogiko55.analogiko (c)
bar55.bar (c)
Else
If (c <= 0) Then
c = 0
analogiko55.analogiko (c)
bar55.bar (c)
Else
If (c < 509) Then
c = (((a - b) * 2) * -1) + 255
analogiko55.analogiko (c)
bar55.bar (c)
End If
End If
End If
End Sub
53