Vb.NET 2008 Duda con asignación de datos

Hola a todos , en mi desarrollo de aplicaciones para USB he tenido algunas complicaciones básicas sobre la programación y quería saber si me podrían brindar ayuda.
Mi problema es el siguiente:
Tengo una serie de TextBox en Visual Basic.NET 2008 que tienen que pasar el valor que introduce el usuario a variables dentro del programa, pero la dificultad se me presenta cuando
quiero asignarle el valor me presenta una excepción con un error que dice lo siguiente:
Error 1 La referencia a un miembro no compartido requiere una referencia de objeto. C:\Documents and Settings\Flia. Moyano\Escritorio\ELECTRONICA\EJERCICIOS HID VB.net\EJERCICIO Nº 1 HID\Form1.vb 3 39 EJERCICIO Nº 1 HID

acá la porción de código

Private Const VendorID As Short = Vid_dispositivo.Text yo necesito que lo que el usuario ponga en el cuadro de texto ( que es un valor hexadecimal ) lo asigne a la variable VendorID.

Si alguien me puede dar una mano le estaré agradecido (y)
 
Private Const VendorID As Short = Vid_dispositivo.Text

mira lo intento...

pero yo creo que el error esta en que lo declaras como cosntante...

ponle Private VendorID As Short = Vid_dispositivo.

las constantes no pueden cambiar de valor....

espero sea eso...
saludos...
 
mirá me sigue mostrando error por que me parece que el tipo de dato no concuerda :S
Private VendorID As Short = Convert.ToInt16(Val(VID_BOX.Text)) acá le cambio el tipo de dato ...pero me muestra un error que no me deja ejecutar el formulario ...

El tipo de datos del texbox es string ....y quiero asignar el valor de dicho texbox a l variable VendorID pero no me deja....
 
y asi nada mas...
Private VendorID As Short = Val(VID_BOX.Text)
te marca error????????

es que esta medio raro... no puedes subir la rutina completa??????
 
Última edición:
es que este dato no afecta a otra parte de la rutina ..... VendorID tiene que ser del tipo short. Ahora VID_BOX entrega un string....ese string lo tendría que asignar a una variable del mismo tipo ...por ejemplo a...ahora tendríamos que cambiar el tipo string a short para que me acepte el dato VendorID.
Ahi es en donde se me está complicando :s
 
Me sigue marcando el mismo error....la verdad no se que es :S ya lo voy a seguir investigando pero me tiene atonito que algo tan simple me de este dolor de cabeza...pero ya lo vamos a solucionar es cuestión de tiempo....:S
 
Es que no entiendo....

si pones msgbox (Val("&H" & "FF")) te va aponer 255

lo que no se es como y donde estas declarando la variable....

para mi ahi esta lo raro...

espero lo resuelvas....

saludos...
 
Ya sé! EL problema está en la forma en que estás declarando e inicializando la variable. El signo igual no puede ir donde lo has puesto, sino que el valor va a lado del nombre de la variable, que sería algo como:
Private VendorID = CShort(VID_BOX.Text) As Short
pero dudo mucho que el compilador lo acepte (?)

Por que no declarás en una linea e inicializás en otra?
 
Bueno hasta ahora no pude hacerlo andar asi que pongo una explicación detallada de lo que se quiere:
1º - El programa es una ejemplo de los muchos de USB que he posteado pero con la diferencia que los parámetros como VID, PID, IN_BUFF, OUT_BUFF , se cargan mediante TexBox que están en el formulario.

2º - Las variables que se manejan son del tipo short con lo cuál los datos que se le deben asignar a dichas variables tienen que tener el mismo tipo.

3º - Pongo las variables en cuestion.

Dim VendorID As Short = &H1781 Acá está definido el ID del vendedor del producto USB.
Dim ProductID As Short = &H7D0 Acá está definido el ID del producto USB.


Dim BufferInSize As Short = 8 Acá está definido el tamaño del Buffer de entrada de datos.
Dim BufferOutSize As Short = 8 Acá está definido el tamaño del Buffer de salida de datos.

