Autor Tema: Proyecto PicUSB  (Leído 510540 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Proyecto PicUSB
« Respuesta #525 en: 25 de Marzo de 2010, 02:56:58 »
¿Qué son USBOutMessage y USBInMessage? ¿Qué devuelve getOutMessage?
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Proyecto PicUSB
« Respuesta #526 en: 25 de Marzo de 2010, 08:46:01 »
¿Qué son USBOutMessage y USBInMessage? ¿Qué devuelve getOutMessage?

Son unos objetos para mostrarlos por pantalla, y bueno ya funciona... soy un zoquete!! obviamente hay que recibir los datos sino el buffer se queda lleno y eso lo ve el 2550 y avisa.... en fin  :5] conmigo mismo.
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado WOOD_girl

  • PIC12
  • **
  • Mensajes: 56
Re: Proyecto PicUSB
« Respuesta #527 en: 15 de Mayo de 2010, 17:56:25 »
HOLA amigos del foro, actualmente estoy tratando de enviar 700 bytes por USB en modo bulk, hice la simuulación y como se puede ven en las imagenes adjuntas, cuando envio el array por medio del proteus, llegan todos los datos, pero cuando escribo el programa en el pic18F2550 y lo pruebo en el hardware (con la misma aplicación hecha en labview), se pierden gran cantidad de datos asi como se observa en la figura 2. no se a que se deba esto, por que se pierden tantos datos, que esta demorando la llegada de los datos?, espero que alguien pueda ayudarme con ello...

me preguntaba si tiene algo que ver con el timeout que traen tanto la DLL, como la función usb_puts.
Agradezco mucho su colaboración y atencion, gracias

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Proyecto PicUSB
« Respuesta #528 en: 17 de Mayo de 2010, 11:16:20 »
Hola WOOD_girl,  :mrgreen: podrias decirme que herramienta estas usando  en tu aplicacion para verificar la cantidad de datos recibidos a nivel de hardware??

Desconectado WOOD_girl

  • PIC12
  • **
  • Mensajes: 56
Re: Proyecto PicUSB
« Respuesta #529 en: 17 de Mayo de 2010, 11:53:44 »
hola medusa, en realidad lo que uso es un sniffer que permite observar la información que circula por los buses USB del PC. se llama SNOOPYPRO, referenciado por PalitroqueZ  en su post del 18f4550. :g)

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Proyecto PicUSB
« Respuesta #530 en: 17 de Mayo de 2010, 12:39:58 »
Gracias..

Desconectado MAXI

  • PIC10
  • *
  • Mensajes: 34
Re: Proyecto PicUSB
« Respuesta #531 en: 16 de Junio de 2010, 12:42:32 »
Hola J1m!!!
Pude hacer andar la aplicación en XP 32 sin ningun problema, Podra caminar en XP DE 64?

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Proyecto PicUSB
« Respuesta #532 en: 03 de Julio de 2010, 17:07:54 »
Hola J1m!!!
Pude hacer andar la aplicación en XP 32 sin ningun problema, Podra caminar en XP DE 64?

Yo he hecho andar la mpusbapi.dll 1.1 (la última versión) en XP x86, en Vista x86 y en W7x86  pero no consigo controlar la libreria en 64 bits, me tira el bendito error 193 de "No es una aplicación WIN32 válida". Estoy trabajando con Vb.net 2008. La clase que uso para comunicarme con el PIC (y que es la misma que me ha funcionado en los SO de 32 bits) es la siguiente. De paso estuve leyendo que alguien no podia hacer el transpaso de VB6 a Vb.NET, Utilice el marshal para sacar del juego al famoso VarPtr y anda genial, tal vez le sea de utilidad.

Código: [Seleccionar]
Imports System.Runtime.InteropServices.Marshal  'Importa el espacio de nombres que permite interactuar con código no administrado.

