diff --git a/include/model_car_driver_base.h b/include/model_car_driver_base.h
index e0dd5a3df0cdf96150fbd9cca26cd1a4c3e6a91c..0ff074a285e02124d1503fdbe49ba855b66765da 100644
--- a/include/model_car_driver_base.h
+++ b/include/model_car_driver_base.h
@@ -5,6 +5,7 @@
 #include "commexceptions.h"
 #include "threadserver.h"
 // #include "eventserver.h"
+#include "eventexceptions.h"
 #include "model_car_exceptions.h"
 #include "model_car_protocol.h"
 #include <iostream>
diff --git a/src/examples/model_car_actuators_test.cpp b/src/examples/model_car_actuators_test.cpp
index ef43b865c4f47a440abfd30e6bab47d65ee1a12f..ab72ed7bce37ac350e0e0103bd6a74c4734ea95e 100644
--- a/src/examples/model_car_actuators_test.cpp
+++ b/src/examples/model_car_actuators_test.cpp
@@ -4,98 +4,143 @@
 
 int main(int argc, char *argv[])
 {
-  std::string name = "model_car_driver_act";
+  std::string name = "model_car_driver_actuators";
   CModelCarActuators *act_driver;
   try
   {
-    std::cout << "model_car_drivers_test_act::main: Creating object..." << std::endl;
+    std::cout << "model_car_actuators_test::main: Creating object..." << std::endl;
     act_driver = new CModelCarActuators(name);
-    std::cout << "model_car_drivers_test_act::main: Object created" << std::endl;
+    std::cout << "model_car_actuators_test::main: Object created" << std::endl;
     act_driver->open();
 
     bool test_steering           = true;
-    bool test_speed              = false;
-    bool test_watchdog           = true;
-    bool test_emergency_stop     = true;
-    bool test_enable_disable_uss = true;
+    bool test_speed              = true;
+    bool test_watchdog           = false;
+    bool test_emergency_stop     = false;
+    bool test_enable_disable_uss = false;
+
+    float t=500e3;
 
     if(test_steering)
     {
-      std::cout << "model_car_drivers_test_act::main: about to test steering, in 3..." << std::endl;
+      std::cout << "model_car_actuators_test::main: about to test steering, in 3..." << std::endl;
       sleep(1);
-      std::cout << "model_car_drivers_test_act::main: about to test steering, 2..." << std::endl;
+      std::cout << "model_car_actuators_test::main: about to test steering, 2..." << std::endl;
       sleep(1);
-      std::cout << "model_car_drivers_test_act::main: about to test steering, 1..."  << std::endl;
+      std::cout << "model_car_actuators_test::main: about to test steering, 1..."  << std::endl;
       sleep(1);
-      std::cout << "model_car_drivers_test_act::main: sending steering 0" << std::endl;
-      act_driver->send_steering(0.0); //center
-      usleep(500e3);
-      std::cout << "model_car_drivers_test_act::main: sending steering max left" << std::endl;
-      act_driver->send_steering(100.0); //max left (30º)
-      usleep(500e3);
-      std::cout << "model_car_drivers_test_act::main: sending steering 0" << std::endl;
-      act_driver->send_steering(0.0); //center
-      usleep(500e3);
-      std::cout << "model_car_drivers_test_act::main: sending steering max right" << std::endl;
-      act_driver->send_steering(-100.0); //max right (30º)
-      usleep(500e3);
-      std::cout << "model_car_drivers_test_act::main: sending steering 0" << std::endl;
-      act_driver->send_steering(0.0); //center
+      std::cout << "model_car_actuators_test::main: sending steering 0" << std::endl;
+
+      act_driver->send_watchdog();
+      act_driver->send_speed(0.0); //stop
+      act_driver->send_steering(0.0);
+
+      for(int i=0; i<100; i+=10)
+      {
+        act_driver->send_watchdog();
+        act_driver->send_steering(i);
+        std::cout << "model_car_actuators_test::main: sending steering "<< i << std::endl;
+        usleep(t);
+      }
+      for(int i=100; i>=-100; i-=10)
+      {
+        act_driver->send_watchdog();
+        act_driver->send_steering(i);
+        std::cout << "model_car_actuators_test::main: sending steering "<< i << std::endl;
+        usleep(t);
+      }
+      for(int i=-100; i<=0; i+=10)
+      {
+        act_driver->send_watchdog();
+        act_driver->send_steering(i);
+        std::cout << "model_car_actuators_test::main: sending steering "<< i << std::endl;
+        usleep(t);
+      }
+
+      act_driver->send_watchdog();
+      std::cout << "model_car_actuators_test::main: sending steering 0"<< std::endl;
+      act_driver->send_steering(0.0);
     }
 
     if(test_speed)
     {
-      std::cout << "model_car_drivers_test_act::main: about to test speed, in 3..." << std::endl;
+      float v=10;
+      std::cout << "model_car_actuators_test::main: about to test speed, in 3..." << std::endl;
       sleep(1);
-      std::cout << "model_car_drivers_test_act::main: about to test speed, 2..." << std::endl;
+      std::cout << "model_car_actuators_test::main: about to test speed, 2..." << std::endl;
       sleep(1);
-      std::cout << "model_car_drivers_test_act::main: about to test speed, 1..." << std::endl;
+      std::cout << "model_car_actuators_test::main: about to test speed, 1..." << std::endl;
       sleep(1);
-      std::cout << "model_car_drivers_test_act::main: sending speed 0" << std::endl;
-      act_driver->send_speed(0.0); //stop
-      usleep(500e3);
-      std::cout << "model_car_drivers_test_act::main: sending speed 10%" << std::endl;
-      act_driver->send_speed(10.0); //10% of full gas
-      usleep(500e3);
-      std::cout << "model_car_drivers_test_act::main: sending speed 0" << std::endl;
-      act_driver->send_speed(0.0); //stop
-      usleep(500e3);
-      std::cout << "model_car_drivers_test_act::main: sending speed -10%" << std::endl;
-      act_driver->send_speed(-10.0); //10% of reverse
-      usleep(500e3);
-      std::cout << "model_car_drivers_test_act::main: sending speed 0" << std::endl;
-      act_driver->send_speed(0.0); //stop
+
+      v=0;
+      std::cout << "model_car_actuators_test::main: sending speed "<< v << std::endl;
+      act_driver->send_watchdog();
+      act_driver->send_speed(v);
+      act_driver->send_steering(0.0); //center
+      usleep(t);
+      v=10;
+      std::cout << "model_car_actuators_test::main: sending speed " << v << std::endl;
+      act_driver->send_speed(v); 
+      act_driver->send_watchdog();
+      usleep(t);
+      act_driver->send_watchdog();
+      usleep(t);
+      act_driver->send_watchdog();
+      usleep(t);
+      act_driver->send_watchdog();
+      usleep(t);
+      act_driver->send_watchdog();
+      usleep(t);
+      act_driver->send_watchdog();
+      v=0;
+      std::cout << "model_car_actuators_test::main: sending speed " << v << std::endl;
+      act_driver->send_watchdog();
+      act_driver->send_speed(v);
+      usleep(t);
+      v=-10;
+      std::cout << "model_car_actuators_test::main: sending speed " << v << std::endl;
+      act_driver->send_watchdog();
+      act_driver->send_speed(v);
+      usleep(t);
+      act_driver->send_watchdog();
+      usleep(t);
+      act_driver->send_watchdog();
+      usleep(t);
+      v=0;
+      std::cout << "model_car_actuators_test::main: sending speed "<< v << std::endl;
+      act_driver->send_watchdog();
+      act_driver->send_speed(v);
     }
 
     if(test_watchdog)
     {
-      std::cout << "model_car_drivers_test_act::main: sending watchdog" << std::endl;
-     act_driver->send_watchdog();
+      std::cout << "model_car_actuators_test::main: sending watchdog" << std::endl;
+      act_driver->send_watchdog();
     }
 
     if(test_emergency_stop)
     {
-      std::cout << "model_car_drivers_test_act::main: sending emergency stop" << std::endl;
+      std::cout << "model_car_actuators_test::main: sending emergency stop" << std::endl;
       act_driver->send_emergency_stop();
     }
 
     if(test_enable_disable_uss)
     {
-      std::cout << "model_car_drivers_test_act::main: sending enable uss" << std::endl;
+      std::cout << "model_car_actuators_test::main: sending enable uss" << std::endl;
       act_driver->send_enable_uss();
-      std::cout << "model_car_drivers_test_act::main: sending disable uss" << std::endl;
+      std::cout << "model_car_actuators_test::main: sending disable uss" << std::endl;
       act_driver->send_disable_uss();
     }
 
-    std::cout << "model_car_drivers_test_act::main: END OF TESTING" << std::endl;
+    std::cout << "model_car_actuators_test::main: END OF TESTING" << std::endl;
 
-    std::cout << "model_car_drivers_test_act::main: stopping act_driver" << std::endl;
+    std::cout << "model_car_actuators_test::main: stopping act_driver" << std::endl;
     act_driver->close();
-    std::cout << "model_car_drivers_test_act::main: act_driver stopped" << std::endl;
+    std::cout << "model_car_actuators_test::main: act_driver stopped" << std::endl;
   }
   catch (CException &e)
   {
-    std::cout << e.what() << std::endl;
+    std::cout << "model_car_actuators_test: " << e.what() << std::endl;
   }
   
   delete act_driver;
diff --git a/src/examples/model_car_batteries_test.cpp b/src/examples/model_car_batteries_test.cpp
index 24d610c5fc109627ae3d26318fac61f8afa5f281..426fe5dd58d22bc995a7ff491bf3e7de04e6b286 100644
--- a/src/examples/model_car_batteries_test.cpp
+++ b/src/examples/model_car_batteries_test.cpp
@@ -15,32 +15,31 @@ int main(int argc, char *argv[])
     events.push_back(bat_driver->get_new_data_event_id());
 
     std::cout << "model_car_drivers_test_bat::main: reading BAT values" << std::endl;
-    for(unsigned int i=0; i<10; i++)
+    //for(unsigned int i=0; i<10; i++)
+    while(true)
     {
       event_server->wait_all(events,1000);
       float value;
       if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR, value))
