Sie sind auf Seite 1von 20

Programacin Avanzada

Primavera 2012

Benemrita Universidad Autnoma de Puebla


Ciclo Escolar: Primavera 2012

Programacin Avanzada Reporte:

Programacin Orientada a Objetos (Prctica II)

MC Nicols Quiroz Hernndez


Integrantes: Jairo Muoz Gonzlez Jonathan Morones Reyes David Snchez Briones Julio Martnez Ramrez

Programacin Avanzada

Primavera 2012

PRCTICA 2
Objetivos:
Desarrollar un programa orientado a objetos, para mandar datos desde el puerto USB para prender unos leds. Se debe reconocer las soluciones al problema planteado Realizar un grupo de clases para manejar el puerto serial. Realizar un programa para el PIC18f4550 para realizar la practica Crear la clase en dos archivos uno de cabecera (*.h) y otro de implementacin (*.cpp)

Marco terico

Tipos de datos simples o no estructurados


Un tipo de dato define un conjunto de valores que puede tener una variable junto con un conjunto de operaciones que se pueden realizar sobre la variable. Enteros Flotantes (Reales) Carcter Lgico o Booleano (verdadero y falso)

Secuencias de escape
\b \n \f \t \r \ \ \\ \0 \a \v Espacio atrs Salto de lnea Salto de pgina Tabulacin horizontal Retorno de carro Comilla simple Comillas dobles Barra invertida Nulo Alerta Tabulacin vertical

Programacin Avanzada
\x Constante hexadecimal

Primavera 2012

Tipos de datos estructurados


Arreglos. Estructuras, uniones, Enumerativos y campo de bits. Archivos.

Arreglos
Un arreglo es una coleccin de variables del mismo tipo que se referencian por un nombre comn. Declaracin: tipoNombre_Arreglo [tam]; char p[10]; int vector[50]; float A[10], B[32];
Todos los arreglos tienen el 0 como ndice de su primer el

Cadenas
Arreglo

de caracteres de cualquier longitud que termina con un nulo (\0).

ejemplo: charcad[11]= Hola Mundo;

Leer una cadena


Leer una cadena de caracteres con la funcin scanf Por ejemplo: nombre y apellidos charcad[50]; printf(Escribir Nombre Completo:); scanf(%s, cad); printf (cadena: %s, cad);

gets
Obtiene una cadena de la entrada estndar (teclado)

char *gets(char *s);


Retorna la cadena en los argumentos, o NULL sino tuvo xito. Puede leer espacios en blanco. charcad[50]; printf(Escribir Nombre Completo:); gets(cad); printf (cadena: %s, cad);

Estructuras, uniones, etc.


Una Estructura es una agrupacin de variables bajo un mismo nombre.

Programacin Avanzada

Primavera 2012

La Unin es una variable que puede contener miembros de diferentes tipos, en una misma zona de memoria. Un Campo de bits es un conjunto de bits adyacentes dentro de una unidad direccionable. La Enumeracin es una lista de smbolos. La palabra clave typedef simplemente crea un nuevo nombre para un tipo ya existente.

Declaracin de Estructura
structnombre_struct{ declaracin de miembros; }; variables: structnombre_struct info1,

Declaracin de Unin
unionnombre_union{ declaracin de los miembros; }; variables: unionnombre_union x, y

Tipo enumerativo (enum)


Para C un tipo enumerado es un tipo int. Para C++ un tipo enumerado es un nuevo tipo. enum colores {azul, verde, rojo}; colores color1 = azul; //correcto int color2 = verde; //correcto colores color3 = 2; //error: asignacin de un entero colores color4 = colores(2); //correcto (conversin explicita)
;*info2;

Entrada/salida Estndar (Teclado/Monitor) operadores de insercin o de extraccin


Ejemplos: C scanf("%d", &n); printf(n = %d, n);

C++ cin>> n; (extraccin) cout<< n; (insercin)

Programacin Orientada a Objetos

Programacin Avanzada

Primavera 2012

Objeto
Entidad lgica que contiene datos y cdigo que manipula esos datos. Parte del cdigo y datos pueden ser privados del objeto (encapsulacin).

Polimorfismo: Permite usar un nombre para varios propsitos relacionados


pero ligeramente diferentes. El polimorfismo permite que las instancias de diferentes clases respondan a la misma funcin en forma adecuada para cada clase.