Public Class Cls_USB
    'Convenciones de llamada a la librería mpusbapi.dll en C:
    'DWORD  _MPUSBGetDLLVersion(void)
    'DWORD  _MPUSBGetDeviceCount(PCHAR pVID_PID)
    'HANDLE _MPUSBOpen(/*Input */ DWORD instance, /* Input */ PCHAR pVID_PID, /* Input */ PCHAR pEP, /*Input*/ DWORD dwDir, /*Input*/ DWORD dwReserved);
    'DWORD  _MPUSBRead(/*Input*/ HANDLE handle, /*Output*/ PVOID pData, /* Input */DWORD dwLen, /* Output */PDWORD pLength, /*Input*/ DWORD dwMilliseconds);
    'DWORD  _MPUSBWrite(/*Input*/ HANDLE handle, /*Input*/ PVOID pData, /*Input*/ DWORD dwLen, /*Output*/ PDWORD pLength, /*Input*/ DWORD dwMilliseconds);
    'DWORD  _MPUSBReadInt(/*Input*/ HANDLE handle, /*Output*/ PVOID pData, /* Input */DWORD dwLen, /* Output */PDWORD pLength, /*Input*/ DWORD dwMilliseconds);

    'Funciones API equivalentes para llamar desde Visual Basic.NET.
    Private Declare Function MPUSBGetDLLVersion Lib "mpusbapi.dll" Alias "_MPUSBGetDLLVersion" () As Integer
    Private Declare Function MPUSBGetDeviceCount Lib "mpusbapi.dll" Alias "_MPUSBGetDeviceCount" (ByVal pVID_PID As String) As Integer
    Private Declare Function MPUSBOpen Lib "mpusbapi.dll" Alias "_MPUSBOpen" (ByVal instance As Integer, ByVal pVID_PID As String, ByVal pEP As String, ByVal dwDir As Integer, ByVal dwReserved As Integer) As Integer
    Private Declare Function MPUSBClose Lib "mpusbapi.dll" Alias "_MPUSBClose" (ByVal handle As Integer) As Integer
    Private Declare Function MPUSBRead Lib "mpusbapi.dll" Alias "_MPUSBRead" (ByVal handle As Integer, ByVal pData As Integer, ByVal dwLen As Integer, ByRef pLength As Integer, ByVal dwMilliseconds As Integer) As Integer
    Private Declare Function MPUSBWrite Lib "mpusbapi.dll" Alias "_MPUSBWrite" (ByVal handle As Integer, ByVal pData As Integer, ByVal dwLen As Integer, ByRef pLength As Integer, ByVal dwMilliseconds As Integer) As Integer
    Private Declare Function MPUSBReadInt Lib "mpusbapi.dll" Alias "_MPUSBReadInt" (ByVal handle As Integer, ByRef pData() As Byte, ByVal dwLen As Integer, ByRef pLength As Integer, ByVal dwMilliseconds As Integer) As Integer
    'Funciones API externas a mpusbapi.dll.
    Private Declare Function GetLastError Lib "kernel32" () As Integer

    'Constantes de la API.
    Private Const VALOR_INVALIDO_HANDLE As Short = -1
    Private Const ERROR_HANDLE_INVALIDO As Short = 6
    'Constantes de conectividad con el PIC.
    Private Const EP_SALIDA As String = "\MCHP_EP1"        'Endpoint de salida de datos.
    Private Const EP_ENTRADA As String = "\MCHP_EP1"       'Endpoint de entrada de datos.
    Private Const USB_FALLA As Short = 0
    Private Const USB_EXITO As Short = 1
    Private Const USB_TRANSMITIR As Short = 0
    Private Const USB_RECIBIR As Short = 1

    'Variables de la clase.
    Private int_EPRecepcion As Integer          'Endpoint de entrada de datos.
    Private int_EPTransmision As Integer        'Endpoint de salida de datos.
    Private str_VID As String                   'Cadena de 4 caracteres que contiene el Vendor ID.
    Private str_PID As String                   'Cadena de 4 caracteres que contiene el Periferic ID.

    'Eventos de la clase.
    Public Event Falla(ByVal Num_error As Integer, ByVal Descripcion_error As String, ByVal Procedimiento_error As String)

    'Propiedad de lectura y escritura asociada al Vendor ID del dispositivo USB.
    Public Property VID() As String
        Get
            Return str_VID
        End Get
        Set(ByVal Valor As String)
            str_VID = Valor
        End Set
    End Property

    'Propiedad de lectura y escritura asociada al Product ID del dispositivo USB.
    Public Property PID() As String
        Get
            Return str_PID
        End Get
        Set(ByVal Valor As String)
            str_PID = Valor
        End Set
    End Property

    Private Sub Initialize()
        'Define los valores iniciales para los Endpoints.
        int_EPRecepcion = VALOR_INVALIDO_HANDLE
        int_EPTransmision = VALOR_INVALIDO_HANDLE
    End Sub

    Public Function Conectar() As Boolean
        Dim int_NumDispositivos As Integer      'Cantidad de dispositivos con el mismo PID y VID que estan conectados.
        Dim str_VID_PID As String               'Cadena de identificación del dispositivo.

        On Error GoTo TERMINAR

        'Todos los Endpoints adquieren su valor inicial.
        int_EPRecepcion = VALOR_INVALIDO_HANDLE
        int_EPTransmision = VALOR_INVALIDO_HANDLE

        'Arma la cadena de identificación utilizando el PID y el VID.
        str_VID_PID = "vid_" & LCase(str_VID) & "&pid_" & LCase(str_PID)
        'Cuenta cuandos dispositivos USB con el VID y PID requeridos hay conectados.
        int_NumDispositivos = MPUSBGetDeviceCount(str_VID_PID)

        'Si se detectó al menos un dispositivo USB conectado que satisfaga el VID y el PID
        'se abre el puerto USB para la recepción y transmisión de datos.
        If int_NumDispositivos > 0 Then
            int_EPTransmision = MPUSBOpen(0, str_VID_PID, EP_SALIDA, USB_TRANSMITIR, 0)
            int_EPRecepcion = MPUSBOpen(0, str_VID_PID, EP_ENTRADA, USB_RECIBIR, 0)

            'Si no se puede abrir alguno de los Endpoints entonces se muestra una ventana que informa al usuario de lo sucedido.
            If int_EPTransmision = VALOR_INVALIDO_HANDLE Or int_EPRecepcion = VALOR_INVALIDO_HANDLE Then
