# VB.net a VC#2008 ayuda con migración de código



## Moyano Jonathan (Feb 10, 2010)

Hola a todos.....en este momento estoy experimentando un poco con USB en modo HID usando un PIC18F2550 , programando en CCS v4.104 y Visual C#2008 para la PC.
Ahora mi consulta es la siguiente...
yo tengo un programa de control básico usando VB.net y easyHID...

```
' Acá está el código fuente del main...
    Public Class Form1

    Private Const VendorID As Short = 6017  ' Definimos el VendorID.
    Private Const ProductID As Short = 2000 ' Definimos el ProductID.

    ' Declaramos los buffer's de entrada y salida de datos.
    Private Const BufferInSize As Short = 8  ' Definimos el tamaño del buffer entrada.
    Private Const BufferOutSize As Short = 8 ' Definimos el tamaño del buffer de salida.
    Dim BufferIn(BufferInSize) As Byte
    Dim BufferOut(BufferOutSize) As Byte

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ConnectToHID(Me) ' Al ejecutarse el formulario conectamos el dispositivo al controlador.
    End Sub

    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        DisconnectFromHID() ' Si cerramos el formulario desconectamos el dispositivo del controlador.
    End Sub

    ' Si se conecta el dispositivo al host...
    Public Sub OnPlugged(ByVal pHandle As Integer)
        If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
            Me.estado.BackColor = Color.Green
            Me.estado_conexion.Text = "CONECTADO"
        End If
    End Sub

    ' Si se desconecta el dispositivo del host...
    Public Sub OnUnplugged(ByVal pHandle As Integer)
        If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
            hidSetReadNotify(hidGetHandle(VendorID, ProductID), False)
            Me.estado.BackColor = Color.Red
            Me.estado_conexion.Text = "DESCONECTADO"
        End If
    End Sub

    Public Sub OnChanged() ' LLama a todas las funciones de mensajes.
        Dim pHandle As Integer
        pHandle = hidGetHandle(VendorID, ProductID)
        hidSetReadNotify(hidGetHandle(VendorID, ProductID), True)
    End Sub

    ' Si recibimos un dato...
    Public Sub OnRead(ByVal pHandle As Integer)
        If hidRead(pHandle, BufferIn(0)) Then
            ' Aqui se reciben los datos a partir del BufferIn(1) = dato del micro..
        End If
    End Sub

    Public Sub WriteSomeData() ' Si hay un dato listo para enviar...
        hidWriteEx(VendorID, ProductID, BufferOut(0))
    End Sub

    Private Sub boton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles boton.Click
        BufferOut(1) = 1
        Call WriteSomeData()
    End Sub
End Class
```
Y la librería de control :


