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
© Copyright 2024