TERMINAR:
                int_EPTransmision = VALOR_INVALIDO_HANDLE
                int_EPRecepcion = VALOR_INVALIDO_HANDLE

                'Dispara el evento que indica que se produzco un error al tratar de iniciar la comunicación USB.
                RaiseEvent Falla(GetLastError(), "Error al tratar de abrir los Endpoints. EP de salida = " & CStr(int_EPTransmision) & ". EP de entrada = " & CStr(int_EPRecepcion), "Conectar")
            Else
                'Si se pudo abrir el puerto correctamente entonces la función termina retornando el valor TRUE.
                Return True
                Exit Function
            End If
        Else
            'Si no se detecta ningun dispositivo conectado se dispara el evento.
            RaiseEvent Falla(GetLastError(), "No hay ningún dispositivo USB conectado al puerto.", "Conectar")
        End If

        'Si ha ocurrido un error entonces la función retorna el valor False.
        Return False
    End Function

    'Procedimiento para cerrar el periférico USB.
    Public Sub Desconectar()
        On Error GoTo TERMINAR

        'Comprueba si los Endpoints estan abiertos y los cierra en tal caso.
        If int_EPTransmision <> VALOR_INVALIDO_HANDLE Then
            MPUSBClose(int_EPTransmision)
            int_EPTransmision = VALOR_INVALIDO_HANDLE
        End If

        If int_EPRecepcion <> VALOR_INVALIDO_HANDLE Then
            MPUSBClose(int_EPRecepcion)
            int_EPRecepcion = VALOR_INVALIDO_HANDLE
        End If
