Cosas para preguntar

28 04 2008

He descubierto una pequeña cagada en el codigo de terminal, que es la siguiente:

en el metodo crearUEsporadico de la clase modificaciones,
no se puede consultar la ultima id que as creado
y por lo tanto no se puede devolver esa id creada

Propongo que escribamos en esta entrada todas las cagadas que encontremos

PD: Dani y yo creemos que las ids al recogerlas y pasarlas a String van a ser identificadas con una letra por delante, para saber si son esporadico o habituales.

Otra cagada:

Al crear un acceso, en esta tabla tenemos dos atributos:idEsporadico e idHabitual. El acceso o es de un tipo o del otro, y si la dejamos como esta, habra muchos campos a NULL y por tanto problemas.

En recarga pasa lo mismo, la recarga tiene idEsporadico e idHabitual, y esto generaría nulls, porque o la hace un esporadico o la hace un habitual. Además, la recarga sólo las hacen los habituales, y los billetes los esporádicos. No le veo el sentido.

Creo que o solucionamos el tema de los usuarios, con una ISA (de esta forma tendríamos idUsuario y punto) o mal vamos. Y también creo que habría que hacer una nueva tabla: billete. Así separaríamos la recarga tal y como está ahora (billetes+recargas) en billete y recargas.

Así es como veo yo la BD, después de haberme puesto a programar la parte de JDBC:

Free Image Hosting at www.ImageShack.us

Yo iría mañana a preguntar con los dos modelos haber si conseguimos ver cómo arreglar los problemas.





Javacomm

24 04 2008

Paso a explicar la librería java com:

Estos son los servicios basicos que da javacom, hay cosas que no he traducido porque era demasie pal body:

  • Enumerar los puertos disponibles CommPortIdentifier.getPortIdentifiers devuelve una lista que contiene un objeto de la clase CommPortIdentifier por cada puerto disponible. Con este objeto se controla el acceso a los puertos.
  • Abrir y declarar propietarios de los puertos de comunicaciones en los objetos CommPortIdentifier
  • Solucionar el problema de la contención de propiedad de los puertos entre múltiples aplicaciones de Java. Se utilizan eventos para notificar a las aplicaciones interesadas . Por ejemplo, la excepción PortInUseExceptionse lanza cuando una aplicación falla al abrir un puerto.
  • Mantener Entradas y Salidas asíncronas y síncronas en los puertos de comunicaciones. Las clases de bajo nivel como SerialPort y ParallelPort, tienen métodos para manejar las Entradas y Salidas en los puertos de comunicación.
  • Un gestor de eventos como en los entornos graficos. Por ejemplo, si en el puerto serie cambia el estado del Carrier Detect, Ring Indicator, DTR, etc. el objeto SerialPort envía un enveto de tipo SerialPortEvent que describe los cambios de estado. Leer el resto de esta entrada »




Presentación del preproyecto

23 04 2008

Bueno, ya está finalizada la primera fase, y esta es la presentación que realizaremos el día 29.

Presentación29-04





Subversion

21 04 2008

Una buena herramienta para que podamos dividir el trabajo de programación es Subversion. Es un sistema que permite el control de versiones de los proyectos de software, almacenando el código fuente en un servidor en Internet, un repositorio.

Todos los usuarios del equipo que participen el proyecto, harán cambios en el código. Es un coñazo andar copiando y pegando en algún sitio los cambios de cada uno, además de ser un lío. Subversion nos permite olvidarnos de todo eso y tener un solo proyecto común para todos en el que se realizarán todos los cambios. Instalando un plugin en Eclipse, Subclipse, podemos agregar esta funcionalidad.

La guía para su instalación está aquí.

Una vez instalado, abriremos la perspectiva SVN, para añadir nuestro repositorio. Vamos a Window->Open Perspective->Other.. y seleccionamos SVN Repository.

Una vez abierta la nueva perspectiva, en la columna izquierda podremos añadir el repositorio. Click derecho New->Repository location… y añadiremos la URL del repositorio que podéis encontrar en nuestro grupo de Assembla, en la pestaña Trac/SVN. Cuando lo hayamos agregado, lo exploraremos, y veremos los 2 proyectos que estamos desarrollando: Tornos y Terminal.

Lo primero que queremos hacer es descargarnos estos proyectos para trabajar sobre ellos. Así que clicaremos en ellos con el click derecho, sobre sus carpetas, y le daremos a Checkout… . Elegiremos la opción ‘Checkout as a project in the workspace’ y le daremos el mismo nombre que tiene el proyecto en el repositorio. Se creará la copia de trabajo en nuestro workspace de Eclipse, sobre la que podremos efectuar los cambios.

Update

Mientras que editamos, debuggeamos o lo que sea, puede que alguien efectúe cambios en el proyecto. Para aplicar los cambios en nuestra copia de trabajo, haremos click derecho en el proyecto, y en el menú Team, que tiene todo lo relacionado con SVN, clickaremos en Update.

Commit

Una vez hayamos realizado todos los cambios, querremos actualizar la versión del repositorio con nuestros cambios. Antes de hacer esto es obligatorio sincronizar nuestra copia con la del repositorio, es decir, hay que hacer click en Update. Una vez hecho esto haremos click en Commit, dentro del menú Team, al hacer click derecho en el proyecto. Si todo va bien, los cambios se aplicarán a la versión del repositorio.

