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] - Blame information for rev 405

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

Line No. Rev Author Line
1 206 maximiq
 
2
\documentclass [a4paper,11pt]{article}
3
 
4
% Configuración del idioma
5
\usepackage [utf8] {inputenc}
6
\usepackage [spanish] {babel}
7
 
8
 
9
% Para incluir gráficos
10
\usepackage{graphicx}
11
 
12
%
13
\ProvidesPackage{reporte-phr}
14
\usepackage{reporte-phr}
15
 
16
% Para el titulo
17
\def\logo{./img/title/phr_logo.pdf}
18 223 maximiq
\def\producto{Interfaz gráfica de usuario\par \vspace{0.5ex} PHR GUI v0.1}
19 218 maximiq
\title{Desarrollo de la interfaz gráfica}
20 206 maximiq
%\author{Maximiliano Quinteros}
21 218 maximiq
\def\docver{0.9}
22 206 maximiq
\date{Abril de 2013}
23
 
24
 
25
\begin {document}
26
 
27
 
28
\maketitle
29
 
30
\section{Primeras pruebas}
31
 
32 218 maximiq
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.
33
 
34 223 maximiq
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.
35 218 maximiq
 
36
El proceso comenzó haciendo pequeñas pruebas para analizar las opciones disponibles.
37
 
38 223 maximiq
\subsection{Interfaz gráfica}
39 206 maximiq
 
40 218 maximiq
Se buscaba hacer algo aprovechando recursos de licencias libres. En cuanto a la interfaz gráfica se analizaron las siguientes librerias:
41
\begin{enumerate}
42
\item GTK
43
\item Qt
44
\item Tcl/Tk
45
\item \textbf{WxWidgets -- Elegida!}
46
\end{enumerate}
47
 
48
Y se eligió por ésta última por su portabilidad, e integración con librerías nativas de los distintos sistemas operativos.
49
 
50 223 maximiq
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.
51 218 maximiq
 
52
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.
53
 
54
\begin{center}
55
\includegraphics[width=0.45\textwidth]{./img/etapa01.png}
56
\end{center}
57
 
58 206 maximiq
\subsection{Independencia del intérprete}
59 218 maximiq
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.
60 206 maximiq
 
61 223 maximiq
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.
62 218 maximiq
 
63
\begin{center}
64
\includegraphics[width=0.55\textwidth]{./img/etapa02.png}
65
\end{center}
66
 
67
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}.
68
 
69
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}:
70
 
71
\begin{quote}
72
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.
73
\end{quote}
74
 
75
En el próximo paso se busca una solución amigable a la distribución de PHR GUI.
76
 
77 206 maximiq
\subsection{Instalador}
78
 
79 223 maximiq
Para generar el instalador se recurrió a NSIS\footnote{http://nsis.sourceforge.net/Main\_Page}.
80 206 maximiq
 
81 218 maximiq
\begin{quote}
82
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.
83
\end{quote}
84
 
85
Mediante un lenguaje permite describir instaladores que luego son creados por dicha aplicación.
86
 
87
Para generar el script de NSIS se recurrió a:
88
 
89
\begin{description}
90
\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.
91
\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.
92
 
93
\begin{lstlisting}
94
  ExecWait '$INSTDIR\vcredist_x86.exe /q'
95
\end{lstlisting}
96
 
97
Esto instala de forma silenciosa las librerías que el modulo py2exe no incluye al momento de compilar por incompatibilidades de la licencia.
98
 
99
\end{description}
100
 
101 223 maximiq
Así se obtuvo el archivo NSIS con el que finalmente se hizo el instalador.
102 218 maximiq
 
103
\begin{center}
104
\includegraphics[width=0.6\textwidth]{./img/etapa03.png}
105
\end{center}
106
 
107 206 maximiq
\section{Desarrollo de la GUI en Windows}
108 218 maximiq
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.
109 206 maximiq
 
110 223 maximiq
A continuación un diagrama bosquejando el proceso hasta la obtención del instalador.
111 206 maximiq
 
112 218 maximiq
\begin{center}
113
\includegraphics[width=0.9\textwidth]{./img/diseno.png}
114
\end{center}
115
 
116
\section{PHR GUI v0.1 para GNU/Linux}
117
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.
118
 
119
\begin{center}
120
\includegraphics[width=0.60\textwidth]{./img/win2lin.png}
121
\end{center}
122
 
123 206 maximiq
\section{Futuro}
124
 
125 218 maximiq
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.
126
 
127
\begin{center}
128
\includegraphics[width=0.75\textwidth]{./img/life-cycle.png}
129
\end{center}
130
 
131
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.
132
 
133 206 maximiq
\subsection{TODO}
134
 
135
\begin{enumerate}
136 218 maximiq
\item Respecto de la interacción con xc3sprog:
137
        \begin{enumerate}
138
        \item Añadir soporte para programar con archivos MCS además de BIT.
139
        \item Solucionar la indicación de los archivos en Windows cuando la ruta incluye dos puntos (':').
140 223 maximiq
        \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.
141
        \item Dar la opción para elegir librería libre o propietaria.
142 218 maximiq
        \item Detectar y corroborar un archivo de configuración al inicio (o en cualquier momento).
143 220 maximiq
        \item Procesar la salida de xc3sprog para brindar mensajes mas claros.
144 218 maximiq
        \end{enumerate}
145
\item Respecto de la usabilidad:
146
        \begin{enumerate}
147
        \item Mejorara el dialogo de ayuda. Incluir foto explicando el seteo de los jumpers.
148
        \item Añadir aceleradores a los botones y hacerlos cambiar entre ellos con la tecla tab.
149
        \end{enumerate}
150
\item Respecto de la portabilidad:
151
        \begin{enumerate}
152
        \item Generar los mismos archivos  capaces de correr en Windows y Linux.
153
        \end{enumerate}
154 206 maximiq
\end{enumerate}
155
 
156 218 maximiq
\end{document}
157 206 maximiq
 

powered by: WebSVN 2.1.0

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