8
Cap´ ıtulo 2 Antecedentes y estado del arte En el siguiente apartado se incluir´ a una visi´ on general sobre las tecnolog´ ıas utilizadas para el desarrollo de la aplicaci´ on pero no sin antes hacer referencia a los antecedentes que supusieron el punto de partida de este proyecto. A lo primero que hay que hacer referencia es al trabajo realizado por el antiguo alumno Pablo Sordo, cuyo Proyecto Fin de Carrera ha supuesto el punto de partida de ´ este. Su proyecto se basaba en una interfaz, tambi´ en en lenguaje Qt sobre C++ y que se comunicaba con el mismo analizador de espectros que se utiliza en este proyecto. Su trabajo ha servido al alumno de gran ayuda a la hora de resolverle muchas dudas acerca de la programaci´ on en Qt y el uso de algunos componentes que Qt permite incluir en los desarrollos. Despu´ es, tambi´ en se comenz´ o el proyecto con un fichero de c´ odigo MatLab que exist´ ıa en el laboratorio de radiocomunicaci´ on y que realizaba la misma comunicaci´ on que se quer´ ıa conse- guir con este proyecto en cuanto a la obtenci´ on de los datos del analizador. En este c´ odigo se encontraba el algoritmo que se tuvo luego que traducir a lenguaje C++ con los consecuentes arreglos para la adaptaci´ on de un lenguaje al otro. 2.1. Programaci´ on Orientada a Objetos, Lenguaje C++ Vamos a hablar un poco sobre el lenguaje C++ que es la base de todo el desarrollo de la aplicaci´ on. Para ello, vamos a hacer menci´ on del art´ ıculo encontrado en el portal Wikipedia sobre este lenguaje de programaci´ on [6]: C++ es un lenguaje de programaci´ on dise˜ nado a mediados de los a˜ nos 1980 por Bjarne Stroustrup. La intenci´ on de su creaci´ on fue el extender al exitoso lenguaje de programaci´ on C con mecanismos que permitan la manipulaci´ on de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje h´ ıbrido. Posteriormente se a˜ nadieron facilidades de programaci´ on gen´ erica, que se sum´ o a los otros dos paradigmas que ya estaban admitidos (programaci´ on estructurada y la programaci´ on orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programaci´ on multiparadigma. Actualmente existe un est´ andar, denominado ISO C++, al que se han adherido la mayor´ ıa de los fabricantes de compiladores m´ as modernos. 9

Antecedentes y estado del artebibing.us.es/proyectos/abreproy/12115/fichero/Memoria%2F2...CAP´ITULO 2. ANTECEDENTES Y ESTADO DEL ARTE 10 Una particularidad del C++ es la posibilidad

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Capıtulo 2

Antecedentes y estado del arte

En el siguiente apartado se incluira una vision general sobre las tecnologıas utilizadas para eldesarrollo de la aplicacion pero no sin antes hacer referencia a los antecedentes que supusieronel punto de partida de este proyecto.

A lo primero que hay que hacer referencia es al trabajo realizado por el antiguo alumno PabloSordo, cuyo Proyecto Fin de Carrera ha supuesto el punto de partida de este. Su proyecto sebasaba en una interfaz, tambien en lenguaje Qt sobre C++ y que se comunicaba con el mismoanalizador de espectros que se utiliza en este proyecto. Su trabajo ha servido al alumno de granayuda a la hora de resolverle muchas dudas acerca de la programacion en Qt y el uso de algunoscomponentes que Qt permite incluir en los desarrollos.

Despues, tambien se comenzo el proyecto con un fichero de codigo MatLab que existıa en ellaboratorio de radiocomunicacion y que realizaba la misma comunicacion que se querıa conse-guir con este proyecto en cuanto a la obtencion de los datos del analizador. En este codigo seencontraba el algoritmo que se tuvo luego que traducir a lenguaje C++ con los consecuentesarreglos para la adaptacion de un lenguaje al otro.

2.1. Programacion Orientada a Objetos, Lenguaje C++

Vamos a hablar un poco sobre el lenguaje C++ que es la base de todo el desarrollo de laaplicacion. Para ello, vamos a hacer mencion del artıculo encontrado en el portal Wikipediasobre este lenguaje de programacion [6]:

C++ es un lenguaje de programacion disenado a mediados de los anos 1980 por BjarneStroustrup. La intencion de su creacion fue el extender al exitoso lenguaje de programacion Ccon mecanismos que permitan la manipulacion de objetos. En ese sentido, desde el punto devista de los lenguajes orientados a objetos, el C++ es un lenguaje hıbrido.

Posteriormente se anadieron facilidades de programacion generica, que se sumo a los otros dosparadigmas que ya estaban admitidos (programacion estructurada y la programacion orientadaa objetos). Por esto se suele decir que el C++ es un lenguaje de programacion multiparadigma.

Actualmente existe un estandar, denominado ISO C++, al que se han adherido la mayorıade los fabricantes de compiladores mas modernos.

9

CAPITULO 2. ANTECEDENTES Y ESTADO DEL ARTE 10

Una particularidad del C++ es la posibilidad de redefinir los operadores, y de poder crearnuevos tipos que se comporten como tipos fundamentales.

El nombre C++ fue propuesto por Rick Mascitti en el ano 1983, cuando el lenguaje fueutilizado por primera vez fuera de un laboratorio cientıfico. Antes se habıa usado el nombre Ccon clases. En C++, la expresion C++ significa incremento de C y se refiere a que C++ es unaextension de C.

Los objetos en C++ son abstraıdos mediante una clase. Segun el paradigma de la progra-macion orientada a objetos un objeto consta de:

Identidad, que lo diferencia de otros objetos (Nombre que llevara la clase a la que pertenecedicho objeto).

Metodos o funciones miembro

Atributos o variables miembro

Con este breve resumen damos por cerrado la vision general de este lenguaje, ya que siquisieramos extendernos podrıamos hacerlo todo lo que quisieramos pero no es objeto de esteproyecto. Para quien quiera mas informacion puede dirigirse a la referencia [1] de la bibliografıa,o a internet, donde podemos encontrar multitud de paginas con multitud de ejemplos de todotipo.

2.2. Programacion de Interfaz Grafica. Lenguaje Qt

En este apartado, tambien vamos a hacer referencia al artıculo de Wikipedia que habla sobreeste lenguaje [7]:

Qt es una biblioteca multiplataforma ampliamente usada para desarrollar aplicaciones coninterfaz grafica de usuario, ası como tambien para el desarrollo de programas sin interfaz grafica,como herramientas para la lınea de comandos y consolas para servidores.

Qt es desarrollada como un software libre y de codigo abierto a traves de Qt Project, dondeparticipa tanto la comunidad, como desarrolladores de Nokia, Digia y otras empresas. Anterior-mente, era desarrollado por la division de software de Qt de Nokia, que entro en vigor despuesde la adquisicion por parte de Nokia de la empresa noruega Trolltech, el productor original deQt, el 17 de junio de 2008. Qt es distribuida bajo los terminos de GNU Lesser General PublicLicense (y otras). Por otro lado, Digia esta a cargo de las licencias comerciales de Qt desdemarzo de 2011.

Qt es utilizada en KDE, entorno de escritorio para sistemas como GNU/Linux o FreeBSD,entre otros. Qt utiliza el lenguaje de programacion C++ de forma nativa, adicionalmente puedeser utilizado en varios otros lenguajes de programacion a traves de bindings1 Tambien es usadaen sistemas informaticos empotrados para automocion, aeronavegacion y aparatos domesticoscomo frigorıficos.

1En el campo de la programacion, un binding es una adaptacion de una biblioteca para ser usada en un lenguaje

de programacion distinto de aquel en el que ha sido escrita.

CAPITULO 2. ANTECEDENTES Y ESTADO DEL ARTE 11

Funciona en todas las principales plataformas, y tiene un amplio apoyo. El API (Interfaz deprogramacion de aplicaciones, del ingles Application Programming Interface) de la bibliotecacuenta con metodos para acceder a bases de datos mediante SQL, ası como uso de XML, gestionde hilos, soporte de red, una API multiplataforma unificada para la manipulacion de archivos yuna multitud de otros para el manejo de ficheros, ademas de estructuras de datos tradicionales.

Qt es utilizada principalmente en Autodesk Maya, The Foundry’s Nuke, Adobe PhotoshopAlbum, Google Earth, Skype, VLC media player, VirtualBox, Dassault DraftSigh, Mathema-tica, por la Agencia Espacial Europea, DreamWorks, HP, KDE, Lucasfilm, Panasonic, Philips,Samsung, Siemens, Volvo, Walt Disney Animation Studios y Research In Motion.

Fue desarrollado inicialmente por Haavard Nord (CEO de Trolltech) y Eirik Chambe-Eng(presidente de Trolltech). Haavard y Eirik se reunieron en el Instituto Noruego de Tecnologıa deTrondheim, donde ambos se graduaron con un master en ciencias de la computacion. El kit deherramientas se llamo Qt porque la letra Q lucıa atractiva en la fuente Emacs la cual era muyusada por Haavard en su trabajo, y ”t”se inspiro en Xt, el kit de herramientas X ”X Tool kit”.

En este proyecto, se va a usar el software QtCreator para la programacion de la aplicacion.El aspecto de este programa es el mostrado en la figura 2.1:

Figura 2.1: Aspecto del programa QtCreator

Este programa nos permite escribir proyectos en lenguaje Qt, lanzarlos directamente parahacer pruebas y poder detectar errores, y construir la aplicacion una vez creada.

QtCreator tiene distintos modos de visualizacion, en el modo Edit podremos editar el codigode la aplicacion (figura 2.2), la pestana Design nos permite configurar el aspecto de la interfaz(figura 2.3), incluyendo tipos de objetos que luego podremos tratar en el codigo, y la vista Debug(figura 2.4), que nos permitira hacer una ejecucion paso a paso para poder detectar errores enel codigo.

CAPITULO 2. ANTECEDENTES Y ESTADO DEL ARTE 12

Figura 2.2: Vista Edit de QtCreator

Figura 2.3: Vista Design de QtCreator

Para el aprendizaje de este lenguaje de programacion, el alumno ha recurrido, ademas deal Proyecto Fin de Carrera del alumno Pablo Sordo, del que hablamos anteriormente, a lapublicacion C++ GUI programming with Qt 4 [2] y, sobre todo, al Canal en Youtube del

CAPITULO 2. ANTECEDENTES Y ESTADO DEL ARTE 13

Figura 2.4: Vista Debug de QtCreator

usuario VoidRealms [8], en el que explica mediante videotutoriales el funcionamiento de Qt conejemplos bastante practicos.

2.3. Bus de Comunicaciones GPIB

El bus de comunicaciones GPIB es una forma estandarizada de transmitir informacion. Sibuscamos por internet, podemos encontrar un artıculo en Wikipedia [9], del que hemos extraıdouna parte:

El Hewlett-Packard Instrument Bus (HP-IB) es un estandar bus de datos digital de cortorango desarrollado por Hewlett-Packard en los anos 1970 para conectar dispositivos de test ymedida (por ejemplo multımetros, osciloscopios, etc) con dispositivos que los controlen como unordenador. Otros fabricantes copiaron el HP-IB, llamando a su implementacion General-PurposeInstrumentation Bus (GP-IB). En 1978 el bus fue estandarizado por el Institute of Electricaland Electronics Engineers (IEEE) como el IEEE-488 (488.1).

El IEEE-488 permite que hasta 15 dispositivos inteligentes compartan un simple bus paralelode 8 bits, mediante conexion en cadena, con el dispositivo mas lento determinando la velocidadde transferencia. La maxima velocidad de transmision esta sobre 1 Mbps en el estandar originaly en 8 Mbps con IEEE-488.1-2003 (HS-488).

Las 16 lıneas que componen el bus estan agrupadas en tres grupos de acuerdo con susfunciones: 8 de bus de datos, 3 de bus de control de transferencia de datos y 5 de bus general.Algunas de ellas tienen retornos de corrientes comun y otras tienen un retorno propio, lo queprovoca un aumento del numero de lıneas totales (8 masas).

En el caso que nos atane en el laboratorio, en nuestro montaje, como veremos mas adelante,

CAPITULO 2. ANTECEDENTES Y ESTADO DEL ARTE 14

tenemos conectados tres equipos:

Un PC que nos permite ejecutar la interfaz y en el que se ha desarrollado la misma.

Un analizador del que obtendremos los datos y podremos configurar mediante la interfaz.

Un generador de senales que tambien configuraremos desde la interfaz de forma remota.

En la figura 2.5 se pueden ver los diferentes cables utilizados para conectar los equipos yformar un bus GPIB entre ellos.

Figura 2.5: Cables GPIB

A la izquierda,podemos ver un cable para conectar dos equipos de medicion. A la derecha,un cable para conectar un equipo de medicion a un PC mediante USB.

2.4. Biblioteca VISA

En este apartado se va a hablar sobre la biblioteca que incluiremos en nuestro codigo, y con laque podremos realizar la comunicacion mediante el bus GPIB. Para que los equipos conectados albus se comuniquen con el PC necesitaremos una serie de comandos con un determinado formato,que podremos encontrar en los manuales de cada uno de los dispositivos [4] [5] en su apartadode programacion de los equipos.

Para hacer llegar estos comandos, llamados SCPI (Standard Commands for ProgrammableInstruments), a los dispositivos, la biblioteca VISA (Virtual Instrument Software Architecture)nos proporciona una serie de funciones en lenguaje C++ que podremos incluir en nuestro codigo,y que son las siguientes:

ViSession: Clase C++ que nos permite manejar la sesion que abriremos con el equipoelegido mediante el bus GPIB.

ViStatus: Clase C++ con la que manejamos el estado de la sesion VISA. Se comportacomo un booleano en C++.

CAPITULO 2. ANTECEDENTES Y ESTADO DEL ARTE 15

viOpenDefaultRM(): Es una funcion que permite abrir una sesion VISA por defecto.Su unico parametro de entrada es la direccion de un objeto de la clase ViSession que sera elque maneje dicha sesion. Devuelve 0 si la sesion se ha creado correctamente y algo distintode cero en otro caso.

viOpen(): Es una funcion que permite abrir una sesion VISA en el puerto que se le pasepor parametro. Para poder abrir una sesion con cualquiera de los dispositivos del labora-torio debemos saber que direccion GPIB tienen. Esta funcion recibe el objeto ViSessionanterior, una cadena de caracteres con la direccion GPIB en el formato correcto (despueshablaremos de los formatos en el apartado 3.1) y la direccion de otro objeto de la claseViSession que sera el que maneje la sesion iniciada en el puerto indicado y con el equipodeseado. Esta funcion tambien devuelve 0 si la sesion se creo correctamente y algo distintoen otro caso.

viClose(): Esta funcion cierra una sesion VISA que hubiera abierta. Recibe por parametroun objeto de la clase ViSession que maneje una sesion ya abierta anteriormente. Estafuncion no devuelve nada.

viQueryf(): Permite enviar un comando y esperar una respuesta del equipo al que seesta enviando dicho comando. Sus parametros de entrada son el objeto ViSession de lasesion anteriormente abierta, una cadena de caracteres que indica el comando que se quiereejecutar y una cadena de caracteres donde se almacenaran los datos recibidos despues delcomando. Esta funcion devuelve la cadena de caracteres que se le pasa como parametrorellena con los datos recibidos del aparato de medida.

viPrintf(): Permite enviar un comando como en el caso anterior, pero esta vez no esperaa que se le envıe ningun dato. Sus parametros de entrada son, como antes, un objetoViSession que maneje la sesion abierta y una cadena de caracteres que indique el comandoa enviar. Esta funcion no devuelve nada.

Para ayudarnos con la sintaxis y el aprendizaje de estos parametros, en el PC del laboratoriotenemos instalado un software de Agilent, que nos permite enviar directamente comandos tantoal analizador como al generador. En la figura 2.6 podemos ver una captura de este software.Nos permite tambien saber la direccion GPIB de cada equipo para poder comenzar la sesion ycomunicarnos con el.

CAPITULO 2. ANTECEDENTES Y ESTADO DEL ARTE 16

Figura 2.6: Aspecto del software de Agilent