4º - Las variables nombradas anteriormente están definidas con constantes, en mi programa se tienen que cargar desde los correspondientes TextBox que tienen asignados como muestra la siguiente figura:

Dibujo2.jpg

5º - Luego de asignarle a cada TexBox un valor determinado pongo conectar dispositivo.

6º - Mi problema concretamente reside en como asignarle el valor del textBOX correspondiente a la variable que muestro en el punto 3.

7º - Hasta ahora los diferentes intentos que he hecho por asignarle los datos me han dado la siguiente ventana de error al ejecutar el programa:
Dibujo-1.jpg


Ahi es donde tengo el problema....no se como pasarle el valor a una variable del tipo short cuando el Texbox entrega un valor del tipo string

Ya he probado todas las formas que he encontrado en internet y las que me han proporcionado ustedes pero no he tenido exito. :confused:

Voy a seguir investigando :rolleyes:

Les pongo el código del programa:
Código:
Public Class Form1

    Dim VendorID As Short = &H1781
    Dim ProductID As Short = &H7D0   'product and vendor IDs

    ' read and write buffers
    Dim BufferInSize As Short = 1 'Size of the data buffer coming IN to the PC
    Dim BufferOutSize As Short = 1    'Size of the data buffer going OUT from the PC
    Dim BufferIn(BufferInSize) As Byte          'Received data will be stored here - the first byte in the array is unused
    Dim BufferOut(BufferOutSize) As Byte    'Transmitted data is stored here - the first item in the array must be 0

    ' ****************************************************************
    ' when the form loads, connect to the HID controller - pass
    ' the form window handle so that you can receive notification
    ' events...
    '*****************************************************************
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        USB_ESTADO.BackColor = Color.Blue
    End Sub

    '*****************************************************************
    ' disconnect from the HID controller...
    '*****************************************************************
    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        DisconnectFromHID()
    End Sub

    '*****************************************************************
    ' a HID device has been plugged in...
    '*****************************************************************
    Public Sub OnPlugged(ByVal pHandle As Integer)
        If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then

            USB_ESTADO.BackColor = Color.Green
        End If
    End Sub

    '*****************************************************************
    ' a HID device has been unplugged...
    '*****************************************************************
    Public Sub OnUnplugged(ByVal pHandle As Integer)
        If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
            hidSetReadNotify(hidGetHandle(VendorID, ProductID), False)
            USB_ESTADO.BackColor = Color.Red
        End If
    End Sub

    '*****************************************************************
    ' controller changed notification - called
    ' after ALL HID devices are plugged or unplugged
    '*****************************************************************
    Public Sub OnChanged()
        ' get the handle of the device we are interested in, then set
        ' its read notify flag to true - this ensures you get a read
        ' notification message when there is some data to read...
        Dim pHandle As Integer
        pHandle = hidGetHandle(VendorID, ProductID)
        hidSetReadNotify(hidGetHandle(VendorID, ProductID), True)
    End Sub

    '*****************************************************************
    ' on read event...
    '*****************************************************************
    Public Sub OnRead(ByVal pHandle As Integer)
        ' read the data (don't forget, pass the whole array)...
        If hidRead(pHandle, BufferIn(0)) Then
            ' ** YOUR CODE HERE **
            ' first byte is the report ID, e.g. BufferIn(0)
            ' the other bytes are the data from the microcontroller...
        End If
    End Sub

    Private Sub CONECTAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CONECTAR.Click
        ConnectToHID(Me)
    End Sub
End Class

Espero poder solucionarlo asi sigo con mis ejemplos sobre USB :cool:

Un saludo !
 
Pues no entiendo muy bien

yo hago esto y me funciona
Código:
Public Class Form1
    Inherits System.Windows.Forms.Form


    Private jorge As Short
[B]    'crear un textbox
    'crear un label
    'crear un commandbottom[/B]

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        jorge = (Val(TextBox1.Text))
        label1.text=jorge
       ' en el textbox pongo &HFF

    End Sub
End Class

Ya ya..

es que no puedes asignarle el valor en el inicio....