TERMINAR:
    End Sub

    'Función que envia un cantidad de bytes espefica a traves del puerto USB. Los parámetros son:
    '
    'Datos_Envio:       Matriz de bytes que contienen los datos a enviar.
    'Longitud_Envio:    Longitud en bytes de los datos a enviar.
    'Tiempo_Envio:      Tiempo máximo permitido para el envío en milisegundos.
    Public Function Enviar(ByRef Datos_envio() As Byte, ByVal Longitud_envio As Integer, ByVal Tiempo_envio As Integer) As Boolean
        Dim int_LongDatosEnv As Integer

        'Solo probara de enviar los datos si los Endpoints han sido abiertos correctamente.
        'Si alguno de los Endpoints falla entonces la función retorna el valor False.
        If (int_EPTransmision <> VALOR_INVALIDO_HANDLE And int_EPRecepcion <> VALOR_INVALIDO_HANDLE) Then
            'Llama a la función API que permite enviar datos a traves del puerto USB.
            'Si la función responde que ha podido enviar los datos satisfactoriamente entonces la función retorna el valor True,
            'de lo contrario se verifica el error y la función retorna el valor False.
            If (MPUSBWrite(int_EPTransmision, Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(Datos_envio, 0).ToInt32(), Longitud_envio, int_LongDatosEnv, Tiempo_envio) = USB_EXITO) Then
                Return True
                Exit Function
            Else
                'Dispara el evento que informa sobre una falla en la comunicación USB.
                RaiseEvent Falla(GetLastError(), "Error al tratar de verificar el Handle.", "Enviar")
                'La causa más habitual de este error es que el circuito esté desconectado, por lo tanto cierra el puerto.
                Me.Desconectar()
            End If
        End If
        Return False
    End Function

    'Función que envia un pedido al dispositivo conectado para que le envie datos a traves del puerto USB. Los parámetros son:
    '
    'Datos_Pedido:          Matriz de bytes que contiene el pedido de respuesta a enviar.
    'Longitud_Pedido:       Longitud en bytes del pedido de respuesta.
    'Tiempo_Envio:          Tiempo máximo permitido para el envío del pedido en milisegundos.
    'Datos_Recepcion:       Matriz de bytes que almacena los datos recibidos.
    'Longitud_Recepcion:    Longitud en bytes de los datos a recibir.
    'Tiempo_Recepcion:      Tiempo máximo permitido para la recepcion de los datos en milisegundos.
    Public Function Recibir(ByRef Datos_Pedido() As Byte, ByVal Longitud_Pedido As Integer, ByRef Datos_Recepcion() As Byte, ByRef Longitud_Recepcion As Integer, ByVal Tiempo_Envio As Integer, ByVal Tiempo_Recepcion As Integer) As Boolean
        Dim int_LongitudDatosEnv As Integer
        Dim int_LongitudEsperada As Integer

        'Se espera recibir la misma cantidad de datos que los que se piden.
        int_LongitudEsperada = Longitud_Recepcion

        'Solo probara de enviar los datos si los Endpoints han sido abiertos correctamente.
        'Si alguno de los Endpoints falla entonces la función retorna el valor False.
        If (int_EPTransmision <> VALOR_INVALIDO_HANDLE And int_EPRecepcion <> VALOR_INVALIDO_HANDLE) Then
            'Llama a la función API que permite enviar el pedido de datos a traves del puerto USB.
            'Si se produce un error en el envio del pedido se dispara el evento Falla.
            If (MPUSBWrite(int_EPTransmision, Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(Datos_Pedido, 0).ToInt32(), Longitud_Pedido, int_LongitudDatosEnv, Tiempo_Envio) = USB_EXITO) Then
                'Si la función responde que ha podido enviar el pedido satisfactoriamente entonces se espera los datos desde el dispositivo externo.
                'Si se produce un error mientras se reciben los datos se dispara el evento Falla.
                If (MPUSBRead(int_EPRecepcion, Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(Datos_Recepcion, 0).ToInt32(), int_LongitudEsperada, Longitud_Recepcion, Tiempo_Recepcion) = USB_EXITO) Then
                    'Si la función responde que ha podido recibir los datos satisfactoriamente entonces verifica si la longitud de la información recibida
                    'es igual a la esperada. Si es menor se han perdido datos en la transmisión y la función retorna el valor False.
                    'De lo contrario, la función retorna el valor True indicando que todo se ha desarrollado correctamente.
                    If (Longitud_Recepcion = int_LongitudEsperada) Then
                        Return True
                        Exit Function
                    ElseIf (Longitud_Recepcion < int_LongitudEsperada) Then
                        'Dispara el evento que informa sobre una falla en la comunicación USB.
                        RaiseEvent Falla(GetLastError(), "Pérdida de datos desde el dispositivo.", "Recibir")
                        Return False
                        Exit Function
                    End If
                Else
                    'Dispara el evento que informa sobre una falla en la comunicación USB.
                    RaiseEvent Falla(GetLastError(), "Error al tratar de verificar el Handle.", "Recibir")
                    'La causa más habitual de este error es que el circuito esté desconectado, por lo tanto cierra el puerto.
                    Me.Desconectar()
                End If
            Else
                'Dispara el evento que informa sobre una falla en la comunicación USB.
                RaiseEvent Falla(GetLastError(), "Error al tratar de verificar el Handle.", "Recibir")
                'La causa más habitual de este error es que el circuito esté desconectado, por lo tanto cierra el puerto.
                Me.Desconectar()
            End If
        End If
        'La función retorna el valor FALSE si se ha producido algun error durante la transmisión o recepción.
        Return False
    End Function
