OpenCores
URL https://opencores.org/ocsvn/phr/phr/trunk

Subversion Repositories phr

[/] [phr/] [trunk/] [doc/] [informe-tesis/] [reports/] [PPS/] [maximiq/] [desarrollo phr-gui-v01/] [desarrollo-gui-v01.tex] - Rev 405

Go to most recent revision | Compare with Previous | Blame | View Log

 
\documentclass [a4paper,11pt]{article}
 
% Configuración del idioma
\usepackage [utf8] {inputenc}
\usepackage [spanish] {babel}
 
 
% Para incluir gráficos
\usepackage{graphicx}
 
%
\ProvidesPackage{reporte-phr}
\usepackage{reporte-phr}
 
% Para el titulo
\def\logo{./img/title/phr_logo.pdf}
\def\producto{Interfaz gráfica de usuario\par \vspace{0.5ex} PHR GUI v0.1}
\title{Desarrollo de la interfaz gráfica}
%\author{Maximiliano Quinteros}
\def\docver{0.9}
\date{Abril de 2013}
 
 
\begin {document}
 
 
\maketitle
 
\section{Primeras pruebas}
 
Se reconocía la necesidad de facilitar el uso del software xc3sprog debido a que éste funciona en un terminal y puede necesitar de varios argumentos). Sobre todo porque la PHR está diseñada para estudiantes que se inician con los lenguajes de descripción de hardware. 
 
Surgió la idea de realizar una interfaz gráfica de usuario (GUI) que sea capaz de correr en sistemas Linux y Windows, y se eligió un lenguaje de programación: Python.
 
El proceso comenzó haciendo pequeñas pruebas para analizar las opciones disponibles.
 
\subsection{Interfaz gráfica}
 
Se buscaba hacer algo aprovechando recursos de licencias libres. En cuanto a la interfaz gráfica se analizaron las siguientes librerias:
\begin{enumerate}
\item GTK
\item Qt
\item Tcl/Tk
\item \textbf{WxWidgets -- Elegida!}
\end{enumerate}
 
Y se eligió por ésta última por su portabilidad, e integración con librerías nativas de los distintos sistemas operativos. 
 
En el caso de MS Windows hizo falta instalar al interprete python el módulo \emph{wxPython}. Primero se usó la versión 3.0.0 (la última versión) pero luego de un tiempo se detectó un funcionamiento errático con Windows XP, por lo cual se pasó a la versión 2.9.5 y no se tuvieron mas problemas.
 
Para el desarrollo con wxPython se encontró el software \emph{wxGlade} que permite un desarrollo rápido de la aplicación (RAD) ya que el usuario dibuja la interfaz y luego la exporta en forma de código de Python. Luego quedan por escribir los handlers para los eventos.
 
\begin{center}
\includegraphics[width=0.45\textwidth]{./img/etapa01.png}
\end{center}
 
\subsection{Independencia del intérprete}
Para el caso de la ejecución de un script de Python en GNU/Linux no existen complicaciones puesto que las distribuciones cuentan con el intérprete ya instalado. No ocurre lo mismo con el sistema Windows. 
 
Para no tener que instalar el interprete en cada computadora donde se desee usar PHR GUI se recurrió al módulo de Python denominado \emph{py2exe} que genera archivos de distribución. Este modulo lee el script de interés y lo procesa para generar un directorio (denominado \emph{dist}) en donde ubica un archivo ejecutable (\texttt{.exe}) y librerías asociadas al mismo. 
 
\begin{center}
\includegraphics[width=0.55\textwidth]{./img/etapa02.png}
\end{center}
 