prueba asignar el valor al cargar el formulario....

en el procedimiento load... me explico

asi mas o menos
Código:
Public Class Form1

    Dim VendorID As Short 
    Dim ProductID As Short = &H7D0   'product and vendor IDs

    ' read and write buffers
    Dim BufferInSize As Short = 1 'Size of the data buffer coming IN to the PC
    Dim BufferOutSize As Short = 1    'Size of the data buffer going OUT from the PC
    Dim BufferIn(BufferInSize) As Byte          'Received data will be stored here - the first byte in the array is unused
    Dim BufferOut(BufferOutSize) As Byte    'Transmitted data is stored here - the first item in the array must be 0

    ' ****************************************************************
    ' when the form loads, connect to the HID controller - pass
    ' the form window handle so that you can receive notification
    ' events...
    '*****************************************************************
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        USB_ESTADO.BackColor = Color.Blue
        [B]vendorID=val(vid_box.text)[/B]
    End Sub

    '*****************************************************************
    ' disconnect from the HID controller...
    '*****************************************************************
    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        DisconnectFromHID()
    End Sub

    '*****************************************************************
    ' a HID device has been plugged in...
    '*****************************************************************
    Public Sub OnPlugged(ByVal pHandle As Integer)
        If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then

            USB_ESTADO.BackColor = Color.Green
        End If
    End Sub

    '*****************************************************************
    ' a HID device has been unplugged...
    '*****************************************************************
    Public Sub OnUnplugged(ByVal pHandle As Integer)
        If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
            hidSetReadNotify(hidGetHandle(VendorID, ProductID), False)
            USB_ESTADO.BackColor = Color.Red
        End If
    End Sub

    '*****************************************************************
    ' controller changed notification - called
    ' after ALL HID devices are plugged or unplugged
    '*****************************************************************
    Public Sub OnChanged()
        ' get the handle of the device we are interested in, then set
        ' its read notify flag to true - this ensures you get a read
        ' notification message when there is some data to read...
        Dim pHandle As Integer
        pHandle = hidGetHandle(VendorID, ProductID)
        hidSetReadNotify(hidGetHandle(VendorID, ProductID), True)
    End Sub

    '*****************************************************************
    ' on read event...
    '*****************************************************************
    Public Sub OnRead(ByVal pHandle As Integer)
        ' read the data (don't forget, pass the whole array)...
        If hidRead(pHandle, BufferIn(0)) Then
            ' ** YOUR CODE HERE **
            ' first byte is the report ID, e.g. BufferIn(0)
            ' the other bytes are the data from the microcontroller...
        End If
    End Sub

    Private Sub CONECTAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CONECTAR.Click
        ConnectToHID(Me)
    End Sub
End Class
 
Última edición:
El error es claro: Estas tratando de asignar algo que NO ES UN OBJETO a una REFERENCIA A OBJETO.
Como .NET usa autoboxing y autounboxing, y como no se vé donde está marcado el error poco mas puedo decirte, pero fijate la forma en la que estás asignando y cambiá eso: Declará en una línea y asigná en otra. Las cosas simples hay que mantenerlas simples, así que dejá de mezclar código con cosas raras.

Por otra parte, no podés inicializar las variables donde pretendés hacerlo, por que esa declaración e inicialización se van a ejecutar antes de que tengas disponibles los textbox para cargarles algo. Poné un botón o algo que al hacerle click te inicialice las variables declaradas previamente, por que si nó, no entiendo como vas a cargar los textbox, salvos que le pongas un string constante predefinido...pero para eso, hubieras cargado directamente con las constantes...
 
Ciertamente; un par de cosas...
1ro: Se debe de esperar a que los controles se creen y muy a menudo cargar un valor a una variable desde un control se hace en el evento "Form1_Load" o en su defecto en el evento "Form1_Shown".
2do: Según la imagen de los TextBox no veo nada asignado, ocurre que no hay ningún argumento para convertir lo que genera un error. Así que mejor te recomiendo iniciar con unos valores por defecto y cargarlos en los textBox y cuando hacen clic en el botón, recién asignes el dato de los textbox a dichas variables; teniendo en cuenta que los TextBox tenga un argumento válido para la convención (en este caso solo acepte números)...
 