End Class

No hace falta revisar mucho el código, el error salta cuando intenta ejecutar la línea "int_NumDispositivos = MPUSBGetDeviceCount(str_VID_PID)" de la funcion CONECTAR() como si el programa fallaria al cargar la libreria. Repito, la clase anda barbaro para SO de 32 bits, pero no se deja andar en 64 bits... inclusive aunque coloque el ejecutable en modo compatibilidad de XP me tira el bendito error 193.

Alguien la ha hecho andar a 64 bits??!? De todas formas lo voy a resolver, como sea  :mrgreen:, ya me he encariñado con los x64... :mrgreen:

Saludos
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Proyecto PicUSB
« Respuesta #533 en: 04 de Julio de 2010, 15:03:12 »
He detectado que en realidad el error 193 proviene del resultado de un error del tipo System.BadImageFormatException que me tira al acceder las funciones de la API, pero bueno, no cambia la cuestión, pues sigue siendo un problema de acceso a la DLL.

Al principio pense que era una cuestion de compatibilidad entre la librería de 32 bits que se estaria intentanto cargar bajo x64, y por eso coloque la DLL en la carpeta SysWOW64, que corresponde al emulador de 32 bits de W7, pero el error sigue apareciendo. Tambien probe de colocar el ejecutable en la carpeta "ProgramFiles (X86)" pero no hay forma de que la libreria se cargue correctamente.

Luego lei en algun que otro post del foro de Microchip que el error se pudiera estar dando por el hecho de que VB.NET invoca las funciones con stdcall en forma predeterminada, mientras que MPUSBAPI.dll es una libreria creada para usar con cdecl (por cuestiones de velocidad). Reescribi el código quitando las instrucciones Declare de Vb.net y utilizando el constructor DLLimport (que permite definir el tipo de convencion de llamada, entre otras cosas) pero aun llamando a la libreria con cdecl la bendita excepcion sigue apareciendo.