```
Imports System
Imports System.Threading
Imports System.Runtime.InteropServices ' Clase para importar la DLL.


Module HIDDLLInterface
    'Declaramos todas las funciones.
    Declare Function hidConnect Lib "mcHID.dll" Alias "Connect" (ByVal pHostWin As Integer) As Boolean
    Declare Function hidDisconnect Lib "mcHID.dll" Alias "Disconnect" () As Boolean
    Declare Function hidGetItem Lib "mcHID.dll" Alias "GetItem" (ByVal pIndex As Integer) As Integer
    Declare Function hidGetItemCount Lib "mcHID.dll" Alias "GetItemCount" () As Integer
    Declare Function hidRead Lib "mcHID.dll" Alias "Read" (ByVal pHandle As Integer, ByRef pData As Byte) As Boolean
    Declare Function hidWrite Lib "mcHID.dll" Alias "Write" (ByVal pHandle As Integer, ByRef pData As Byte) As Boolean
    Declare Function hidReadEx Lib "mcHID.dll" Alias "ReadEx" (ByVal pVendorID As Integer, ByVal pProductID As Integer, ByRef pData As Byte) As Boolean
    Declare Function hidWriteEx Lib "mcHID.dll" Alias "WriteEx" (ByVal pVendorID As Integer, ByVal pProductID As Integer, ByRef pData As Byte) As Boolean
    Declare Function hidGetHandle Lib "mcHID.dll" Alias "GetHandle" (ByVal pVendoID As Integer, ByVal pProductID As Integer) As Integer
    Declare Function hidGetVendorID Lib "mcHID.dll" Alias "GetVendorID" (ByVal pHandle As Integer) As Integer
    Declare Function hidGetProductID Lib "mcHID.dll" Alias "GetProductID" (ByVal pHandle As Integer) As Integer
    Declare Function hidGetVersion Lib "mcHID.dll" Alias "GetVersion" (ByVal pHandle As Integer) As Integer
    Declare Function hidGetVendorName Lib "mcHID.dll" Alias "GetVendorName" (ByVal pHandle As Integer, ByVal pText As String, ByVal pLen As Integer) As Integer
    Declare Function hidGetProductName Lib "mcHID.dll" Alias "GetProductName" (ByVal pHandle As Integer, ByVal pText As String, ByVal pLen As Integer) As Integer
    Declare Function hidGetSerialNumber Lib "mcHID.dll" Alias "GetSerialNumber" (ByVal pHandle As Integer, ByVal pText As String, ByVal pLen As Integer) As Integer
    Declare Function hidGetInputReportLength Lib "mcHID.dll" Alias "GetInputReportLength" (ByVal pHandle As Integer) As Integer
    Declare Function hidGetOutputReportLength Lib "mcHID.dll" Alias "GetOutputReportLength" (ByVal pHandle As Integer) As Integer
    Declare Sub hidSetReadNotify Lib "mcHID.dll" Alias "SetReadNotify" (ByVal pHandle As Integer, ByVal pValue As Boolean)
    Declare Function hidIsReadNotifyEnabled Lib "mcHID.dll" Alias "IsReadNotifyEnabled" (ByVal pHandle As Integer) As Boolean
    Declare Function hidIsAvailable Lib "mcHID.dll" Alias "IsAvailable" (ByVal pVendorID As Integer, ByVal pProductID As Integer) As Boolean

    'Funciones para desplegar mensajes.

    Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Integer, ByVal hwnd As Integer, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
                                          (ByVal hwnd As Integer, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer

    Delegate Function SubClassProcDelegate(ByVal hwnd As Integer, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    Public Declare Function DelegateSetWindowLong Lib "USER32.DLL" Alias "SetWindowLongA" _
                                           (ByVal hwnd As Integer, ByVal attr As Integer, ByVal lval As SubClassProcDelegate) As Integer


    ' Constantes de la aplicación.
    Public Const WM_APP As Integer = 32768
    Public Const GWL_WNDPROC As Short = -4

    ' Constantes de mensajes de HID.
    Private Const WM_HID_EVENT As Decimal = WM_APP + 200
    Private Const NOTIFY_PLUGGED As Short = 1
    Private Const NOTIFY_UNPLUGGED As Short = 2
    Private Const NOTIFY_CHANGED As Short = 3
    Private Const NOTIFY_READ As Short = 4

    ' Variables locales.
    Private FPrevWinProc As Integer
    Private FWinHandle As Integer
    Private Ref_WinProc As New SubClassProcDelegate(AddressOf WinProc)
    Private HostForm As Object

    'Espera a recibir un mensaje del controlador HOST y luego se conecta a el mediante la librería de 
    'Funciones.
    Public Function ConnectToHID(ByRef targetForm As Form) As Boolean
        Dim pHostWin As Integer = targetForm.Handle.ToInt32
        FWinHandle = pHostWin
        pHostWin = hidConnect(FWinHandle)
        FPrevWinProc = DelegateSetWindowLong(FWinHandle, GWL_WNDPROC, Ref_WinProc)
        HostForm = targetForm
    End Function

    ' Se desconecta del HOST.
    Public Function DisconnectFromHID() As Boolean
        DisconnectFromHID = hidDisconnect
        SetWindowLong(FWinHandle, GWL_WNDPROC, FPrevWinProc)
    End Function

    Private Function WinProc(ByVal pHWnd As Integer, ByVal pMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
        If pMsg = WM_HID_EVENT Then
            Select Case wParam

                ' Mensaje de que un dispositivo se ha conectado al host.
                Case Is = NOTIFY_PLUGGED
                    HostForm.OnPlugged(lParam)
                    ' Mensaje de que un dispositivo se ha desconectado del host.
                Case Is = NOTIFY_UNPLUGGED
                    HostForm.OnUnplugged(lParam)
                    ' El controlador ha cambiado.
                Case Is = NOTIFY_CHANGED
                    HostForm.OnChanged()
                    ' Se he recibido un dato.
                Case Is = NOTIFY_READ
                    HostForm.OnRead(lParam)
            End Select
        End If
        WinProc = CallWindowProc(FPrevWinProc, pHWnd, pMsg, wParam, lParam)

    End Function
End Module
```
Mi pregunta es como poder migrar este código que está en VB.net a VC#2008 
	

	
	
		
		

		
			





 No se mucho de programación de aplicaciones pero me gustaría saber como poder llamar a las funciones de mcHID.dl que es la librería de easyHID en VC# 2008.

