Visual C++
 

PIC Calculadora USB 2.0

Fundamentos

Hemos podido observar que mucha gente tiene dificultades a la hora de realizar un programa en Visual C++ 2005 para el manejo de las directivas de USB 2.0 en un microcontrolador de microchip. Es por ello que desde ahora mismo podéis ver como se realiza un pequeño programa de ejemplo de USB 2.0.

Este ejemplo es una calculadora muy sencilla donde el PC envía los datos de los operandos y la operación a realizar al PIC. Éste último realiza la operación y la envía de nuevo al PC donde se podrá visualizar el resultado.

Si se quiere seguir esté proyecto de forma eficiente es necesarío leer esté proyecto:

USB 2.0 Microchip

Para vuestro gozo en la sección de Download también podréis encontrar este mismo ejemplo realizado en Visual C++ 6.0, el cual tambien es completemente funcional en
Visual Studio 2005.

 

Creación del proyecto y enlace de librerías

Antes de nada lo primero que tenemos que hacer es preparar nuestro entorno de trabajo. Para ello creamos un nuevo proyecto en Archivo -> Nuevo -> Proyecto.

Seleccionamos en el desplegable "Tipos de proyecto" la opción MFC y en "Plantillas" seleccionamos Aplicación MFC. No olvideis poner un nombre al proyecto y la ubacación. Una vez realizados estos pasos pulsamos el botón "Finalizar".

En el sigiuente dialogo no haremos nada, así que pulsamos el botón siguente. Ahora saldrá el punto "Tipo de aplicación", aquí seleccionaremos la opción "Basada en cuadros de diálogo".

Para finalizar el asistente pulsamos el botón "Finalizar" con lo que ya tendremos nuestro diálogo con las herramientas MFC creado.

Copiaremos los archivos siguientes en el directorio raíz de nuestro proyecto.

usb2550.dll, usb2550.lib, usb2550.h, USB.cpp y USB.h

Para poder usar estar librerías y cabezaras debemos agregarlas a nuestro proyecto. Pincharemos con el botón secundario sobre "Archivos de código fuente", seleccionaremos
Agregar -> Elemento existente, donde aparecerá un explorador y seleccionaremos el archivo USB.cpp.

Haremos la misma operación sobre "Archivos de encabezado" donde agregaremos los archivos USB.h y usb2550.h.

Ahora enlazaremos la librería usb2550.lib. Para ello vamos la barra de herramientas y pinchamos sobre Proyecto -> Propiedades de [Nombre de proyecto] o pulsamos Alt+F7, donde saldrá el siguiente cuadra de diálogo.

Vamos a Propiedades de configuración -> Vinculador -> Entrada y en dependencias adicionales ponemos usb2550.lib y pulsamos sobre el botón "Aceptar".

Con esto ya tenemos enlazado nuestro proyecto con las MFC y la librería de USB de microchip. Ahora sólo nos falta tirar un par de líneas de código.

Programando la calculadora USB

Lo primero es crear un objeto que contenga las propiedades de las librerías USB. Abrimos el archivo PICCalculadoraUSBDlg.h y añadimos las siguientes librerías e instanciación del objeto USB.

// PicCalculadoraUSBDlg.h: archivo de encabezado
//

#pragma once
#include "afxwin.h"
#include "usb.h"
#include "usb2550.h"


// Cuadro de diálogo de CPicCalculadoraUSBDlg
class CPicCalculadoraUSBDlg : public CDialog
{
.....
.....
.....
DECLARE_MESSAGE_MAP()
public:
USB myUSB; //Esto es mi puerto USB
.....
.....
.....

EEn el cuadro de diálogo del proyecto crearemos 8 Botones y 3 EditBox. Seleccionaremos el primer EditBox con el botón secundario del ratón, saldrá un popup y pulsaremos agregar variable.

Nos saldrá el asistente para asociar la variable al elemento EditBox. Seleccionaremos en categoría Value y el tipo de variable Int, el nombre de la variable será m_iSuma1.

Se realizarán los mismo pasos para los otros 2 EditBox que nos quedán, siendo el nombre de las variables: m_iSuma2 y m_Resultado respectivamente.

Al evento OnClick del botón RojoON añadiremos las siguientes líneas de código.

void CPicCalculadoraUSBDlg::OnBnClickedButton9()
{
// TODO: Agregue aquí su código de controlador de notificación de control
BYTE SendData[2];
SendData[0]=1;
SendData[1]=2;

myUSB.SendPacket(SendData,2);
}

myUSB.SendPacket(Variable,Longuitud en bytes): Esta función enviará un array de bytes de longitud 2. Para mejor compensión del código es fundamental que os leais el siguiente enlace.

USB 2.0 Microchip

a loSi por el contrario queremos enviar los operandos y recibor el resultado de dicha operación habrá que realizar los siguientes pasos.

Imaginemos que quremos hacer una operación lógica como AND. Para ello vamos al evento del botón OnClick correspondiente a AND y tiramos las siguiente líneas de código.

void CPicCalculadoraUSBDlg::OnBnClickedButton2()
{
// TODO: Agregue aquí su código de controlador de notificación de control
int Suma1=0;
int Suma2=0;
UpdateData(TRUE);

Suma1=m_iSuma1 ;
Suma2=m_iSuma2;

myUSB.ANDPIC(Suma1,Suma2);//Enviamos para realizar la operación AND
m_Resultado=myUSB.ResultadoPIC();//Recogemos el resultado

if(Suma1>100 || Suma2>100) //Esto es para que no sea un valor más grande que un int
{
AfxMessageBox(_T("No es posible sumar un número de 3 cifras"),
MB_ICONERROR | MB_OK );
}

UpdateData(FALSE);//Actualizamos la vista y datos de nuestro diálogo
UpdateData(TRUE);
}

myUSB.ANDPIC(int,int): Esta función lo que hace es internamente un SendPacket con los datos establecidos ya que un BYTE es un int (0 a 255).

myUSB.ResultadoPIC(): Forzamos a recibir un único BYTE con la función interna de microchip ReceivePacket.

De forma similar se implementan las otras operaciones y por tanto tambien los otros botones, ya que siguen la misma linea que los ya explicados RojoON y AND.

Este es el resultado final de nuestro programita, donde como no, hemos incluido uno de los logos de la web. Si probáis a hacer click en el logo os vais a sorprender de lo sencillo que es realizar el evento xD.


Captura de PicCalculadoraUSB en Visual C++ 2005

 

Download

Librerías USB.

Programa Completo PICCalculadoraUSB Visual C++ 2005.

Programa Completo PICCalculadoraUSB Visual C++ 6.0.

 
 



Inicio | Foro | FAQ | MapaWeb | BuscadorWeb