Herencia: La herencia es propiedad que permite a los objetos construirse a partir de otros objetos. El concepto de herencia est presente en nuestras vidas diarias donde las clases se dividen en subclases. Clase
Una clase es un tipo especial de datos, y esta orientado a la creacin de objetos y que consta de unos miembros que pueden ser datos o mtodos (funciones) privadas o pblicas. Una clase es un tipo de dato que contiene elementos llamados datos miembro, y funciones que manipulan esos datos (llamados funcin miembro o mtodo). Una clase se puede definir con una estructura (struct), una unin (unin) o una clase (class).

Declaracin de una clase

classNombre_Clase { public: //miembros pblicos; private: //miembros privados; protected: // miembros protegidos; }; class Circulo { private: double x, y; double radio; voidAsignarValorX( double x ); }

Constructores

Programacin Avanzada

Primavera 2012

1. El nombre del constructor debe ser idntico al nombre de su clase. 2. No debe incluir ningn tipo de retorno, ni siquiera void. 3. Una clase puede tener cualquier cantidad de constructores, incluso ninguno. En este ltimo caso, el compilador automticamente creauno para esta clase. 4. El constructor predeterminado es aquel que no tiene parmetros o posee una lista de parmetros, donde todos usan argumentos predeterminados. 5. Se utilizan para inicializar los objetos. 6. Un constructor de copia le permite crear instancias de clase copiando los datos de instancia existentes.

Declaracion de los constructores


classnombreClase { public: nombreClase( ); //Constructor predeterminado nombreClase(constnomClase& c); //Constructor de copia nombreClase(<lista de parametros>); //otro constructor };

Destructores
1.- El nombre del destructor debe comenzar con una tilde (~). El resto del nombre del destructor debe ser idntico al nombre de su clase. 2.- No debe incluir ningn tipo de retorno, ni siquiera void. 3.- Una clase no puede tener ms de un destructor. Adems, si omites el destructor, el compilador lo crea automticamente. 4.- El destructor no puede tener ningn parmetro. 5.- El sistema en tiempo de ejecucin llama automticamente a un destructor de la clase cuando la instancia de esa clase cae fuera de alcance o cuando la instancia se borra explcitamente. Las clases de C++ pueden contener automticamente las instancias de la clase. La sintaxis general para los destructores es: classnombreClase { // datos miembros public: nombreClase( ); //Constructor predeterminado //otros constructores ~nombreClase( ); //destructor //otros mtodos miembro }; destructores que eliminan

Programacin Avanzada

Primavera 2012

Referencias
Una referencia es un nombre alternativo (un sinnimo) para un objeto o variable. Utilizacin de ambos lados del operador de asignacin. tipo&NombreReferencia = objeto; Ejemplo: int y = 10; int& x = y; //x es una referencia de y Siempre que se declare una referencia debe ser inicializada, o al menos que se un parmetro de una funcin no se inicializa. Utilizacin a ambos lados del operador de asignacin, con referencias classCReferenciavoidmain() { private: int x; public: int& Valor() { return x;} };

{ CReferenciaobj; int y; obj.Valor()=10; y=obj.Valor(); cout<<y<<endl; };

Funciones amigas
Declaracin: friendvoidasignarFecha(); Una funcin amiga puede tener acceso a los miembros de una clase. Una funcin amiga se puede declarar en cualquier parte de la clase, no le afectan las palabras public, private, protected, ya que una funcin friendno es miembro de la clase. Una funcin puede ser amiga de ms de una clase, lo que puede conducir a interfaces ms claras. Una funcin amiga admite que se apliquen a su primer argumento conversiones implcitas o definidas por el usuario.

classCFecha { intm_dia, m_mes, m_anyo; friendvoidMostrarDatos(CFecha& );

public:

Programacin Avanzada

Primavera 2012

//mtodos miembro }; voidMostrarDatos(CFecha&obj)


{

cout<<endl<<obj.m_dia<<"/ "<<obj.m_mes<<"/ "<<obj.m_anyo<<endl;}


Clases Declaracin defined(Identificador) Esta expresin constante es considerada verdadera (no cero) si el Identificadorest actualmente definido; en cualquier otro caso la condicin es falsa (0). Un identificador definido como texto vaci es considerado definido. La directiva definedpuede ser usada en una directiva #ify en una #elif.

Material y Equipo requerido:


1 Computadora 1 Compilador de Microsoft Visual C++ (cualquier versin). 1 conector USB A macho 1 capacitor de 47uF/16v 2 cap. cermicos 22 pF 1 tira de leds 1 220 resistencia 1 10khoms 1 cristal 20mHz 1 pushboton

Procedimiento y desarrollo de la prctica


Se realizara un programa en Visual Basic que permita encender leds a travs de la comunicacin en paralelo mediante la programacin de un PIC18f4550. Posteriormente lo primero que se realizara sern las clases que definirn el programa para encender o apagar la tira de leds.

1.-Clculos:
CidigoPic ///////////////////////////////////////////////////////////////////////// //// PicUSB.c //// //// //// //// Este ejemplo muestra como desarrollar un sencillo dispositivo //// //// USB con el PIC18F2550, aunque puede ser facilmente adaptado //// //// para la serie 18Fxx5x. Se suministra el PicUSB.exe, as como //// //// su cdigo fuente para Visual C# 2005, podris encontrar tb //// //// los drivers para el dispositivo. No se suministra esquema de //// //// conexin puesto que est pensado para ser usado en el GTP USB, //// //// cualquiera de las tres versiones disponibles, si aun no teneis //// //// el programador, podeis utilizar el esquema de ese proyecto. ////

Programacin Avanzada

Primavera 2012

//// //// //// Cuando el dispositivo sea conectado al PC, saldr el asistente //// //// para la instalacin del driver. Instala el suministrado junto //// //// a este ejemplo, lo encontrareis dentro de la carpeta Driver. //// //// Una vez instalado podreis usar el PicUSB.exe para encender o //// //// apagar el led bicolor del GTP USB, y para realizar la suma de //// //// dos nmeros introducidos. //// //// //// //// Realizado con el compilador CCS PCWH 3.227 //// //// //// //// Por: Jaime Fernndez-Caro Belmonte hobbypic@hotmail.com //// //// //// //// http://www.hobbypic.com //// ///////////////////////////////////////////////////////////////////////// #include <18F4550.h> #include "flex_lcd.c" #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN #use delay(clock=48000000)

///////////////////////////////////////////////////////////////////////////// // // CCS Library dynamic defines. For dynamic configuration of the CCS Library // for your application several defines need to be made. See the comments // at usb.h for more information // ///////////////////////////////////////////////////////////////////////////// #define USB_HID_DEVICE FALSE //deshabilitamos el uso de las directivas HID #define USB_EP1_TX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for IN bulk/interrupt transfers #define USB_EP1_RX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for OUT bulk/interrupt transfers #define USB_EP1_TX_SIZE 1 //size to allocate for the tx endpoint 1 buffer #define USB_EP1_RX_SIZE 3 //size to allocate for the rx endpoint 1 buffer

///////////////////////////////////////////////////////////////////////////// // // If you are using a USB connection sense pin, define it here. If you are // not using connection sense, comment out this line. Without connection // sense you will not know if the device gets disconnected. // (connection sense should look like this: // 100k // VBUS-----+----/\/\/\/\/\----- (I/O PIN ON PIC) // | // +----/\/\/\/\/\-----GND // 100k // (where VBUS is pin1 of the USB connector) // ///////////////////////////////////////////////////////////////////////////// //#define USB_CON_SENSE_PIN PIN_B2 //CCS 18F4550 development kit has optional conection sense pin ///////////////////////////////////////////////////////////////////////////// // // Include the CCS USB Libraries. See the comments at the top of these // files for more information //

Programacin Avanzada

Primavera 2012

///////////////////////////////////////////////////////////////////////////// //definirportblcd #include <pic18_usb.h> //Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver #include<PicUSB.h> dispositivo #include<usb.c> //Configuracin del USB y los descriptores para este //handles usb setup tokens and get descriptor reports

///////////////////////////////////////////////////////////////////////////// // // Al conectar el PicUSB al PC encendemos el Led Rojo hasta que el dispositivo // halla sido configurado por el PC, en ese momento encederemos el Led Verde. // Esperaremos hasta que se reciba un paquete proveniente del PC. Comprobaremos // el primer byte del paquete recibido para comprobar si queremos entrar en el // modo Suma, donde se realizar una suma de dos operandos, que corresponderan // con los dos bytes restantes del paquete recibido; una vez realizada la suma // enviaremos el paquete con el resultado de vuelta al PC. Si entramos en el // modoLed comprobaremos el segundo byte del paquete recibido para comprobar // si deberemos apagar los leds, encender el verder o el rojo. // /////////////////////////////////////////////////////////////////////////////

unsignedchar datos[10]; //para almacenar los datos envados a la pc void main(void) { lcd_init(); printf(lcd_putc," PROGRAMACION "); lcd_gotoxy(1,2); printf(lcd_putc," AVANZADA "); delay_ms(3200); lcd_putc('\f'); printf(lcd_putc,"PRIMAVERA 2012 "); lcd_gotoxy(1,2); printf(lcd_putc," PRACTICA 2"); delay_ms(2200); lcd_putc('\f'); printf(lcd_putc," COMUNICACION "); lcd_gotoxy(1,2); printf(lcd_putc,"PIC-PC VIA USB "); delay_ms(2200); lcd_putc('\f'); printf(lcd_putc," PROGRAMACION "); lcd_gotoxy(1,2); printf(lcd_putc," AVANZADA "); output_high(PIN_D7); //enciende el led al conectar el pic usb_init(); //inicializamos el USB usb_task(); //habilita perifericousb e interrupciones usb_wait_for_enumeration(); //esperamos hasta que el PicUSB sea configurado por el host output_low(PIN_D7); delay_ms(300); output_low(PIN_D7); delay_ms(300); output_low(PIN_D7); delay_ms(300); output_low(PIN_D7); // se apaga el led al existir comunicacin usb

Programacin Avanzada
lcd_putc('\f'); printf(lcd_putc," NICOLAS QUIROZ "); lcd_gotoxy(1,2); printf(lcd_putc," F.C.E"); delay_ms(3000); lcd_putc('\f'); printf(lcd_putc," PROGRAMACION "); lcd_gotoxy(1,2); printf(lcd_putc," AVANZADA ");

Primavera 2012

while (TRUE) { if(usb_enumerated()) //si el PicUSB est configurado { if (usb_kbhit(1)) //si el endpoint de salida contiene datos del host { usb_get_packet(1, datos, 2); //cojemos el paquete de tamao 3bytes del EP1 y almacenamos en recibe if (datos[0] == 0) { output_low(PIN_D7); // Apaga led } if (datos[0] == 1) // Modo_Led { output_high(PIN_D7); //// Enciende led } if(datos[0]==2) //puerto paralelo output_d(datos[1]); } } } } Codigo Clases Principal.cpp #include"USB.h" using namespace std; USB miUsb; BYTE data[10]; void Menu(); void main() { data[1]=0x00; miUsb.SendPacket(data,2); system("pause"); Menu();

Programacin Avanzada

Primavera 2012

} void Menu() { charopc; inti=1; while(i!=0) { system("cls"); cout<<"Seleccione la secuencia que desea ejecutar: "<<endl <<"1. Corrimiento a la derecha \n2. Corrimiento a la izquierda \n" <<"3. Parpadeo \n4. Efecto de cerradura \n5. Efecto de apertura \n" <<"6. Efecto de Ida y Vuelta \n7. Efecto Caminante \n8. Salir \nOpcion: "<<endl; cin>>opc; switch(opc) { case '1': miUsb.CorrDer(); break; case '2': miUsb.CorrIzq(); break; case '3': miUsb.Parpadeo(); break; case '4': miUsb.Apertura(); break; case '5': miUsb.Cerradura(); break; case '6': miUsb.IdaVuelta(); break; case '7': miUsb.Caminando(); break; case '8': cout<<"\n--- Auf Wiedersehen!!---"<<endl<<endl; data[0]=0x00; miUsb.SendPacket(data,1); i=0; break; } } } USB.cpp // USB.cpp: implementation of the USB class. // ////////////////////////////////////////////////////////////////////// #include "USB.h" #include "usb2550.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif

//*********************************************************************************************** //#pragma argsused // Global Vars PCHAR vid_pid = "vid_04d8&pid_0011"; PCHAR out_pipe= "\\MCHP_EP1"; PCHAR in_pipe= "\\MCHP_EP1";

Programacin Avanzada
HANDLE myOutPipe; HANDLE myInPipe; BYTE dato[10]; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// USB::USB() { } USB::~USB() { } void USB::OpenPipes() { DWORD selection = 0; myOutPipe = MPUSBOpen(selection,vid_pid,out_pipe,0,0); myInPipe = MPUSBOpen(selection,vid_pid,in_pipe,1,0); } void USB::Initialice() { myOutPipe = myInPipe = NULL; } void USB::ClosePipes() { MPUSBClose(myOutPipe); MPUSBClose(myInPipe); }

Primavera 2012

void USB::SendPacket(BYTE *SendData, DWORD SendLength) { DWORD SendDelay = 1000; //DWORD SendDelay = 10; DWORD SentDataLength; USB::OpenPipes(); MPUSBWrite(myOutPipe,(void*)SendData,SendLength,&SentDataLength,Send Delay); USB::ClosePipes(); } /******************************************************************************************* Esta funcin recibe del PIC los datos "RecieveData" y la longitud de la cadena "RecieveLenght" Los otros datos de MPUSBRead los imponemos nosotros, dichos datos del PIC se reciben con la funcin usb_put_packet(endpoint,*ptr,len,toggle) ********************************************************************************************/ void USB::ReceivePacket(BYTE *ReceiveData, PDWORD ReceiveLength) {

Programacin Avanzada
DWORD ReceiveDelay = 1000; DWORD ExpectedReceiveLength = *ReceiveLength;

Primavera 2012

USB::OpenPipes(); MPUSBRead(myInPipe, (void*)ReceiveData, ExpectedReceiveLength, ReceiveLength, ReceiveDelay); USB::ClosePipes(); } void USB::Parpadeo() { dato[0]=0x02; SendPacket(dato,2); for(inti=0;i<10;i++) { dato[1]=0x00; SendPacket(dato,2); Sleep(300); dato[1]=0xFF; SendPacket(dato,2); Sleep(300); } dato[1]=0x00; SendPacket(dato,2); Sleep(300); } void USB::CorrDer() { dato[0]=0x02; SendPacket(dato,2); for(inti=0;i<10;i++) { dato[1]=0x80; SendPacket(dato,2); Sleep(200); dato[1]=0xC0; SendPacket(dato,2); Sleep(200); dato[1]=0xE0; SendPacket(dato,2); Sleep(200); dato[1]=0xF0; SendPacket(dato,2); Sleep(200); dato[1]=0xF8; SendPacket(dato,2); Sleep(200); dato[1]=0xFC; SendPacket(dato,2); Sleep(200); dato[1]=0xFE; SendPacket(dato,2); Sleep(200); dato[1]=0xFF; SendPacket(dato,2); Sleep(200); } dato[1]=0x00; SendPacket(dato,2); Sleep(300);

Programacin Avanzada
} void USB::Apertura() { dato[0]=0x02; SendPacket(dato,2); dato[1]=0x00; SendPacket(dato,2); Sleep(300); dato[1]=0x81; SendPacket(dato,2); Sleep(300); dato[1]=0xC3; SendPacket(dato,2); Sleep(300); dato[1]=0xE7; SendPacket(dato,2); Sleep(300); dato[1]=0xFF; SendPacket(dato,2); Sleep(300); dato[1]=0x00; SendPacket(dato,2); Sleep(300); } void USB::Cerradura() { dato[0]=0x02; SendPacket(dato,2); dato[1]=0x00; SendPacket(dato,2); Sleep(300); dato[1]=0x18; SendPacket(dato,2); Sleep(300); dato[1]=0x3C; SendPacket(dato,2); Sleep(300); dato[1]=0x7E; SendPacket(dato,2); Sleep(300); dato[1]=0xFF; SendPacket(dato,2); Sleep(300); dato[1]=0x00; SendPacket(dato,2); Sleep(300); } void USB::CorrIzq() { for(int g=0;g<3;g++) { dato[0]=0x02; SendPacket(dato,2); dato[1]=0x01; SendPacket(dato,2); Sleep(200); dato[1]=0x03; SendPacket(dato,2); Sleep(200);

Primavera 2012

Programacin Avanzada
dato[1]=0x07; SendPacket(dato,2); Sleep(200); dato[1]=0x0F; SendPacket(dato,2); Sleep(200); dato[1]=0x1F; SendPacket(dato,2); Sleep(200); dato[1]=0x3F; SendPacket(dato,2); Sleep(200); dato[1]=0x7F; SendPacket(dato,2); Sleep(200); dato[1]=0xFF; SendPacket(dato,2); Sleep(200); } dato[1]=0x00; SendPacket(dato,2); Sleep(300); } void USB::IdaVuelta() { dato[0]=0x02; SendPacket(dato,2); dato[1]=0x01; SendPacket(dato,2); Sleep(200); dato[1]=0x02; SendPacket(dato,2); Sleep(200); dato[1]=0x04; SendPacket(dato,2); Sleep(200); dato[1]=0x08; SendPacket(dato,2); Sleep(200); dato[1]=0x10; SendPacket(dato,2); Sleep(200); dato[1]=0x20; SendPacket(dato,2); Sleep(200); dato[1]=0x40; SendPacket(dato,2); Sleep(200); dato[1]=0x80; SendPacket(dato,2); Sleep(200); dato[1]=0x40; SendPacket(dato,2); Sleep(200); dato[1]=0x20; SendPacket(dato,2); Sleep(200); dato[1]=0x10; SendPacket(dato,2); Sleep(200);

Primavera 2012

Programacin Avanzada
dato[1]=0x08; SendPacket(dato,2); Sleep(200); dato[1]=0x04; SendPacket(dato,2); Sleep(200); dato[1]=0x02; SendPacket(dato,2); Sleep(200); dato[1]=0x04; SendPacket(dato,2); Sleep(200); dato[1]=0x08; SendPacket(dato,2); Sleep(200); dato[1]=0x10; SendPacket(dato,2); Sleep(200); dato[1]=0x20; SendPacket(dato,2); Sleep(200); dato[1]=0x40; SendPacket(dato,2); Sleep(200); dato[1]=0x20; SendPacket(dato,2); Sleep(200); dato[1]=0x10; SendPacket(dato,2); Sleep(200); dato[1]=0x08; SendPacket(dato,2); Sleep(200); dato[1]=0x04; SendPacket(dato,2); Sleep(200); dato[1]=0x08; SendPacket(dato,2); Sleep(200); dato[1]=0x10; SendPacket(dato,2); Sleep(200); dato[1]=0x20; SendPacket(dato,2); Sleep(200); dato[1]=0x10; SendPacket(dato,2); Sleep(200); dato[1]=0x08; SendPacket(dato,2); Sleep(200); dato[1]=0x00; SendPacket(dato,2); Sleep(300); } void USB::Caminando() { dato[0]=0x02; SendPacket(dato,2); for(inti=0;i<10;i++)

Primavera 2012

Programacin Avanzada
{ dato[1]=0x80; SendPacket(dato,2); Sleep(200); dato[1]=0xA0; SendPacket(dato,2); Sleep(200); dato[1]=0x28; SendPacket(dato,2); Sleep(200); dato[1]=0x0A; SendPacket(dato,2); Sleep(200); dato[1]=0x02; SendPacket(dato,2); Sleep(200); dato[1]=0x00; SendPacket(dato,2); Sleep(200); } dato[1]=0x00; SendPacket(dato,2); Sleep(300); } 3.- Implementacin: USB.h

Primavera 2012

// USB.h: interface for the USB class. // ////////////////////////////////////////////////////////////////////// #include<windows.h> #if !defined(AFX_USB_H__801FD7DD_554C_4197_A9AF_6A4FC934E5FA__INCLUDED _) #define AFX_USB_H__801FD7DD_554C_4197_A9AF_6A4FC934E5FA__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class USB { public: voidClosePipes(); voidInitialice(); voidOpenPipes(); USB(); virtual ~USB(); voidReceivePacket(BYTE *ReceiveData,PDWORDReceiveLength);//Este es el original voidSendPacket(BYTE *SendData, DWORD SendLength); voidParpadeo(); voidCorrIzq(); voidCorrDer(); void Apertura(); void Cerradura();

Programacin Avanzada
voidIdaVuelta(); void Caminando(); };

Primavera 2012

#endif // !defined(AFX_USB_H__801FD7DD_554C_4197_A9AF_6A4FC934E5FA__INCLUDED _) 2- Simulacin: Fotos de la compilacion

5.- Diagramas: Mas fotos de resultados

Resultados
Realizar las pruebas necesarias para probar el programa, anotar sus resultados. Realizar un anlisis de los resultados obtenidos. Algunas preguntas que puedes contestar para checar sino te falto algo. Concuerdan los resultados obtenidos con los resultados calculados y la simulacin realizada? Hubo desviaciones importantes? Si algo no funciono, pregntate porque y disctelo con los integrantes del equipo. En caso de no encontrar una posible respuesta, consulta con el instructor.

Conclusiones comentarios justifique los resultados.

informacin

adicional

que

Exprese sus conclusiones particulares y la informacin que le sirvi de base para la realizacin de esta prctica. Podra comparar los resultados obtenidos de la simulacin y los experimentales y obtener conclusiones. Si algo fallo y se resolvi documentarlo.

Programacin Avanzada

Primavera 2012

Das könnte Ihnen auch gefallen