-        std::cout << "  ID_ARD_SENS_VOLT_ACTUATOR value:       " << value << std::endl;
+        std::cout << "  ID_ARD_SENS_VOLT_ACTUATOR:       " << value << std::endl;
       if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR_CELL1, value))
-        std::cout << "  ID_ARD_SENS_VOLT_ACTUATOR_CELL1 value: " << value << std::endl;
+        std::cout << "  ID_ARD_SENS_VOLT_ACTUATOR_CELL1: " << value << std::endl;
       if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR_CELL2, value))
-        std::cout << "  ID_ARD_SENS_VOLT_ACTUATOR_CELL2 value: " << value << std::endl;
-      if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR_CELL2, value))
-        std::cout << "  ID_ARD_SENS_VOLT_ACTUATOR_CELL2 value: " << value << std::endl;
+        std::cout << "  ID_ARD_SENS_VOLT_ACTUATOR_CELL2: " << value << std::endl;
       if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS value:        " << value << std::endl;
+        std::cout << "  ID_ARD_SENS_VOLT_SENSORS:        " << value << std::endl;
       if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL1, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL1 value:  " << value << std::endl;
+        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL1:  " << value << std::endl;
       if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL2, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL2 value:  " << value << std::endl;
+        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL2:  " << value << std::endl;
       if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL3, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL3 value:  " << value << std::endl;