Synchronize with repository

La opción de synchronize nos permite aplicar neustros cambios a la versión del repositorio además de recibir los cambios que otros hayan hecho en nuestra copia. Es posible que no podamos saber el alcance de neustros cambios en el servidor, y que nos interese conocer el estado del repositorio antes de aplicarlos. Para ello, le daremos a Window, open perspective, other y abriremos la perspectiva de Team synchronizing, que nos mostrará una visión de los cambios a recibir y a aplicar. Si vemos que todo está bien, haremos click derecho en el proeycto, Team y le daremos a synchronize.

Ayuda

Para encontrar ayuda sobre Subclipse y tal, en este link está toda la información:

http://svn.collab.net/subclipse/help/index.jsp





Oracle JDeveloper

16 04 2008

Bueno, como visteis ayer, descubrimos un programa muy interesante para desarrollos Java. Oracle JDeveloper te permite crear diagramas UML para definir el proyecto y pasar a implementarlo. También, de forma inversa, permite generar diagramas UML automáticamente de nuestros proyectos: diagramas de clases, de secuencias, de estados…

Urgando un poco en el programa se puede encontrar fácilmente esta opción. Además de esto, incluye una herramienta para el desarrollo visual de interfaces de usuario. Esta parte promete bastante, pero todavía no la he mirado a fondo.

Es verdad que es un coñazo pasar de Eclipse a otro programa. Busqué plugins UML para Eclipse, y el mas interesante me parció OMONDO. Aún así, es increíblemente más pesado y lento que Oracle JDeveloper, y los diagramas que crea son mucho menos claros, además de no relacionar correctamente ciertas partes.

Esto es un ejemplo de diagrama de clases usando Oracle JDeveloper:

Free Image Hosting at www.ImageShack.us

QuickPost

Link para descarga:

Oracle JDeveloper





RS232 a RS485

16 04 2008

Buenas he estado mirado el precio de estos conversores en ebay, y he encontrado estos tres.

El precio de cada uno de ellos no llega a 10 €, creo que tendriamos que mirar, decidir y pedir uno ya. Debeis de pensar que nos llegara en 15 dias mas o menos.

Nos vemos.





Seguridad de las tarjetas

8 04 2008

Bueno, aqui va una de las paranoias-visiones mas gordas que he tenido en mucho tiempo. Para aumentar la seguridad del sistema (que ahora mismo es practicamente nula, ya que cualquier pirata puede grabarse en una tarjeta una id aleatoria y pasar por un torno descontandole el dinero al que le toque) , he pensado que podria grabarse en la propia tarjeta otro dato adicional aparte de la id, ya que se pueden grabar otros 19 digitos que no usamos. Se podria grabar en la tarjeta la id y tambien el dinero que tiene, y que en cada uso de la tarjeta (y en la recarga) se grabe ese dato. Al pasar por el torno se haria una comprobacion de si estos dos datos se corresponden.Por lo tanto, si un pirata graba una id necesita saber cuanto dinero tiene esa tarjeta en ese momento, y si los datos no se corresponden se bloquee esa id en la base de datos, quedando inutilizable.





Programas en java

8 04 2008

En nuestro proyecto utilizaremos 3 programas:

<>El programa de las terminales

*Elegir entre billete unico, recargar tarjeta monedero o crear tarjeta nueva:
*BILLETE UNICO:

  • -Seleccionar Linea
  • -Crear el nuevo invitado en la base de datos
  • -Expenderlo

*RECARGAR TARJETA:

  • -Pedir id (una o dos veces)
  • -introducir dinero
  • -Añadir el dinero al saldo

<> El programa puente a la base de datos (tornos)

  • *El Pc pregunta a los tornos por la rs232
  • *Recibe la respuesta de un torno, si es negativa (no han pasado tarjetas) sigue con la ronda de polling
  • *Si es positiva busca la id en la base de datos
  • *Consulta la estacion y linea (precio)
  • *De la id intenta restar el saldo
  • *Devuelve positivo si hay suficiente dinero y lo resta (led verde), si no manda un error (led rojo)
  • *Sigue preguntando de torno en torno repitiendo el ciclo

<>El programa que crea la base de datos:

  • * Crear la base de datos en Mysql
  • * Cambiar el motor (para que funcienen las foreign key)
  • * Crear las tablas correspondientes




Esquema de las placas

7 04 2008

Esquema de la placa





Max485 o SN75176

2 04 2008

En una estación de Metro tendremos varios dispositivos para validar los accesos. Estos estarán conectados a un bus  RS485, que les conectará con el master, el PC. Es por ello que debemos convertir el bus RS485 a RS232. Además de ello, sabiendo que en cada dispositivo existe un microcontrolador que se enccarga de la transmisión y recepcion de datos, habrá que convertir la señal RS485 a TTL. ¿Convertiremos esta señal en cada dispositivo? ¿O la convertiremos una sola ve para todos los dispositivos? Nos decidimos por usar un sólo MAX485 o SN75176 para una única conversión. ¿Porqué?

 

Porque facilita el montaje de la placa, ya que lo que construyamos se tratrá de una demo. En el sistema real, debido a las distancias y al ruido, sería mejor añadir un módulo conversor RS485-TTL por cada dispositivo. La conversión del bus se hará una sola vez y no en cada PIC. Por lo tanto, obtienes un bus de 0v:5v.