No encontre respuesta con el bendito Google, pero lo que si es claro es que muchos han tenido el mismo problema y no solo en VB.net sino tambien en otros lenguajes. Algunos dicen que es necesario recompilar la libreria con stdcall para poder utilizarla en VB.net, pero yo tengo mis dudas, para mi hay algo que se me esta escapando. Lo que si voy a ver si pruebo es de insertar directamente el código de la libreria dentro de mi programa y asi me evito todo este lio de llamar a la DLL.

Alguien ha hecho funcionar la MPUSBAPI.DLL bajo algun sistema operativo de 64 bits??? No importa que lenguaje haya utilizado, si alguien la hizo andar, eso me va a ser de mucha ayuda...

Saludos!!!
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Proyecto PicUSB
« Respuesta #534 en: 05 de Julio de 2010, 06:26:23 »
Alguien ha hecho funcionar la MPUSBAPI.DLL bajo algun sistema operativo de 64 bits??? No importa que lenguaje haya utilizado, si alguien la hizo andar, eso me va a ser de mucha ayuda...

Yo les voy a decir quien ha hecho funcionar la MPUSBAPI.DLL bajo algun sistema operativo de 64 bits!!! YOOOOOOOOOOO!!!!  :D :D :D :D

He dado con la solución... Definitivamente era un problema de que el programa estaba intentando hacer funcionar algo de 32 bits compilandolo como si fuera de 64. Aparentemente no es suficiente colocar la libreria en la carpeta del emulador WOW64 o el programa en la carpeta de programa de 32 bits. Hay que indicarle explicitamente al compilador que el programa se va a ejecutar en x86. Para ello hay que seguir los siguientes pasos:

1) Una vez en el IDE de vb.net con nuestro proyecto cargado vamos al menu "Proyecto" y luego clickeamos en el submenu "Propiedades de .."
2) En la ventana que se abre elegimos de las pestañas sobre el margen izquierdo aquella que indica la palabra "Compilar".
3) Dentro de la ventana compilar hay un botón en la parte inferior que dice "Opciones de compilación avanzadas", le damos click en él.
4) Dentro de esta ventana hay una caja de selección que dice "CPU de destino" y que generalmente tiene el valor "AnyCPU". Cambiar a "x86" para que nuestro programa se ejecute siempre en modo 32 bits.

Y bueno, eso es todo, es realmente una pavada, nada de descomprimir la libreria, nada de tener que ejecutar el dll en la carpeta del emulador, nada de stdcall o cdecl... Con el código que postee anteriormente y esa opción ya estamos encaminados a que nuestro USB funcione en Windows 7 64 bits.

Bueno, espero que al menos a alguien le haya servido mi incordio.

Saludos!!
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado mustafa23

  • PIC10
  • *
  • Mensajes: 5
Re: Proyecto PicUSB
« Respuesta #535 en: 09 de Julio de 2010, 17:32:01 »
Hola, recientemente he empezado a programar en pics i tal, y desde el principio me ha parecido interesante este proyecto. He montado en la protoboard el circuito con el pic 18f2550 y he metido en éste el codigo que venía en los archivos. Pero no funciona, parece que lo he hecho bién pues puedo leer del pic y los datos son correctos pero cuando conecto el circuito al pc nada de nada, ni siquiera se enciende el led que indica que no están instalados los drivers. El voltaje le llega al pic correctamente así que nose si es problema de las configuraciones de éste al grabarlo o que. Os adjunto la imagen del programa donde se ven las opciones con las que grabo el pic, a ver si me podés ayudar:



Espero que alguien tenga alguna idea de porque no lo consigo hacer funcionar. Gracias

Desconectado Delko.arthuro

  • PIC10
  • *
  • Mensajes: 2