+        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL3:  " << value << std::endl;
       if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL4, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL4 value:  " << value << std::endl;
+        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL4:  " << value << std::endl;
       if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL5, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL5 value:  " << value << std::endl;
+        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL5:  " << value << std::endl;
       if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL6, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL6 value:  " << value << std::endl;
+        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL6:  " << value << std::endl;
       std::cout <<"  ---" <<std::endl;
     }
     std::cout << "model_car_drivers_test_bat::main: stopping bat_driver" << std::endl;
diff --git a/src/examples/model_car_egomotion_test.cpp b/src/examples/model_car_egomotion_test.cpp
index dafd7a87f988d3bf7c329a20707f6a809c7805c5..2b38c233852175c29f546e507bd6d322ccc20cc9 100644
--- a/src/examples/model_car_egomotion_test.cpp
+++ b/src/examples/model_car_egomotion_test.cpp
@@ -17,49 +17,57 @@ int main(int argc, char *argv[])
     events.push_back(egomotion_driver->get_new_data_event_id());
 
     std::cout << "model_car_drivers_test_egomotion::main: reading EGOMOTION values" << std::endl;
-    for(unsigned int i=0; i<10; i++)
+    //for(unsigned int i=0; i<1000; i++)
+    while(true)
     {
-      event_server->wait_all(events,1000);
-      int  lwheel_tach=0;
-      bool lwheel_dir=false;
-      if(egomotion_driver->get_left_wheel(lwheel_tach, lwheel_dir))
+      try
       {
-        std::cout << "  Left wheel tachometer:  " << lwheel_tach << std::endl;
-        std::cout << "  Left wheel direction:   " << lwheel_dir  << std::endl;
-      }
+        event_server->wait_all(events,1000);
+        int  lwheel_tach=0;
+        bool lwheel_dir=false;
+        if(egomotion_driver->get_left_wheel(lwheel_tach, lwheel_dir))
+        {
+          std::cout << "  Left wheel tachometer:  " << lwheel_tach << std::endl;
+          std::cout << "  Left wheel direction:   " << lwheel_dir  << std::endl;
+        }
 
-      int  rwheel_tach=0;
-      bool rwheel_dir=false;
-      if(egomotion_driver->get_right_wheel(rwheel_tach,rwheel_dir))
-      {
-        std::cout << "  Right wheel tachometer: " << rwheel_tach << std::endl;
-        std::cout << "  Right wheel direction:  " << rwheel_dir << std::endl;
-      }
+        int  rwheel_tach=0;
+        bool rwheel_dir=false;
+        if(egomotion_driver->get_right_wheel(rwheel_tach,rwheel_dir))
+        {
+          std::cout << "  Right wheel tachometer: " << rwheel_tach << std::endl;
+          std::cout << "  Right wheel direction:  " << rwheel_dir << std::endl;
+        }
 
-      float ax=0.0 ,ay=.0 ,az=0.0 ,gx=0.0 ,gy=0.0 ,gz=0.0 ,mx=0.0 ,my=0.0 ,mz=0.0;
-      if(egomotion_driver->get_imu_accel(ax,ay,az))
-      {
-        std::cout << "  Imu ax: " << ax << std::endl;
-        std::cout << "  Imu ay: " << ay << std::endl;
-        std::cout << "  Imu az: " << az << std::endl;
-      }
+        float ax=0.0 ,ay=.0 ,az=0.0 ,gx=0.0 ,gy=0.0 ,gz=0.0 ,mx=0.0 ,my=0.0 ,mz=0.0;
+        if(egomotion_driver->get_imu_accel(ax,ay,az))
+        {
+          std::cout << "  Imu ax: " << ax << std::endl;
+          std::cout << "  Imu ay: " << ay << std::endl;
+          std::cout << "  Imu az: " << az << std::endl;
+        }
 
-      if(egomotion_driver->get_imu_gyro(gx,gy,gz))
-      {
-        std::cout << "  Imu gx: " << gx << std::endl;
-        std::cout << "  Imu gy: " << gy << std::endl;
-        std::cout << "  Imu gz: " << gz << std::endl;
-      }
+        if(egomotion_driver->get_imu_gyro(gx,gy,gz))
+        {
+          std::cout << "  Imu gx: " << gx << std::endl;
+          std::cout << "  Imu gy: " << gy << std::endl;
+          std::cout << "  Imu gz: " << gz << std::endl;
+        }
+
+        if(egomotion_driver->get_imu_magn(mx,my,mz))
+        {
+          std::cout << "  Imu mx: " << mx << std::endl;
+          std::cout << "  Imu my: " << my << std::endl;
+          std::cout << "  Imu mz: " << mz << std::endl;
+        }
 
-      if(egomotion_driver->get_imu_magn(mx,my,mz))
+        std::cout <<"  ---" <<std::endl;
+        usleep(1e4);
+      }
+      catch(CEventTimeoutException &e)
       {
-        std::cout << "  Imu mx: " << mx << std::endl;
-        std::cout << "  Imu my: " << my << std::endl;
-        std::cout << "  Imu mz: " << mz << std::endl;
+        std::cout << e.what() << std::endl;
       }