Cualquier ayuda es bienvenida


----------



## Meta (Feb 11, 2010)

Hola:

Ahora mismo voy a clase hacer examen. Cuando pueda intentaré sea como sea pasarlo a C#. Por ahora lo he puesto aquí.

http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/64a62a83-5dfa-4243-91e5-0d4674b7ba8b

El convertidos no funciona a la primera, tendré que investigar paso a paso a ver si me deja.

http://www.developerfusion.com/tools/convert/csharp-to-vb/

Saludo.


----------



## Moyano Jonathan (Feb 11, 2010)

muchas gracias meta por tu ayuda desinteresada...esa librería me la está poniendo dificil pero vas a ver que va a salir andando eso tenelo por seguro


----------



## Meta (Feb 11, 2010)

```
using System; 
using System.Threading; 
using System.Runtime.InteropServices; 
// Clase para importar la DLL. 

static class HIDDLLInterface 
{ 
    [DllImport("mcHID.dll", EntryPoint = "Connect", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern bool hidConnect(int pHostWin); 
    [DllImport("mcHID.dll", EntryPoint = "Disconnect", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern bool hidDisconnect(); 
    [DllImport("mcHID.dll", EntryPoint = "GetItem", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int hidGetItem(int pIndex); 
    [DllImport("mcHID.dll", EntryPoint = "GetItemCount", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int hidGetItemCount(); 
    [DllImport("mcHID.dll", EntryPoint = "Read", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern bool hidRead(int pHandle, ref byte pData); 
    [DllImport("mcHID.dll", EntryPoint = "Write", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern bool hidWrite(int pHandle, ref byte pData); 
    [DllImport("mcHID.dll", EntryPoint = "ReadEx", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern bool hidReadEx(int pVendorID, int pProductID, ref byte pData); 
    [DllImport("mcHID.dll", EntryPoint = "WriteEx", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern bool hidWriteEx(int pVendorID, int pProductID, ref byte pData); 
    [DllImport("mcHID.dll", EntryPoint = "GetHandle", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int hidGetHandle(int pVendoID, int pProductID); 
    [DllImport("mcHID.dll", EntryPoint = "GetVendorID", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int hidGetVendorID(int pHandle); 
    [DllImport("mcHID.dll", EntryPoint = "GetProductID", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int hidGetProductID(int pHandle); 
    [DllImport("mcHID.dll", EntryPoint = "GetVersion", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int hidGetVersion(int pHandle); 
    [DllImport("mcHID.dll", EntryPoint = "GetVendorName", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int hidGetVendorName(int pHandle, string pText, int pLen); 
    [DllImport("mcHID.dll", EntryPoint = "GetProductName", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int hidGetProductName(int pHandle, string pText, int pLen); 
    [DllImport("mcHID.dll", EntryPoint = "GetSerialNumber", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int hidGetSerialNumber(int pHandle, string pText, int pLen); 
    [DllImport("mcHID.dll", EntryPoint = "GetInputReportLength", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int hidGetInputReportLength(int pHandle); 
    [DllImport("mcHID.dll", EntryPoint = "GetOutputReportLength", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int hidGetOutputReportLength(int pHandle); 
    [DllImport("mcHID.dll", EntryPoint = "SetReadNotify", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern void hidSetReadNotify(int pHandle, bool pValue); 
    [DllImport("mcHID.dll", EntryPoint = "IsReadNotifyEnabled", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern bool hidIsReadNotifyEnabled(int pHandle); 
    [DllImport("mcHID.dll", EntryPoint = "IsAvailable", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern bool hidIsAvailable(int pVendorID, int pProductID); 
    [DllImport("user32", EntryPoint = "CallWindowProcA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int CallWindowProc(int lpPrevWndFunc, int hwnd, int Msg, int wParam, int lParam); 
    [DllImport("user32", EntryPoint = "SetWindowLongA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int SetWindowLong(int hwnd, int nIndex, int dwNewLong); 
    //Declaramos todas las funciones. 
    
    //Funciones para desplegar mensajes. 
    
    
    public delegate int SubClassProcDelegate(int hwnd, int msg, int wParam, int lParam); 
    [DllImport("USER32.DLL", EntryPoint = "SetWindowLongA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
    public static extern int DelegateSetWindowLong(int hwnd, int attr, SubClassProcDelegate lval); 
    
    
    // Constantes de la aplicación. 
    public const int WM_APP = 32768; 
    public const short GWL_WNDPROC = -4; 
    
    // Constantes de mensajes de HID. 
    private const decimal WM_HID_EVENT = WM_APP + 200; 
    private const short NOTIFY_PLUGGED = 1; 
    private const short NOTIFY_UNPLUGGED = 2; 
    private const short NOTIFY_CHANGED = 3; 
    private const short NOTIFY_READ = 4; 
    
    // Variables locales. 
    private static int FPrevWinProc; 
    private static int FWinHandle; 
    private static SubClassProcDelegate Ref_WinProc = new SubClassProcDelegate(WinProc); 
    private static object HostForm; 
    
    //Espera a recibir un mensaje del controlador HOST y luego se conecta a el mediante la librería de 
    //Funciones. 
    public static bool ConnectToHID(ref Form targetForm) 
    { 
        int pHostWin = targetForm.Handle.ToInt32; 
        FWinHandle = pHostWin; 
        pHostWin = hidConnect(FWinHandle); 
        FPrevWinProc = DelegateSetWindowLong(FWinHandle, GWL_WNDPROC, Ref_WinProc); 
        HostForm = targetForm; 
    } 
    
    // Se desconecta del HOST. 
    public static bool DisconnectFromHID() 
    { 
        bool functionReturnValue = false; 
        functionReturnValue = hidDisconnect; 
        SetWindowLong(FWinHandle, GWL_WNDPROC, FPrevWinProc); 
        return functionReturnValue; 
    } 
    
    private static int WinProc(int pHWnd, int pMsg, int wParam, int lParam) 
    { 
        if (pMsg == WM_HID_EVENT) { 
            switch (wParam) { 
                
                // Mensaje de que un dispositivo se ha conectado al host. 
                case // ERROR: Case labels with binary operators are unsupported : Equality NOTIFY_PLUGGED: 
                    HostForm.OnPlugged(lParam); 
                    break; 
                // Mensaje de que un dispositivo se ha desconectado del host. 
                case // ERROR: Case labels with binary operators are unsupported : Equality NOTIFY_UNPLUGGED: 
                    HostForm.OnUnplugged(lParam); 
                    break; 
                // El controlador ha cambiado. 
                case // ERROR: Case labels with binary operators are unsupported : Equality NOTIFY_CHANGED: 
                    HostForm.OnChanged(); 
                    break; 
                // Se he recibido un dato. 
                case // ERROR: Case labels with binary operators are unsupported : Equality NOTIFY_READ: 
                    HostForm.OnRead(lParam); 
                    break; 
            } 
        } 
            
        return CallWindowProc(FPrevWinProc, pHWnd, pMsg, wParam, lParam); 
    } 
}
```