Re: Proyecto PicUSB
« Respuesta #536 en: 12 de Julio de 2010, 02:46:40 »
 :( :( guaaa no me funca...  bueno recie estoy empezando  en este mundo de los PICusb y bueno descargue el programa de JIM por cierto felicitarle a JIM por todos los conocimientos que comparte  y gracias a los maestros como el vamos aprendiendo mucho .. :P   y bueno el ejemplo funciona chevere  en proteus  descargue el "picusb"; ya pero kise hacerlo modificarlo algunas cosas :P...y como todos supongo haciendo un copy/paste para despues hacerlo a mi modo..:P hixe la misma aplicacion de JIM  y  pero  cuando presiono cualquier boton sale  abajo este mensaje....
"Excepción del tipo 'System.FormatException' en mscorlib.dll" tb me sale el cuadro de
"Una llamada a la función PInvoke 'UnoPIC!UnoPIC.Program::_MPUSBOpen' impidió
 la correspondencia de la pila. Es posible que la razón sea que la firma PInvoke administrada
no coincida con la firma de destino no administrada. Compruebe que la convención y los parámetros
de llamada de la firma PInvoke coinciden con la firma no administrada de destino."

 pero eso sale en estas lineas
            myOutPipe = _MPUSBOpen(selection, vid_pid_norm, out_pipe, 0, 0);
                                  myInPipe = _MPUSBOpen(selection, vid_pid_norm, in_pipe, 1, 0);
 alguien me podria explicar lo que pasa y como puedo solucionarlo  :( :( :( :(.... por cierto tengo el
 WS7 32b ,VisualEstudio 2010 ...
« Última modificación: 12 de Julio de 2010, 11:31:24 por un Moderador, Razón: Se corrigen los colores. »

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Proyecto PicUSB
« Respuesta #537 en: 12 de Julio de 2010, 05:34:14 »
Por favor Delko, coloca todo el código fuente de VS relacionado con el USB asi podemos analizarlo.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado Delko.arthuro

  • PIC10
  • *
  • Mensajes: 2
Re: Proyecto PicUSB
« Respuesta #538 en: 12 de Julio de 2010, 16:25:18 »
Gonzalo_BlackHawk bueno la verdad si ke me esta dando un dolor de cabeza jaja pero bueno  ya pongo el codigo y no kizas estoy haceidno mal todo pero si me pasas el dato para hacerlo como lo hiciste tu para ver ke estyo haciendo mal ....:P

bueno ahi esta la carpeta

Desconectado BEXTIXTOX

  • PIC16
  • ***
  • Mensajes: 108
Re: Proyecto PicUSB
« Respuesta #539 en: 12 de Julio de 2010, 21:54:51 »
ESTOY SIGIENDO TODO EL HILO DEL PROYECTO PICUSB

ESTOY USANDO UN PIC 18F4550 LE HE PUESTO UN XT DE 4MHZ Y DE 20MHZ
  CCS 4.093 Y PROTEUS 7.7 SP2

MIS AVANCES SON QUE PUEDO SIMULAR MUY BIEN TODO DESDE PROTEUS Y EL .EXE QUE BRINDA J1M

PERO TENGO EL MISMO PROBLEMA QUE TENIA "TRINO"
(pagina 14) QUE AL CONECTAR EL HARWARE POR PRIMERA VES ME INFORMO WINDOWS QUE MI HARWARE ESTABA INSTALADO Y LISTO PARA USARSE
PERO NO NO RECONOCE

Y DE NUEVO LO CONECTO Y SIMPLEMENTE ME APARESE EL GLOBITO AMARILLO INDICANDO QUE NO RECONCE EL HARVARE

Y LA PREGUNTA ES DIRIGIDA A TRINO 
(O A ALGUIEN QUE ME PUEDA AYUDAR)

QUE PROBLEMA TENIAS???

COMO RESOLVISTE TU PROBLEMA??