-
-      std::cout <<"  ---" <<std::endl;
-      usleep(1e4);
     }
 
     std::cout << "model_car_drivers_test_egomotion::main: stopping egomotion_driver" << std::endl;
diff --git a/src/examples/model_car_ultrasounds_test.cpp b/src/examples/model_car_ultrasounds_test.cpp
index cfb9cf71806edd63f5f71e8497ad729caa6b2708..3f8fb29fef23ffc8916d6fdd18b1b0199aae0978 100644
--- a/src/examples/model_car_ultrasounds_test.cpp
+++ b/src/examples/model_car_ultrasounds_test.cpp
@@ -17,7 +17,8 @@ int main(int argc, char *argv[])
     events.push_back(uss_driver->get_new_data_event_id());
 
     std::cout << "model_car_drivers_test_uss::main: reading USS values" << std::endl;
-    for(unsigned int i=0; i<10; i++)
+    //for(unsigned int i=0; i<1000; i++)
+    while(true)
     {
       event_server->wait_all(events,1000);
       float us_value;
diff --git a/src/model_car_batteries.cpp b/src/model_car_batteries.cpp
index f32a37762c14492c8133bc121bb28f549eefd51c..8e90f574b8e57fee0d87ef0ab456f2c845a5a23f 100644
--- a/src/model_car_batteries.cpp
+++ b/src/model_car_batteries.cpp
@@ -19,9 +19,12 @@ CModelCarBatteries::CModelCarBatteries(std::string name) : CModelCarDriverBase(n
 void CModelCarBatteries::process_data_frame(uint8_t id,uint32_t timestamp, TDataUnion data_union)
 {
   //std::cout << "CModelCarBatteries::process_data_frame: id=" << unsigned(id) << std::endl;
-
-  const SENSOR_ID currentSensor = static_cast<SENSOR_ID>(id);
  
+  const SENSOR_ID currentSensor = static_cast<SENSOR_ID>(id);
+
+  //m_bat_values[currentSensor]=data_union.voltage;
+
+   
   auto it = m_bat_values.find(currentSensor);
   if(it==m_bat_values.end())
   {
@@ -32,7 +35,7 @@ void CModelCarBatteries::process_data_frame(uint8_t id,uint32_t timestamp, TData
     it->second = data_union.voltage;
     //m_bat_values[currentSensor] = data_union.us;
   }
-
+  
 }
 
 bool CModelCarBatteries::get_bat(SENSOR_ID id, float & value)
diff --git a/src/model_car_driver_base.cpp b/src/model_car_driver_base.cpp
index f3c49e9c14e3098bc2f82db0348648fb08c2efe6..931eec545d7c0ea6e5ad7376eb7260eaa345e642 100644
--- a/src/model_car_driver_base.cpp
+++ b/src/model_car_driver_base.cpp
@@ -1,5 +1,5 @@
 #include "model_car_driver_base.h"
-#include "eventexceptions.h"
+//#include "eventexceptions.h"
 
 struct HexCharStruct
 {
@@ -181,7 +181,8 @@ void *CModelCarDriverBase::data_thread(void *param)
     try
     {
       driver->port_mutex.enter();
-      if(driver->serial_port->get_num_data()==0)
+      num=driver->serial_port->get_num_data();
+      if(num==0)
       {
         driver->port_mutex.exit();
         driver->event_server->wait_all(events,1000);
@@ -212,10 +213,11 @@ void *CModelCarDriverBase::data_thread(void *param)
     catch(CEventTimeoutException &e)
     {
       //do nothing;
+      //std::cout << "CModelCarDriverBase::data_thread: " << e.what() << std::endl;
     }
     catch(CException &e)
     {
-      std::cout << e.what() << std::endl;
+      std::cout << "CModelCarDriverBase::data_thread: " << e.what() << std::endl;
     }
 
     if(driver->event_server->event_is_set(driver->finish_thread_event_id))
@@ -494,6 +496,7 @@ void CModelCarDriverBase::send_request(uint8_t id, uint8_t data_length, uint8_t
 
   this->port_mutex.enter();
   this->serial_port->write(stuffed_frame,stuffed_frame_size);
+  //cout_data(stuffed_frame,stuffed_frame_size,"stuffed_frame");
   this->port_mutex.exit();
   delete []stuffed_frame;
 }