----------



## Moyano Jonathan (Feb 11, 2010)

Justamente meta estaba probado los códigos en un programa de ejemplo ...hasta ahora todo va bien pero hay un error que me está costando descifrar cuál es :
public static bool ConnectToHID(ref Form1 targetForm)
    {
        int pHostWin = targetForm.Handle.ToInt32;
        FWinHandle = pHostWin;
        pHostWin = hidConnect(FWinHandle);
        FPrevWinProc = DelegateSetWindowLong(FWinHandle, GWL_WNDPROC, Ref_WinProc);
        HostForm = targetForm;
    }

me tira el error: no se puede encontrar el tipo o nombre de espacio de nombres "Form" (¿falta una referencia using o una referencia de ensamblado ?)


----------



## Meta (Feb 11, 2010)

Repondí por aquí abajo, pero no lo se exactamente que elemento es.

http://social.msdn.microsoft.com/Fo...74b7ba8b#f798bfbb-446d-47cb-a2b9-1be7fe793c71

¿Puedes pasarme el código fuente? Quiero mirar el error personalmente.






Saludo.


----------



## Moyano Jonathan (Feb 12, 2010)

Ahora meta me voy a poner a hacer un programa de ejemplo para pasarte por que el primero lo borré accidentalmente 
La verdad está costando mucho hacerlo funcionar pero de poder se puede