Hola a todos , en mi desarrollo de aplicaciones para USB he tenido algunas complicaciones básicas sobre la programación y quería saber si me podrían brindar ayuda.
Mi problema es el siguiente:
Tengo una serie de TextBox en Visual Basic.NET 2008 que tienen que pasar el valor que introduce el usuario a variables dentro del programa, pero la dificultad se me presenta cuando
quiero asignarle el valor me presenta una excepción con un error que dice lo siguiente:
Error 1 La referencia a un miembro no compartido requiere una referencia de objeto. C:\Documents and Settings\Flia. Moyano\Escritorio\ELECTRONICA\EJERCICIOS HID VB.net\EJERCICIO Nº 1 HID\Form1.vb 3 39 EJERCICIO Nº 1 HID

acá la porción de código

Private Const VendorID As Short = Vid_dispositivo.Text yo necesito que lo que el usuario ponga en el cuadro de texto ( que es un valor hexadecimal ) lo asigne a la variable VendorID.

Si alguien me puede dar una mano le estaré agradecido (y)

Estas queriendo definir una variable con un dato que no se cargo aun!

Defini la variable y luego de leer el text.box le asignas el nuevo valor... ;)
 
Bueno quiero decirles a todos que gracias a ustedes pude solucionar mi problema y mi aplicación ya corre como debe. Muchas gracias nuevamente por su tiempo y dedicación se lo agradezco mucho

bueno para todos acá les muestro la solución:


1º - El problema era debido a algo básico relacionado a la programación en general: No podemos asignarle a una variable declarada un valor nulo o que aún no se ha cargado, he aquí el error en si
puteo.gif


2º - Las variables short, si pueden tomar datos de un texbox aunque los mismo entreguen strings.

3º - Solución entonces : Al no poder cargar una variable con un valor aún no estipulado por el usuario, entonces nos ayudamos del evento TextChanged con esto elimanos este error y los datos se asignan siempre y cuando el evento ocurra; es decir cuando el usuario cargue elementos al TexBox.

Les muestro como se hace entonces.

Nosotros teniamos la siguiente variable entera de 16 bits con signo.
Dim VendorID As Short

luego le cargamos datos en cuanto el usuario dispare el evento de cambios en el texbox:

Private Sub Vid_dispositivo_TextChanged(ByVal sender As System.Object, ByVal As System.EventArgs) Handles Vid_dispositivo.TextChanged
VendorID = (Val(Vid_dispositivo.Text))
End Sub

y problema más que solucionado
rolleyes2.gif
rolleyes2.gif


Espero que les sirva !
 
Última edición:
Tengo un problema parecido ojala puedan orientarme seguro que es sencillo para programadores,
mi problema es el siguiente
En mi maquina el programa funciona muy bien, hago el encapsulado lo instalo en otra maquina y me sale el siguiente error: Error la conversión de la cadena "" en el tipo double no es valida.

dejo mi codigo que he estado moviendo todo el día y no encuentro que pueda ser

dim x6, p1 as integer

Private Sub Button25_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button25.Click

'p1 = (x6 + 1)
'x6 = val(p1)
Label9.Text = Val(Label9.Text + 1) ' val(p1)

End Sub

Private Sub Button24_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button24.Click

If Val(Label9.Text) > 0 Then
'p1 = Val(x6 - 1)
'x6 = Val(p1)
Label9.Text = Val(Label9.Text - 1) 'val(p1)
Else
End If

End Sub

Private Sub Button23_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button23.Click

'x6 = 0
'p1 = Val(x6)
Label9.Text = 0 'val(p1)

End Sub

Son las dos versiones que he hecho el valor inicial de x6 es 0 cuando carga el form,
y no se porque funciona en mi maquina de ambos modos y el otra maquina aparece el error y el programa se cierra, ojala me puedan ayudar en esta duda y gracias de antemano
 
Atrás
Arriba