Duda Con Propiedades Y Clases


Objetivo: Duda Con Propiedades Y Clases
Muy buenas tardes,

tengo el siguiente problema que no sé por dónde atajarlo: estoy creando una clase para controlar una placa de prototipos. En ésta clase defino cómo se va a comunicar con el sistema. La placa cuenta con una serie de entradas y salidas, y me gustaría consultar su estado referiéndome a ellas de la siguiente manera desde MMain.Main():

Dim hSistema as new SistemaACDI

hSistema.StartSocket 'Esto inicia la comunicación
Print hSistema.Inputs[0].Status 'Esto imprimiría el estado de la entrada 0...
Print hSistema.Inputs[0].Name 'Se imprime el nombre asociado a esa entrada
Print hSistema.Inputs[1].Status 'Esto haría lo mismo para la entrada 1, etc
Print hSistema.Inputs[1].Name 'etc, etc

Bien, he probado a crear una clase que se llama Inputs y en ella hay definida una propiedad que se llama 'Status' y otra 'Name' que retornan el valor de una variable de tipo boolean y otra de tipo string respectivamente. Digamos que la clase SistemaACDI tiene este código:

Public Property Inputs as Input[]
...
Public Sub Inputs_Read () As Input[]
...
End

pero esto no resulta, o no sé bien como devolver el estado por medio de Public Sub Inputs_Read() as Input[]

Alguien por favor podría echarme una mano?. La verdad que estoy un poco atascado en este punto, puesto que esto tengo que hacerlo tanto para entradas como para salidas. Uso Gambas3, estoy desarrollando esta aplicación como aplicación para consola.

Gracias de antemano y un saludo,
eleektro

última edición por eleektro el Domingo, 20 May 2012, 17:02; editado 2 veces
Perfil MP  
Objetivo: Re: Duda Con Propiedades Y Clases
Te falta el constructor inicial en la clase SistemaACDI , te dejo como lo haria yo:

1º defino la clase input...
' gambas class file

Property Name As String
Private hname As String

Property status As Boolean
Private hstatus As Boolean

Private Function status_Read() As Boolean

Return hstatus

End

Private Sub status_Write(Value As Boolean)

hstatus = Value

End

Private Function Name_Read() As String

Return hname

End

Private Sub Name_Write(Value As String)

hname = value

End


2º Defino la clase SistemaACDI
Property inputs As Input[]

Private hinputs As New Input[]


'-------------------------------------------------------
' constructor: defino el estado inicial de la clase
'-------------------------------------------------------
Public Sub _new()
Dim a As Integer
hInputs.Resize(11) ' tendra como maximo 11 inputs... (de 0 a 10)
For a = 0 To hinputs.count-1
hInputs[a] = New Input 'creo las instancias del array...
Next

End



Private Function inputs_Read() As Input[]

Return hinputs

End

Private Sub inputs_Write(Value As Input[])

hinputs = value

End



3: Funcion Mmain:
' gambas module file

Public Sub Main()
Dim hsistema As New SistemaACDI

hsistema.Inputs[0].Name = "hola"
hsistema.Inputs[0].status = True

hsistema.Inputs[1].Name = "adios"
hsistema.Inputs[1].status = False


Print hsistema.Inputs[0].Name, hsistema.Inputs[0].status
Print hsistema.Inputs[1].Name, hsistema.Inputs[1].status
Print "Numero de inputs: ", hsistema.inputs.count
End

última edición por jsbsan el Domingo, 20 May 2012, 19:59; editado 1 vez

InputAplicacion-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: InputAplicacion-0.0.1.tar.gz
Tamaño: 4.76 KB
Descargado: 52 veces
InputAplicacion-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: InputAplicacion-0.0.1.tar.gz
Tamaño: 4.76 KB
Descargado: 52 veces
InputAplicacion-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: InputAplicacion-0.0.1.tar.gz
Tamaño: 4.76 KB
Descargado: 52 veces

Objetivo: Re: Duda Con Propiedades Y Clases
Muchísimas gracias, me ha quedado claro. Yo para salir del paso habia instanciado la clase Inputs de la siguiente manera en SistemaACDI:

Public Inputs[11] as Inputs
...
Public Sub _new()
...
For i = 0 to 10
Inputs[i] = New Inputs
Next
...
End

Pero, a parte de no conseguir exactamente lo que me había yo propuesto, no tenía manera de que cuando se leyera el valor de la propiedad status, status_read() accediera al objeto SerialPort que tengo declarado en la clase padre SistemaACDI.

Con esto como te digo, perfecto. Y de verdad, gracias por contestarme tan concienzudamente, te lo agradezco sobremanera.

Un saludo a tod@s!!

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 7.285s (PHP: -98% SQL: 198%)
Consultas SQL: 49 - Debug off - GZIP Activado