----------



## Meta (Feb 12, 2010)

Si se puede hacer, , lo que  no tenemos los conocimientos suficientes, así que requiere investigación y tiempo, pero se puede y lo lograremos. Ánimo.

También lo estoy haciendo por otro lado, sobre pasar C# a VB .Net y a Visual C++.

http://electronica-pic.blogspot.com/2010/01/interfaz-puerto-paralelo.html

Saludo.


----------



## Moyano Jonathan (Feb 13, 2010)

Bueno meta como había dicho acá te dejo la primera versión del código fuente  pero con 16 errores para correjir....pude correjir de forma eficaz el problema de llamar a las funciones desde la librería ....pero hay funciones que no están bien hechas...datos que no se como están definidos...etc
como vos decis de a poco se va a ir haciendo hasta que el proyecto salga funcionando


----------



## Meta (Feb 13, 2010)

Estoy viendo el ejemplo:

Por lo que veo no está completo porque hay muchos avisos.


```
Error    2    El método debe tener un tipo de valor devuelto    C:\Documents and Settings\Hunter\Mis documentos\Descargas\picHID\picHID\picHID\picHID.cs    30    9    picHID
```

Aquí dejé el archivo de descarga para que lo vean.
http://social.msdn.microsoft.com/Fo...74b7ba8b#dd93ef1b-5b7a-43e9-bfab-5bc720742873

La verdad es que hay errores de void, es decir, no puedes llamar a un void porque ese void no le haz incluido un proceso. El proceso no existe y esos son los avisos que veo, entre otros que no entiendo.


----------



## Moyano Jonathan (Feb 13, 2010)

hay cosas que no entiendo sobre esta librería pero de a poco lo voy a ir viendo ..gracias meta

acá está de vuelta el código pero con 9 errores  , ahora está un poco más correjido pero igual hay varios problemas que no puedo solucionar ....
al igual que la otra vez te dejo el adjunto para q lo veas .

PD: también dejo la lista de errores correspondientes a esta versión