Si bien hay otras alternativas a py2exe para compilar código de Python, se eligió por sobre las otras por recomendaciones en la documentación de wxPython\footnote{http://wiki.wxpython.org/DistributingYourApplication}.
 
No obstante la tarea efectuada, py2exe no resolvió el problema de la distribución por completo. Por usar la librería gráfica wxWidgets, que a su vez usa librerías de Microsoft (y de licencia no libre), el programa no puede correrse en algunas versiones de Windows. La solución es pre-instalar un paquete para desarrolladores de Microsoft: \texttt{vcredist\_x86.exe}. Según Microsoft\footnote{http://www.microsoft.com/en-us/download/details.aspx?id=5555}:
 
\begin{quote}
The Microsoft Visual C++ 2010 Redistributable Package installs runtime components of Visual C++ Libraries required to run applications developed with Visual C++ on a computer that does not have Visual C++ 2010 installed.
\end{quote}
 
En el próximo paso se busca una solución amigable a la distribución de PHR GUI.
 
\subsection{Instalador}
 
Para generar el instalador se recurrió a NSIS\footnote{http://nsis.sourceforge.net/Main\_Page}.
 
\begin{quote}
NSIS (Nullsoft Scriptable Install System) is a professional open source system to create Windows installers. It is designed to be as small and flexible as possible and is therefore very suitable for internet distribution.
\end{quote}
 
Mediante un lenguaje permite describir instaladores que luego son creados por dicha aplicación.
 
Para generar el script de NSIS se recurrió a:
 
\begin{description}
\item[Software \emph{HM NIS Editor 2.0.3}] Este software tiene un asistente al que se le puede indicar el directorio de distribución (entre otros datos), para crear el archivo NSIS.
\item[Edición manual del archivo anterior] Se realiza la edición manual para añadirle una linea en la sección \texttt{Post} del documento.
 
\begin{lstlisting}
  ExecWait '$INSTDIR\vcredist_x86.exe /q'
\end{lstlisting}
 
Esto instala de forma silenciosa las librerías que el modulo py2exe no incluye al momento de compilar por incompatibilidades de la licencia.
 
\end{description}
 
Así se obtuvo el archivo NSIS con el que finalmente se hizo el instalador.
 
\begin{center}
\includegraphics[width=0.6\textwidth]{./img/etapa03.png}
\end{center}
 
\section{Desarrollo de la GUI en Windows}
Debido a que Windows presentaba una mayor cantidad requisitos en cuanto a desarrollo y portabilidad se inició el desarrollo de PHR GUI en este sistema operativo. 
 
A continuación un diagrama bosquejando el proceso hasta la obtención del instalador. 
 
\begin{center}
\includegraphics[width=0.9\textwidth]{./img/diseno.png}
\end{center}
 
\section{PHR GUI v0.1 para GNU/Linux}
Para hacer funcionar la GUI en GNU/Linux se hicieron algunas modificaciones al programa desarrollado para Windows. En su mayor parte referidas a la forma en que se invoca el xc3sprog, debido a la diferencia entre el shell de linux y la consola de windows. 
 
\begin{center}
\includegraphics[width=0.60\textwidth]{./img/win2lin.png}
\end{center}
 
\section{Futuro}
 
En la vida de cualquier producto, se pasan por distintas etapas y de acuerdo al proceso de diseño, cíclicamente es necesario adaptar el trabajo para cumplir con los objetivos del proyecto y acomodarse a nuevas especificaciones. 
 
\begin{center}
\includegraphics[width=0.75\textwidth]{./img/life-cycle.png}
\end{center}
 
De acuerdo a lo expuesto, se prevé una nueva versión de PHR GUI y en el siguiente texto se listan algunas ideas a tener en cuenta en el momento de continuar con el desarrollo.
 
\subsection{TODO}
 
\begin{enumerate}
\item Respecto de la interacción con xc3sprog:
	\begin{enumerate}
	\item Añadir soporte para programar con archivos MCS además de BIT.
	\item Solucionar la indicación de los archivos en Windows cuando la ruta incluye dos puntos (':').
	\item Crear una ventana de configuración en la cual se pueda elegir la ruta al xc3sprog (podría estar en el PATH), y que además permita elegir el comando que se ejecuta para cada evento, haciéndolo compatible para distintas versiones de xc3sprog.
	\item Dar la opción para elegir librería libre o propietaria.
	\item Detectar y corroborar un archivo de configuración al inicio (o en cualquier momento).
	\item Procesar la salida de xc3sprog para brindar mensajes mas claros.
	\end{enumerate}
\item Respecto de la usabilidad:
	\begin{enumerate}
	\item Mejorara el dialogo de ayuda. Incluir foto explicando el seteo de los jumpers.
	\item Añadir aceleradores a los botones y hacerlos cambiar entre ellos con la tecla tab.
	\end{enumerate}
\item Respecto de la portabilidad:
	\begin{enumerate}
	\item Generar los mismos archivos  capaces de correr en Windows y Linux.
	\end{enumerate}
\end{enumerate}
 
\end{document}
 
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.