El cliente pinta de color las lineas que conectan items y logica. Si la pinta de rojo, quiere
decir que por ese cable viaja un "1" (estado ALTO). si la pinta de Azul, va un "0" (estado
bajo) ... Ahora mando por mail un ejemplo con 2 NOT seguidas para que vean como cambian
de color :-)
Al parecer ya esta todo lo que es load/save. Yo estoy haciendo algunas pruebas con cosas
raras y para verificar lo que estoy haciendo es cargar un archivo, salvarlo con
otro nombre y luego hacer : diff file1.xml file2.xml para ver si hay alguna diferencia.
* Se arregla la union, por n-esima vez, para que actualice correctamente los flujos.
* Se corrige un bug en el tanque para que los items conectados a la salida
calculen bien el color (especialmente al union)
Ahora el ejemplo muchoscolores.xml deberia andar 10 puntos.
- Se cambia el refresco por defecto de una planta a 0,3 veces por segundo (algo
así como 3 frames por segundo).
- Se agrega un poco de documentacion sobre el formato XML de las respuestas.
Nicolás Dimov [Sun, 30 Nov 2003 22:53:13 +0000 (22:53 +0000)]
despues de estar como un pelotudo buscando el error, lo encontre, era un == ( yo estaba poniendo = ), asi que ahora las compuertas se salvan bien cuando estan conectadas a un tanque
Se corrige el bug en la union (del modelo) que probablemente era el error
de visualizacion del color en la union. Queda algo en el tanque que ahora
vere.
Se hace que el TCPServer no mande la signal_connection_opened cuando recibe la
conexion suicida para terminar el servidor. Se corrije un bug de ortografia en
el programa :)
Retoques finales:
- Se mejora la documentacion:
* Se termina de agrupar las signals en el doxygen.
* Se agrega descripcion del namespace PlaQui y PlaQui::Server.
* Se completa el manual de usuario del servidor.
- Se agrega metodo add_plant() a Server en vez de levantar una planta
hardcodeada. La planta por default ahora se agrega en el programa.
- Se agrega una signal_connection_opened al TCPServer para dar un poco mas de
feedback desde el programa por la salida estandar.
- Se mejora el programa servidor, en especial la salida y la impresion de
errores.
- Otras limpiezas del codigo.
* Se agrega un nuevo mensaje para intercambio de colores que anda muy bien
(por lo menos comparado con el anterior :-)
* Se ajustan detalles en el modelo para que simule bien algunos casos
particulares
Nicolás Dimov [Sun, 30 Nov 2003 16:27:44 +0000 (16:27 +0000)]
se mejora la conexion entre compuertas, se salvan en el XML, hay un par de cosas que me quedaron colgadas, commiteo para que lo vean y despues arreglo lo demas
* Se agrega la logica del tanque para los flotantes
* Se hace que compilen las logicas al ser incluidas al proyecto
* Se cargan compuertas logicas desde el XML en el modelo y se utilizan
para simular (creo que la AND era la que hice)
Bueno, la Not y la Or es trivial agregarla y la voy a hacer mañana porque me mata
el sueño. La AND esta andando bien, pero por alguna razon el modelo
no lo refleja. Mañana reviso el parser, ya que el XML es correcto.
Nicolás Dimov [Sat, 29 Nov 2003 18:31:56 +0000 (18:31 +0000)]
cuando se eliminann items las compuetas ponen sus estados de las salidas o entradas en false para que se pueda realizar una nueva... esto no anda del todo bien
- Se agrega una version basica de la respuesta XML.
- Se actualizan AC y AM.
- Se actualiza documentacion.
- Se cambia el comando /server/status por /server/info.
- Se cambia el formato de las listas XML.
Known bugs:
- Cuando la respuesta va vacia, me da un parse error el parseo de la respuesta.
No encuentro por que.
Nicolás Dimov [Wed, 26 Nov 2003 19:24:26 +0000 (19:24 +0000)]
-Las compuertas pueden tener n entradas pero solo 1 salida
-La Not puede tener 1 y 1
-Para conectar hay que atinarle a la zona de conexion de las compuetas, cosa que
habria que dibujarlas como en los otros items.
-Una vez hecho un click en una compueta se puede tirar un cable, pero para tirar
otro cable desde la misma compuerta hay que volver a seleccionarla
-Se salvan correctamente estos cambios en el xml
-Puse que pordefecto los tubos y codos tengan capacidad 10, el tanque 100 y la bomba
entrega 10. para no tener que setearlo cada vez que se agrega un item.
-TODO: dibujar los conectores en las compueetas.
- Se agrega la posibilidad de pausar una planta.
- Se agrega la posibilidad de cambiar la velocidad de refresco de la simulacion
de una planta.
- Se cambia el comando /plant/stop a /plant/remove.
- Se hace que la planta empiece en estado pausado en el servidor.
- Se agregan los comandos /plant/start (comienza o reanuda una planta),
/plant/stop (pausa una planta) y /plant/set_frequency (cambia la frecuencia de
refresco).
- Se actualiza la documentacion.
* Se arregla un bug en el constructor al verificar conexiones
* Se ponen un poco mas bonitas las lineas de las conexiones logicas
* Se arregla el modelo para prevenir colcagas cuando el circuito es
realimentado. Entraba en un loop infinito. Ahora simula bien, aunque
en algunos casos se actualiza mal. Voy a tratar de resolverlo pronto.
Nicolás Dimov [Mon, 24 Nov 2003 03:55:12 +0000 (03:55 +0000)]
-Se carga la lista de items al ir haciendo click sobre ellos
-Se corrige una huevada cuando se dibujan los conectores logicos
-No se por que cuando un item rota se borran los conectores
-No se que mas cambie
Se agrega una mejora visual para poder ver los colores de todos
los componentes al mismo tiempo. Esto ira mejorando en cada
item con el correr de la semana.
* Se agregan #ifdef DEBUG a los simulate() del modelo, para poder sacar
los mensages que tira el modelo
* El modelo ahora destruye los items al ser destruido
* Tambien todos los parsers de xml llaman a xmlFreeDoc para liberar la memoria
Nicolás Dimov [Sun, 23 Nov 2003 23:15:49 +0000 (23:15 +0000)]
-Cambie un poco lo que hizo Rich para dibujar los conectores
-Se dibujan cuando se activa la logica
-Tengo que modificar las posiciones de los cuadraditos porque algunos quedan
afuera de la figura
-Hay que arreglar algunos detalles para que no se borren cuando se hace click sobre algun item o cuando se rota el mismo
Pero la idea esta, me parece que asi queda lindo...
Se agrega como crear un cuadradito de color para indicar donde esta la entrada y donde esta
la salida para los conectores logico.
Solo se implemento en Pump y no tiene en cuenta el tema de la rotacion.
Lo que habria que hacer es :
* Terminar bien el pump y elegir una posicion linda para ponerlos
* Hacer que solo aparezcan cuando el checkbox esta activo
* Creo que seria mas lindo dibujar un circulo que un cuadrado (aunque
la deteccion si se haga con un cuadrado que es mas facil)
* Hacerle lo mismo al resto de los items
Se corrige el bug que hacia que aparezca un error EADDRINUSE (que el puerto ya
estaba siendo utilizado) cuando el server se cerraba con conexiones y se trataba
de comenzar de nuevo enseguida.
Varios cambios:
- Se empiezan a emprolijar las cosas, empezando por Runnable:
* Se ponen atributos y signals como privados y se agrega mutex.
* El thread que usa ahora no es joinable, por lo que finish() ahora no
lleva argumentos.
- Se arreglan todas las otras clases (y el programa principal) para que anden
con el nuevo Runnable (haciendo loops de espera cuando deben 'joinear' un
thread).
- Se actuliza el plaqui-client y se le arreglan un par de bugs (ya anda la
opcion desconectar del menu).
- Se implementa el comando /server/stop por completo (usando una conexion
suicida para salir del accept()).
- Se agregan separadores de tipos, constantes, atributos y metodos mas
llamativos :)
* Se agrega el tanque la suma de color (no me gusta como esta, vere si la puedo hacer mas linda)
* El cliente ahra tiene un boton On/Off que apaga o enciende un elemento
dependiendo de su estado actual. Anda para cualquier objeto, despues
voy a filtrar para que solo se pueda usar en exclusa y bomba.
Es muy lindo apagar la bomba de arriba a la derecha y ver como se vacia
el tanque, y cuando se vuelve a encender se llena :-)
* Todos los items, menos el tanque, ya actualizan bien los colores
* El cliente ya muestra bien todos los cambios de color (en el ejemplo
solo se aprecia en la union, que suma rojo+negro)
* Al desconectar se envian /connection/stop/get_host()/7522 pero recibo
un error 404
* Se agrega un poco de color al ejemplo
Faltaría ver si el server ya acepta abrir o cerrar bombas/exclusas de forma manual
para implementarlo en el cliente. Mañana miro el codigo, no toy para leer nada :-)
- Se corrige el bug que hacia que no se deje de transmitir con el comando
/transmission/stop/.
- Aparentemente tambien se arregla el bug de desconexion del cliente (pero no
estoy seguro, despues de cambiar varias cosas creo que al final quedo como al
principio).
* Se completa el cliente. Ya muestra todas las propiedades y el ultimo item que
se selecciono se va actualizando automaticamente
* Se pone por default el puero 7522 en el Cliente
* Se modifica el XML de prueba para llegar a ver como se actualiza el tanque.
Hay un bug en la Division (maldita sea!), vere si llego a encontrar que es antes de mañana.
Se arregla bug en la union que hacia que el flujo inicial este en 0, y eso condicionaba todo el
circuito armado a andal mal.
Ahora el ejemplo del server corre como trompada