----------



## Meta (Feb 15, 2010)

Por ahora hay que buscar partes por partes hasta lograr la solución.









Ya queda menos, o eso parece. Aquí por ahora hay que resolver la conversión bien de bool a int y al revés.


----------



## Moyano Jonathan (Feb 15, 2010)

Si el problema de la conversión de tipos es lo que me ha dado el mayor problema...hay que buscar como convertir una variable bool en int.

por lo menos ya son menos errores....gracias meta


----------



## Meta (Feb 15, 2010)

A lo mejor aquí está lo salución.

http://msdn.microsoft.com/es-es/library/t2htb6f1%28VS.80%29.aspx

http://msdn.microsoft.com/es-es/library/08h86h00(VS.80).aspx



Saludo y sigo investigando.


----------



## Moyano Jonathan (Feb 15, 2010)

PD: creo que le encontré solución ...voy a probar y posteo resultados


```
public static bool ConnectToHID(ref Form targetForm)
        {
            bool pHostWin = Convert.ToBoolean(targetForm.Handle);
            FWinHandle = Convert.ToInt32(FWinHandle);
            pHostWin = hidConnect(FWinHandle);
            FPrevWinProc = DelegateSetWindowLong(FWinHandle, GWL_WNDPROC, Ref_WinProc);
            HostForm = targetForm;
//INSTANT C# NOTE: Inserted the following 'return' since all code paths must return a value in C#:
            return false;
        }
```
Ahi me dejó de mostrar ese error  ahora me llama la atención : //INSTANT C# NOTE: Inserted the following 'return' since all code paths must return a value in C#:


A que se deberá esa nota ??

Viendo los otros errores:

```
1    No se puede pasar '<this>' como argumento out o ref porque es de sólo lectura    C:\Documents and Settings\Flia. Moyano\Escritorio\Electrónica\easyHID c#\Form1.cs    32    37    easyHID_VB.net 2008
Error    
2    'object' no contiene una definición de 'OnPlugged' ni se encontró ningún método de extensión 'OnPlugged' que acepte un primer argumento de tipo 'object' (¿falta una directiva de uso o una referencia de ensamblado?)    C:\Documents and Settings\Flia. Moyano\Escritorio\Electrónica\easyHID c#\Module1.cs    122    16    easyHID_VB.net 2008
Error    
3    'object' no contiene una definición de 'OnUnplugged' ni se encontró ningún método de extensión 'OnUnplugged' que acepte un primer argumento de tipo 'object' (¿falta una directiva de uso o una referencia de ensamblado?)    C:\Documents and Settings\Flia. Moyano\Escritorio\Electrónica\easyHID c#\Module1.cs    126    16    easyHID_VB.net 2008
Error    
4    'object' no contiene una definición de 'OnChanged' ni se encontró ningún método de extensión 'OnChanged' que acepte un primer argumento de tipo 'object' (¿falta una directiva de uso o una referencia de ensamblado?)    C:\Documents and Settings\Flia. Moyano\Escritorio\Electrónica\easyHID c#\Module1.cs    130    16    easyHID_VB.net 2008
Error   
5    'object' no contiene una definición de 'OnRead' ni se encontró ningún método de extensión 'OnRead' que acepte un primer argumento de tipo 'object' (¿falta una directiva de uso o una referencia de ensamblado?)    C:\Documents and Settings\Flia. Moyano\Escritorio\Electrónica\easyHID c#\Module1.cs    134    16    easyHID_VB.net 2008
```
 ya son menos, pero igual hay algunos que no entiendo


----------



## Meta (Feb 15, 2010)

Veo que lo enlaces que te puse te resultó de ayuda algo. Por lo que veo, que menos los errores, andas muy bien. Voy a investigar que_ using_ y _referencia_ falta, porque la verdad no los encuentro.



