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
Í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
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
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. Analogiko05 b. Analogiko55 c. Bar05 d. Bar55 e. Grafikh05 f. Grafikh55 g. Gain h. 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: Los métodos son los siguientes: NombreOCX.Método(parámetro) Archivos Métodos Parámetros Descripción OCX Analogiko05 Analogiko a 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. Analogiko55 Analogiko a 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. Bar05 Bar a 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. Bar55 Bar a 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. Grafikh05 Paint a 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. Grafikh55 Paint a 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. Gain Gain a, b, c 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. Metro ------- ------- Solo tiene 4 textboxes para escribir el mínimo, máximo, valor, título que quiere introducir. 4
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
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
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 : borra todas las opciones que están en el formulario Cancel : 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
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
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
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
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
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
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
Capítulo 6.0 El Código 6.1 Código de archivos OCX 6.1.1 Analogiko05 Dim x As Long Dim y As Long Dim xarxiko As Long Dim yarxiko As Long Dim xteliko As Long Dim yteliko As Long Dim angleg As Double Dim angler As Double Dim inp As Double Private Sub Timer1_Timer() analogiko (a) 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
yteliko = yarxiko - y 6.1.2 Analogiko55 Dim x As Long Dim y As Long Dim xarxiko As Long Dim yarxiko As Long Dim xteliko As Long Dim yteliko As Long Dim angleg As Double Dim angler As Double Dim inp As Double Dim a As Integer Private Sub Timer1_Timer() analogiko (a) 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 15
6.1.3 Bar05 Private Sub Timer1_Timer() bar (a) Public Sub bar(a As Integer) Picture1.Height = 2650 - a * 10.3 If (Picture1.Height >= 2650) Then Picture1.Height = 2650 If (Picture1.Height <= 24) Then Picture1.Height = 25 6.1.4 Bar55 Dim a As Integer Private Sub Timer1_Timer() bar (a) 16
Public Sub bar(a As Integer) Picture1.Height = 2655 - a * 5 If (Picture1.Height >= 2655) Then Picture1.Height = 2655 If (Picture1.Height <= 115) Then Picture1.Height = 15 6.1.5 Grafikh05 Dim ay As Integer Dim ax As Integer Dim by As Integer Dim bx As Integer Dim countg As Boolean Dim a As Integer 17
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 Timer1.Enabled = True Timer1.Interval = 200 Private Sub Command4_Click() countg = True Timer1.Enabled = False Timer2.Enabled = False Private Sub Command5_Click() Picture1.Cls ax = 400 countg = False Private Sub Timer1_Timer() grafikh (a) Private Sub Timer2_Timer() grafikh2 (a) 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 Private Sub grafikh2(b As Integer) by = b * 10.3 Picture1.Line (ax, ay)-((ax + 30), by), RGB(255, 0, 0) 18
Picture1.DrawWidth = 3 ax = ax + 50 ay = by If ax = 7700 Then Picture1.Refresh ax = 400 Private Sub UserControl_Initialize() ay = 2625 by = 2625 Public Sub paint(c As Integer) a = 255 - c / 1.1 6.1.6 Grafikh55 Dim ay As Integer 19
Dim ax As Integer Dim by As Integer Dim bx As Integer Dim countg As Boolean Dim a As Integer Dim 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 Timer1.Enabled = True Timer1.Interval = 200 Private Sub Command4_Click() countg = True Timer1.Enabled = False Timer2.Enabled = False Private Sub Command5_Click() Picture1.Cls ax = 400 countg = False Private Sub Timer1_Timer() grafikh (a) Private Sub Timer2_Timer() grafikh2 (a) Private Sub UserControl_Initialize() ay = 5050 by = 5050 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
If ax = 7700 Then Picture1.Refresh ax = 400 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 Public Sub paint(c As Integer) a = 255 * 1.92 - c / 1.1 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 = Text7.Text Text6.Text = Text8.Text Text2.Text = Text10.Text Text1.Text = ((Text6.Text - Text5.Text) / 2) + Text5.Text 21
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 If (amount >= Text7.Text And amount < (0.05 * inp + Text7.Text)) Then Line1.X2 = 720 Line1.Y2 = 1800 If (amount >= (0.05 * inp + Text7.Text) And amount < (0.1 * inp + Text7.Text)) Then Line1.X2 = 720 Line1.Y2 = 1680 If (amount >= (0.1 * inp + Text7.Text) And amount < (0.15 * inp + Text7.Text)) Then Line1.X2 = 720 Line1.Y2 = 1460 If (amount >= (0.15 * inp + Text7.Text) And amount < (0.2 * inp + Text7.Text)) Then Line1.X2 = 840 Line1.Y2 = 1280 If (amount >= (0.2 * inp + Text7.Text) And amount < (0.25 * inp + Text7.Text)) Then Line1.X2 = 960 Line1.Y2 = 1050 22
If (amount >= (0.25 * inp + Text7.Text) And amount < (0.3 * inp + Text7.Text)) Then Line1.X2 = 1080 Line1.Y2 = 855 If (amount >= (0.3 * inp + Text7.Text) And amount < (0.35 * inp + Text7.Text)) Then Line1.X2 = 1200 Line1.Y2 = 720 If (amount >= (0.35 * inp + Text7.Text) And amount < (0.4 * inp + Text7.Text)) Then Line1.X2 = 1350 Line1.Y2 = 650 If (amount >= (0.4 * inp + Text7.Text) And amount < (0.45 * inp + Text7.Text)) Then Line1.X2 = 1650 Line1.Y2 = 500 If (amount >= (0.45 * inp + Text7.Text) And amount < (0.5 * inp + Text7.Text)) Then Line1.X2 = 1900 Line1.Y2 = 440 If (amount >= (0.5 * inp + Text7.Text) And amount < (0.55 * inp + Text7.Text)) Then Line1.X2 = 2145 Line1.Y2 = 400 If (amount >= (0.55 * inp + Text7.Text) And amount < (0.6 * inp + Text7.Text)) Then Line1.X2 = 2350 Line1.Y2 = 440 If (amount >= (0.6 * inp + Text7.Text) And amount < (0.65 * inp + Text7.Text)) Then Line1.X2 = 2650 Line1.Y2 = 510 If (amount >= (0.65 * inp + Text7.Text) And amount < (0.7 * inp + Text7.Text)) Then Line1.X2 = 2850 Line1.Y2 = 600 If (amount >= (0.7 * inp + Text7.Text) And amount < (0.75 * inp + Text7.Text)) Then Line1.X2 = 3050 Line1.Y2 = 720 If (amount >= (0.75 * inp + Text7.Text) And amount < (0.8 * inp + Text7.Text)) Then 23
Line1.X2 = 3190 Line1.Y2 = 860 If (amount >= (0.8 * inp + Text7.Text) And amount < (0.85 * inp + Text7.Text)) Then Line1.X2 = 3280 Line1.Y2 = 970 If (amount >= (0.85 * inp + Text7.Text) And amount < (0.9 * inp + Text7.Text)) Then Line1.X2 = 3420 Line1.Y2 = 1200 If (amount >= (0.9 * inp + Text7.Text) And amount < (0.95 * inp + Text7.Text)) Then Line1.X2 = 3520 Line1.Y2 = 1480 If (amount >= (0.95 * inp + Text7.Text) And amount < (inp + Text7.Text)) Then Line1.X2 = 3580 Line1.Y2 = 1600 If (amount = Text8.Text) Then Line1.X2 = 3600 Line1.Y2 = 1800 Private Sub Command2_Click() 24
Picture1.Visible = False Text7.Visible = True Text8.Visible = True Text9.Visible = True Text10.Visible = True Private Sub UserControl_Initialize() Picture1.Visible = False Text7.Visible = True Text8.Visible = True Text9.Visible = True Text10.Visible = True 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 25
If (amount >= (0.05 * inp + a) And amount < (0.1 * inp + a)) Then Line1.X2 = 720 Line1.Y2 = 1680 If (amount >= (0.1 * inp + a) And amount < (0.15 * inp + a)) Then Line1.X2 = 720 Line1.Y2 = 1460 If (amount >= (0.15 * inp + a) And amount < (0.2 * inp + a)) Then Line1.X2 = 840 Line1.Y2 = 1280 If (amount >= (0.2 * inp + a) And amount < (0.25 * inp + a)) Then Line1.X2 = 960 Line1.Y2 = 1050 If (amount >= (0.25 * inp + a) And amount < (0.3 * inp + a)) Then Line1.X2 = 1080 Line1.Y2 = 855 If (amount >= (0.3 * inp + a) And amount < (0.35 * inp + a)) Then Line1.X2 = 1200 Line1.Y2 = 720 If (amount >= (0.35 * inp + a) And amount < (0.4 * inp + a)) Then Line1.X2 = 1350 Line1.Y2 = 650 If (amount >= (0.4 * inp + a) And amount < (0.45 * inp + a)) Then Line1.X2 = 1650 Line1.Y2 = 500 If (amount >= (0.45 * inp + a) And amount < (0.5 * inp + a)) Then Line1.X2 = 1900 Line1.Y2 = 440 If (amount >= (0.5 * inp + a) And amount < (0.55 * inp + a)) Then Line1.X2 = 2145 Line1.Y2 = 400 If (amount >= (0.55 * inp + a) And amount < (0.6 * inp + a)) Then 26
Line1.X2 = 2350 Line1.Y2 = 440 If (amount >= (0.6 * inp + a) And amount < (0.65 * inp + a)) Then Line1.X2 = 2650 Line1.Y2 = 510 If (amount >= (0.65 * inp + a) And amount < (0.7 * inp + a)) Then Line1.X2 = 2850 Line1.Y2 = 600 If (amount >= (0.7 * inp + a) And amount < (0.75 * inp + a)) Then Line1.X2 = 3050 Line1.Y2 = 720 If (amount >= (0.75 * inp + a) And amount < (0.8 * inp + a)) Then Line1.X2 = 3190 Line1.Y2 = 860 If (amount >= (0.8 * inp + a) And amount < (0.85 * inp + a)) Then Line1.X2 = 3280 Line1.Y2 = 970 If (amount >= (0.85 * inp + a) And amount < (0.9 * inp + a)) Then Line1.X2 = 3420 Line1.Y2 = 1200 If (amount >= (0.9 * inp + a) And amount < (0.95 * inp + a)) Then Line1.X2 = 3520 Line1.Y2 = 1480 If (amount >= (0.95 * inp + a) And amount < (inp + a)) Then Line1.X2 = 3580 Line1.Y2 = 1600 If (amount = b) Then Line1.X2 = 3600 Line1.Y2 = 1800 27
28
6.2 Código de programa principal 6.2.1 Forma 1 Dim chkarray2(5) As Boolean Private Sub Exit_Click() End Private Sub Settings_Click() Unload Form1 Form2.Visible = True Public Sub Start_Click() Dim count As Integer For i = 0 To 4 If (chkarray2(i) = False) Then count = count + 1 Next i If (count = 5) Then MsgBox ("No Settings") 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
If (chkarray2(0) = True And chkarray2(1) = False) Then Form3.grafikh05.Visible = chkarray2(4) If (chkarray2(0) = False And chkarray2(1) = True) Then Form3.grafikh55.Visible = chkarray2(4) If (chkarray2(0) = True And chkarray2(1) = True) Then Form3.grafikh55.Visible = chkarray2(4) Public Sub record(chkarray() As Boolean) For i = 0 To 4 chkarray2(i) = chkarray(i) Next i 6.2.2 Forma 2 Public Sub Accept_Click() Dim count As Integer Dim chkarray(5) As Boolean Dim countg As Integer chkarray(0) = Check1.Value chkarray(1) = Check3.Value chkarray(2) = Check5.Value chkarray(3) = Check7.Value chkarray(4) = Check9.Value 30
Call Form1.record(chkarray()) For i = 0 To 4 If (chkarray(i) = False) Then count = count + 1 If (chkarray(i) = True) Then countg = 1 Next i If (count = 5) Then MsgBox ("Make a choise") If (count < 5) Then Unload Form2 Form1.Visible = True Private Sub Cancel_Click() Unload Form2 Form1.Visible = True 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 If (Check3.Value = False) Then Check9.Enabled = False Check9.Value = False 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 If (Check1.Value = False) Then Check9.Enabled = False 31
Check9.Value = False Private Sub Reset_Click() Check1.Value = False Check3.Value = False Check5.Value = False Check7.Value = False Check9.Value = False 6.2.3 Forma 3 Dim a As Integer Dim b As Integer Private Sub Command1_Click() Unload Form3 Form1.Visible = True Private Sub Command2_Click() End Private Sub HScroll1_Change() a = HScroll1.Value 32
bar05.bar (a) analogiko05.analogiko (a) grafikh05.paint (a) Private Sub HScroll2_Change() b = HScroll2.Value analogiko55.analogiko (b * 2) grafikh55.paint (b * 2) Bar55.bar (b * 2) 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) If (a < 82) Then 33
b = 255 + (a * (-3.1)) analogiko55.analogiko (b) bar55.bar (b - 0.05) grafikh55.paint (b) analogiko05.analogiko (a) bar05.bar (a) 6.3.2 C_326 Dim a As Double Dim b As Double Dim c As Double Dim d As Double Dim e As 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) 34
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 analogiko05.analogiko (a) bar05.bar (a) Call gain1.gain(-12, 12, c) 6.3.3 C_337 Dim a As Double Dim b As Double Dim c As Double Dim d As Double Dim e As Double Dim p As Double Private Sub HScroll1_Change() a = HScroll1.Value If (b >= 331.8) Then a = 255 35
b = 255 + (a * 0.3) c = 0.3 analogiko55.analogiko (b) bar55.bar (b - 0.05) 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) analogiko05.analogiko (a) bar05.bar (a) Call gain1.gain(-2, 2, c) 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
b = 0 analogiko55.analogiko (b) bar55.bar (b - 0.05) grafikh55.paint (b) If (a < 87) Then b = 255 + (a * (-3)) analogiko55.analogiko (b) bar55.bar (b - 0.05) grafikh55.paint (b) analogiko05.analogiko (a) bar05.bar (a) 6.3.5 C_350 Dim a As Double Dim b As Double Dim c As Double Dim d As Double Dim e As Double Private Sub HScroll1_Change() a = HScroll1.Value 37
If (b >= 383) Then a = 255 b = 255 + (a * 0.5) c = 0.5 analogiko55.analogiko (b) bar55.bar (b - 0.05) 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) analogiko05.analogiko (a) bar05.bar (a) Call gain1.gain(0.1, 1.2, c) 6.3.6 C_358 Dim a As Double Dim b As Double Dim c As Double 38
Private Sub HScroll1_Change() a = HScroll1.Value analogiko05.analogiko (a) bar05.bar (a) Call calc(a, b) Private Sub HScroll2_Change() b = HScroll2.Value analogikoref.analogiko (b) barref.bar (b) Call calc(a, b) 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) If (c = 0) Then c = 0 analogiko55.analogiko (c) bar55.bar (c) If (c > 0 And c < 509) Then c = (2 * a - b) + 255 analogiko55.analogiko (c) bar55.bar (c) 39
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) If (a < 127) Then b = 255 + (a * 2) analogiko55.analogiko (b) bar55.bar (b - 0.05) grafikh55.paint (b) analogiko05.analogiko (a) bar05.bar (a) 40
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) : If (a = 0) Then b = 255 analogiko55.analogiko (b) bar55.bar (b) : If (b < 510) Then b = (a * 9.8) + 255 analogiko55.analogiko (b) bar55.bar (b) 41
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) 6.3.10 C_387 42
Dim a As Double Dim b As Double Dim c As Double Dim d As Double Private Sub HScroll1_Change() a = HScroll1.Value analogiko05.analogiko (a) bar05.bar (a) Call calc(a, b) Private Sub HScroll2_Change() b = HScroll2.Value analogiko2.analogiko (b) bar2.bar (b) Call calc(a, b) 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) If (c > 0) Then c = 255 - d analogiko55.analogiko (c) bar55.bar (c) 43
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) Private Sub HScroll2_Change() b = HScroll2.Value analogiko2.analogiko (b) bar2.bar (b) Call calc(a, b) 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) If (c < 509) Then c = a + b + 255 analogiko55.analogiko (c) 44
bar55.bar (c) 6.3.12 C_420 Dim a As Double Dim b As Double Dim c As Double Dim d As Double Dim p As Double Private Sub HScroll1_Change() a = HScroll1.Value analogiko05.analogiko (a) Call calc(a, b, p) Private Sub HScroll2_Change() b = HScroll2.Value analogiko2.analogiko (b) Call calc(a, b, p) 45
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) If (c <= 0) Then c = 0 analogiko55.analogiko (c) Call gain2(a, b, c, p) If (c < 509 And c > 0) Then c = ((b - a) * ((2 * 10 + p) / p)) + 255 analogiko55.analogiko (c) Call gain2(a, b, c, p) 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) d = (2 * 10 + p) / p Call gain1.gain(0, 6, d) Private Sub HScroll3_Change() p = HScroll3.Value Text5.Text = " " & (HScroll3.Value) Call calc(a, b, p) 46
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) Private Sub HScroll2_Change() b = HScroll2.Value analogiko2.analogiko (b) bar2.bar (b) Call calc(a, b) Private Sub calc(a As Double, b As Double) c = (a - b) + 255 analogiko55.analogiko (c) bar55.bar (c) 47
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) Private Sub HScroll2_Change() b = HScroll2.Value analogiko2.analogiko (b) bar2.bar (b) Call calc(a, b) 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) If (c <= 0) Then c = 0 analogiko55.analogiko (c) 48
bar55.bar (c) If (c < 509) Then c = ((a - b) * 2) + 255 analogiko55.analogiko (c) bar55.bar (c) 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) Private Sub HScroll2_Change() b = HScroll2.Value analogiko2.analogiko (b) 49
bar2.bar (b) Call calc(a, b) 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) If (c <= 0) Then c = 0 analogiko55.analogiko (c) bar55.bar (c) If (c < 509) Then c = ((a - b) * 2) + 255 analogiko55.analogiko (c) bar55.bar (c) 6.3.16 C_464 50
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) Private Sub HScroll2_Change() b = HScroll2.Value analogiko2.analogiko (b) bar2.bar (b) Call calc(a, b) Call calc2(a, b) 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) If (c <= 0) Then c = 0 analogiko55.analogiko (c) bar55.bar (c) If (c < 509) Then c = ((b - a) * 2) + 255 analogiko55.analogiko (c) bar55.bar (c) 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) If (c <= 0) Then c = 0 analogiko22.analogiko (c) 51
bar22.bar (c) If (c < 509) Then c = (a - b) + 255 analogiko22.analogiko (c) bar22.bar (c) 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) Private Sub HScroll2_Change() b = HScroll2.Value analogiko2.analogiko (b) 52
bar2.bar (b) Call calc(a, b) 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) If (c <= 0) Then c = 0 analogiko55.analogiko (c) bar55.bar (c) If (c < 509) Then c = (((a - b) * 2) * -1) + 255 analogiko55.analogiko (c) bar55.bar (c) 53