• Martes 5 de Noviembre de 2024, 14:40

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - wakowarner

Páginas: [1]
1
Visual Basic 6.0 e inferiores / [peticion] Asignar Valores A Propiedades
« en: Jueves 6 de Enero de 2005, 23:57 »
Estoy desesperado!!!
Necesito de su ayuda para asignar las propiedades a un control que estoy haciendo.
tengo un control llamado VSG, este control tiene como trompecientas propiedades, muchas muy semejantes que se diferencia solo por un numero, hasta aqui todo bien, ahora tambien tengo un timer que refresca el valor de dichas propiedades para cada control (este control es un array), el problema es que esta funcion hace un ciclo for para actualizar cada propiedad y segun el nombre de una etiqueta el programa decide a que propiedad se asigna el valor, pero como hay varias parecidas quisiera que con una sentencia IF instr("nombre parcial de la tag", decida a que propiedad se asigne el valor, les pongo parte de la rutina resumida para que vean de que hablo

Código: Text
  1.  
  2.     For i = 1 To OPCGroupItemsCls.Count
  3.         Set OPCItemToUpdate = OPCGroupItemsCls.Item(Str(i))
  4.        
  5.         ItemValue = OPCItemToUpdate.GetItemValue(1)
  6.         ItemID = OPCItemToUpdate.GetItemID
  7.        
  8.         Call FindRoute(ItemID, IDChannel, IDDevice, IDTag)
  9.         For j = 1 To VSGIndex
  10.             If VSG(j).Channel = IDChannel And VSG(j).Device = IDDevice Then
  11.                 Select Case IDTag
  12.                 Case "Mach"
  13.                     VSG(j).Mach = ItemValue
  14.                 Case "LampGreen"
  15.                     VSG(j).Lampgreen = ItemValue
  16.                 Case "LampRed"
  17.                     VSG(j).LampRed = ItemValue
  18.                 Case "LampAmber"
  19.                     VSG(j).LampAmber = ItemValue
  20.                 Case "DT1000"
  21.                     VSG(j).DT1000 = ItemValue
  22.                 Case "DT1001"
  23.                     VSG(j).DT1001 = ItemValue
  24.                 Case "DT1002"
  25.                     VSG(j).DT1002 = ItemValue
  26.                 Case "DT1003"
  27.                     VSG(j).DT1003 = ItemValue
  28.                 Case "DT1004"
  29.                     VSG(j).DT1004 = ItemValue
  30.                 Case "DT1005"
  31.                     VSG(j).DT1005 = ItemValue
  32.                 Case "BadWeld"
  33.                     VSG(j).Badweld = ItemValue
  34.                 Case "DropedParts"
  35.                     VSG(j).DropedParts = ItemValue
  36.                 Case "EpoxyLosses"
  37.                     VSG(j).EpoxyLosses = ItemValue
  38.                 Case "TwistedAnodes"
  39.                     VSG(j).TwistedAnodes = ItemValue
  40.                 Case "EmptyPockets"
  41.                     VSG(j).EmptyPockets = ItemValue
  42.                 Case "Case"
  43.                     Select Case ItemValue
  44.                     Case 1
  45.                         VSG(j).Size = "D"
  46.                     Case 2
  47.                         VSG(j).Size = "B"
  48.                     Case 4
  49.                         VSG(j).Size = "A"
  50.                     Case 8
  51.                         VSG(j).Size = "C"
  52.                     Case 16
  53.                         VSG(j).Size = "X"
  54.                     End Select
  55.                 Case "StopBit"
  56.                     If VSG(j).Lampgreen = False And VSG(j).ErrorCode = "" And ItemValue = True Then
  57.                         VSG(j).ErrorCode = "R166"
  58.                         VSG(j).ErrorDescription = "Stop Button Pressed"
  59.                     End If
  60.                 Case "BitLdframe"
  61.                     If Monitor = False Then
  62.                         Dim Direccion As String
  63.                         Direccion = IDChannel & "." & IDDevice
  64.                         If ItemValue = True And VSG(j).LdfrmFlag = 0 Then
  65.                             VSG(j).Leadframe = ""
  66.                             Call UpdateItem(Direccion & ".ErrLdframe", 1)
  67.                         ElseIf ItemValue = True And VSG(j).LdfrmFlag = 1 Then
  68.                             Call UpdateItem(Direccion & ".ErrLdframe", 0)
  69.                             Call UpdateItem(Direccion & ".BitLdframe", 0)
  70.                         ElseIf ItemValue = False Then
  71.                             VSG(j).LdfrmFlag = 0
  72.                         End If
  73.                     End If
  74.                 Case "Batchreset"
  75.                     If ItemValue = True Then
  76.                         Call UpdateItem(IDChannel & "." & IDDevice & ".Batchreset", 0)
  77.                     End If
  78.                 Case "BatchLoaded"
  79.                     If Monitor = False Then
  80.                         Dim Direccion1 As String
  81.                         Direccion1 = IDChannel & "." & IDDevice & ".BatchLoaded"
  82.                         If Len(VSG(j).Batch) = 0 And VSG(j).DT1002 > 0 Then
  83.                             Call UpdateItem(Direccion1, 1)
  84.                         Else
  85.                             Call UpdateItem(Direccion1, 0)
  86.                     End If
  87.                     End If
  88.                 Case "LdframeYield"
  89.                     If ItemValue < 1001 Then
  90.                         'Para no guardar un valor falso del inicio
  91.                         VSG(j).LeadFrameYield = ItemValue / 10
  92.                     End If
  93.                
  94.                 End Select
  95.  
  96.  

hay una parte donde las propiedades van desde .Welder01 hasta .Welder20 y como no quiero hacer un select quisiera hacer algo como...

[CODE]
If Instr(TAG,"Welder") then
   VSG(j).<aqui va algo> = itemvalue
endif
Citar

lo que quiero saber es si es posible hacer una coleccion con las propiedades del objeto o una especie de puntero de tal manera que el codigo sepa a que de los welder debe asignarsele el valor, no se si me explico, si quieren puedo adjuntar el archivo, aunque dudo que lo puedan hacer correr sin una API que necesita

Saludos!!

2
Microcontroladores / Otro Proyecto De Infrarrojos
« en: Sábado 21 de Febrero de 2004, 14:49 »
Solo para comentarles que estoy por inicar un proyecto de control de luz por luz infrarroja. He visto proyectos que controlan reles o algunos otros de proposito general, pero lo que yo quiero es lo siguiente.

Control Universal en formato RC5 programable
Control de potencia variable
Apagado y Encendido gradual (es decir que prenda despacio y se apague igual)
Un Timer de apagado para que cuando nos vayamos a la cama nos de tiempo de acostarnos antes de apagar la luz

El proyecto es bastante simple (hay otros muy buenos por aqui), he incluso he visto uno parecido en la revista Elektor pero creo que es con un chip Atmel y no es facil conseguirlo donde vivo. asi creo voy a usar un chip, aun no decido si sera un 16f84 o uno de la serie 16f87x.

Hasta ahorita el principal problema es la velocidad con que ocurren los eventos, necesito un detector de cruce por cero para detectar el inicio de la onda. la frecuencia aqui es de 60 Hz (Por cierto, soy de Mexico), asi que eso me da periodos de 8.33 mS, y y un comando de RC5 dura 24.889mS, asi que tengo que implementar algo que parezca multitarea, creo que voy a poner un timer que dure 444uS, que es lo que dura un bit de RC5 y generar bases de tiempo para verificar una lista de tareas (aun no lo tengo bien definido).

Otra caracteristica del circuito es que no voy a emplear transformador sino uno un divisor de tension, solo que eso representa un problema (ademas de la limitada corriente que suministra), ya que el divisor usa capacitores en serie lo que defasa el voltaje y me crea problemas para detectar el cruce por cero (indispensable para disparar el triac).

En fin, eso es lo que pretendo hacer; soy nuevo en este foro y espero aprender mucho con la ayuda de ustedes.

saludos! :kicking:

Páginas: [1]