Los errores que me aparecen son:
*Error    1    'object' no contiene una definición de 'OnPlugged' ni se encontró ningún método de extensión 'OnPlugged' que acepte un primer argumento de tipo 'object' (¿falta una directiva de uso o una referencia de ensamblado?)    C:\Documents and Settings\Usuario\Escritorio\easyHID c#\Module1.cs    122    16    easyHID_VB.net 2008



http://en.csharp-online.net/Design-Time_Integration—Host_Form_Integration

http://msdn.microsoft.com/es-es/library/aa289500(en-us,VS.71).aspx

http://www.google.es/#hl=es&q=HostForm+c#&meta=&aq=f&oq=HostForm+c#&fp=a0524c7b64d27806


*


----------



## Moyano Jonathan (Feb 15, 2010)

Si meta al parecer la correccion de errores ha traido de manos ....funciones que no tengo idea de su comportamiento...

Sigo investigando a ver que pasa...pero como me estás dando una mano grande...creo que en algunos días la vamos a tener andando


----------



## Meta (Feb 16, 2010)

Si te fijas en el cuadro o rectángulo azul, *throw new NotImplementedException();*

Quita todo esa línea y ahí va instrucciones de lo que buscas.


----------



## Moyano Jonathan (Feb 16, 2010)

Meta disculpame la ignorancia...pero a que te referís con 





> Quita todo esa línea y ahí va instrucciones de lo que buscas.


 ??


----------



## Meta (Feb 16, 2010)

Que donde pone:

*throw new NotImplementedException();

*está de adorno por decirlo de alguna manera. Lo boras y tienes que poner los códigos para el funcionamiento del OnPlugged.

Puedes poner cualquier función que haga algo, si lo dejas como está, no hace nada. Hace algo si pones esto:
*
Console.Writeline ("Hola mundo");*

Ya es algo, pero si lo dejas como *throw new NotImplementedException(); *es como si estuviera en blanco.


----------



## Moyano Jonathan (Feb 16, 2010)

ok gracias meta ahora lo cambio


----------



## Moyano Jonathan (Feb 17, 2010)

Bueno meta como vos decis ahora si puedo llamar a las funcionas que te mencionaba anteriormente pero no puedo relacionar los procedimientos según ocurran los sucesos...es decir cuando el dispositivo USB se conecta genera una interrupción dentro del programa ...el programa gestiona el proceso y me muestra una pantalla que dice "CONECTADO" igual cuando se desconecta....se recibe un dato , etc...

Ahora el programa me muestra solamente un error pero creo que es algo que me estoy pasando por alto. 


```
Error    1    No se puede pasar '<this>' como argumento out o ref porque es de sólo lectura    C:\Documents and Settings\Flia. Moyano\Escritorio\Electrónica\easyHID c#\Form1.cs    32    37    easyHID_VB.net 2008
```
Te pongo una inmágen de la modificación de código que hice :






Este es el código anterior en donde ponía  *HostForm.OnPlugged(lParam);* ahi se devolvía un valor lparam a Windowsproc....lo que yo quiero hacer es que mi función devuelva el mismo valor pero no me deja.



```
private static int WinProc(int pHWnd, int pMsg, int wParam, int lParam)
        {
            if (pMsg == WM_HID_EVENT)
            {
                switch (wParam)
                {    

                    // Mensaje de que un dispositivo se ha conectado al host.
                    case NOTIFY_PLUGGED:
                        HostForm.OnPlugged(lParam);
                        // Mensaje de que un dispositivo se ha desconectado del host.
                        break;
                    case 
                        HostForm.OnUnplugged(lParam);
                        // El controlador ha cambiado.
                        break;
                    case NOTIFY_CHANGED:
                        HostForm.OnChanged();
                        // Se he recibido un dato.
                        break;
                    case NOTIFY_READ:
                        HostForm.OnRead(lParam);
                        break;
                }
            }
            return CallWindowProc(FPrevWinProc, pHWnd, pMsg, wParam, lParam);

        }
```

También te paso el código fuente del programa.


----------

