]> git.llucax.com Git - z.facultad/75.42/plaqui.git/commitdiff
Se arregla un bug que hacia que la Or siempre tirara 1 a su salida, y eso
authorRicardo Markiewicz <gazer.arg@gmail.com>
Fri, 5 Dec 2003 16:49:41 +0000 (16:49 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Fri, 5 Dec 2003 16:49:41 +0000 (16:49 +0000)
 hacia que no andaran bien los ejemplos con logica.
   La linea decia :
   mi_salida = mi_entrada || mi_entrada->get_output();
y como mi_entrada es un puntero valido, mi_salida siempre estaba entru :-(
Ahora es  :
   mi_salida = mi_salida || mi_entrada->get_output();

  Este habria que mandarselo a Nicolas porque es importante.

Model/include/or.h
Model/src/simulator.cpp
Model/src/tank.cpp

index b7d6d0c3bd81c11aed3de43bebb4b84ca8da4f8f..92b5406fae9856e2537acb5010f1728d043c8db2 100644 (file)
@@ -22,7 +22,8 @@ public:
                std::list<IConector *>::iterator it;
                for(it = in_list.begin(); it != in_list.end(); it++) {
                        mi_entrada = static_cast<LogicControl *>(*it);
-                       mi_salida = mi_entrada || mi_entrada->get_output();
+                       std::cout << name << " -> " << mi_entrada->get_name() << " " << mi_entrada->get_output() << std::endl;
+                       mi_salida = mi_salida || mi_entrada->get_output();
                }
                return mi_salida;
        }
index be680057c5f596a7a404f9569a4facee8d443c8e..6a85446bfa325e3130ad4c3ef1adc8ac0c92adb1 100644 (file)
@@ -597,7 +597,7 @@ void Simulator::connect_logic(LogicControl *current, xmlNodePtr nodo)
                if (xmlStrcmp(nodo->name, BAD_CAST"entrada") == 0) {
                        item = dynamic_cast<Control *>(find((char *)XML_GET_CONTENT(nodo->children)));
                        if (item != NULL) {
-                               if (dynamic_cast<Tank *>(item)) {
+                               if (dynamic_cast<Tank *>(item) != NULL) {
                                        std::string donde = (char *)xmlGetProp(nodo, BAD_CAST"id");
                                        if (donde == "inferior") {
                                                current->connect( item->get_logic_output(), IConector::IN );
index 58a90ff08f3c17c4ea64bed99c08276224a72991..16e745cad67b3005156d7ecee06e9fd7de93ee90 100644 (file)
@@ -12,6 +12,8 @@ Tank::Tank(const std::string &_name):Source(_name),Drain(_name),Control(_name)
        /* Utilizo en input como el flotante de arriba y el output como el de abajo */
        input = new Condition(Condition::GT, 0.9, this);
        output = new Condition(Condition::LT, 0.1, this);
+       input->set_name(name+" superior");
+       output->set_name(name+" inferior");
 }
 
 Tank::~Tank()