Autor Tema: VB.net + C18 + USB CDC  (Leído 2026 veces)

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

Desconectado karitol

  • PIC10
  • *
  • Mensajes: 4
VB.net + C18 + USB CDC
« en: 03 de Enero de 2014, 11:24:58 »
Hola, soy nueva en el foro, pero llevo ya un tiempo mirando este junto a otros foros para resolver algunas dudas que se me presenta. Estoy haciendo un proyecto donde utilizo la usb y  visual basic  para que realicen las operaciones que yo quiera, para ello he utilizado las librerías de Microchip para la conexión de usb, y he utilizado la interfaz gráfica que viene con microsoft visual Studio que realiza una tarea similar al de un hyperterminal.

Tengo entendido que el proceso para recibir mensajes es este:

BYTE numBytesRead;
if((USBDeviceState < CONFIGURED_STATE)||(USBSuspendControl==1)) return;
if(mUSBUSARTIsTxTrfReady())
numBytesRead = getsUSBUSART(USB_Out_Buffer,64);

La cuestión es que yo quiero comparar el numero o letra que entra por el hyperterminal o por el form del visual para que realice una operación, he intentado lo siguiente pero no obtengo resultados.

if (numBytesRead=1)
{
PORTCbits.RC2=1
}

Por favor ayuda. Gracias de antemano

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: VB.net + C18 + USB CDC
« Respuesta #1 en: 03 de Enero de 2014, 15:49:41 »
 :? :? probablemente me equivoque pero... se supone que cuando tu colocas un "if", el operador que lo entrelaza debe ser de comparacion, no de asignacion, es decir:

Código: [Seleccionar]
if(variable1==variable2)
{
      ejecuta codigo;
}

y yo veo que pones:

Código: [Seleccionar]
if (numBytesRead=1)
{
PORTCbits.RC2=1
}

en otras palabras, creo que te falta un signo =
mi pregunta es, no te marca algun warning o error al compilar???

P.d. aclaro, no soy experto jeje  :D
Nunca se deja de aprender

Desconectado karitol

  • PIC10
  • *
  • Mensajes: 4
Re: VB.net + C18 + USB CDC
« Respuesta #2 en: 03 de Enero de 2014, 21:24:23 »
Gracias por responder.
Si thegame tiene toda la razon, pero ya hice la modificacion y el programa corre bien, lo que no sé es si es muy dificil por ejemplo prender un led mediante un formulario de visual

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: VB.net + C18 + USB CDC
« Respuesta #3 en: 07 de Enero de 2014, 13:21:32 »
no tengo experiencia usando rs232 desde visual basic, pero te recomendaria que verificaras que estas recibiendo los datos correctamente, primero podrias hacer un "echo", es decir que el micro regrese a la pc lo mismo que esta recibiendo.
puede que desde ahi este el error
"Nada es imposible, no si puedes imaginarlo"

Desconectado karitol

  • PIC10
  • *
  • Mensajes: 4
Re: VB.net + C18 + USB CDC
« Respuesta #4 en: 10 de Enero de 2014, 13:37:39 »
rivale gracias por responder, pues la verdad es que con la ayuda de un foro de todopic titulado si mal no recuerdo lo basico de la comunicacion cdc por C18, pude conseguir lo que usted me menciona, que entiendo  es que me rebote cada palara o letra que yo escribo y el codigo es el siguiente:

   BYTE numBytesRead;
if((USBDeviceState < CONFIGURED_STATE)||(USBSuspendControl==1)) return;
if(USBUSARTIsTxTrfReady())
    {
      numBytesRead = getsUSBUSART(USB_Out_Buffer,64);
if(numBytesRead != 0)

      {
                    strcpypgm2ram(USB_In_Buffer,(const rom far char *)"Ha pulsado: "); //codigo del forero de todopic
                    strncat(USB_In_Buffer, USB_Out_Buffer, numBytesRead);                  //codigo del forero de todopic
                    strcatpgm2ram(USB_In_Buffer,(const rom far char *)"\r\n");              //codigo del forero de todopic
                    putsUSBUSART(USB_In_Buffer);                                                       //codigo del forero de todopic
               }
}

Se supone que cuando yo abro el hyperterminal presiono una tecla  por ejemplo la 'a' y al instante me rebota "ha pulsado: a"

eso lo hace bien, pero cuando intento asegurarme de que letra entro no logro conseguir, por ejemplo yo quiero que si yo presiono la a me cambie el estado de un puerto, que si presiono la b me cambie el estado de otro puerto, y he intentado lo siguiente:

if (numBytesRead== 'a')
{
PORTCbits.RC5 != PORTCbits.RC5;
}

nota: estuve mirando y BYTE es la redefinicion de unsigned char. El programa me corre bien pero en simulacion real no consigo resultados

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: VB.net + C18 + USB CDC
« Respuesta #5 en: 10 de Enero de 2014, 13:51:47 »

Se supone que cuando yo abro el hyperterminal presiono una tecla  por ejemplo la 'a' y al instante me rebota "ha pulsado: a"

eso lo hace bien, pero cuando intento asegurarme de que letra entro no logro conseguir, por ejemplo yo quiero que si yo presiono la a me cambie el estado de un puerto, que si presiono la b me cambie el estado de otro puerto, y he intentado lo siguiente:

if (numBytesRead== 'a')
{
PORTCbits.RC5 != PORTCbits.RC5;
}

nota: estuve mirando y BYTE es la redefinicion de unsigned char. El programa me corre bien pero en simulacion real no consigo resultados


en la variable numByterRead tienes la longitud de tu cadena, si quieres comparar un solo caracter, tendrias que verificar el elemento 0 de tu arreglo
USB_Out_Buffer
"Nada es imposible, no si puedes imaginarlo"

Desconectado karitol

  • PIC10
  • *
  • Mensajes: 4
Re: VB.net + C18 + USB CDC
« Respuesta #6 en: 13 de Enero de 2014, 16:37:21 »
Muchas gracias rivale me sirvio mucho lo que me dijo :)
« Última modificación: 14 de Enero de 2014, 12:00:20 por karitol »