diff --git a/src/examples/test_candump.cpp b/src/examples/test_candump.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..fb9771356d751196d9830707716fd7c5b192c1d8
--- /dev/null
+++ b/src/examples/test_candump.cpp
@@ -0,0 +1,60 @@
+#include "eventserver.h"
+#include "threadserver.h"
+#include "commexceptions.h"
+#include "can.h"
+#include <stdio.h>
+#include <unistd.h>
+#include <string>
+#include <iostream>
+#include <iomanip>
+
+#include <linux/can/raw.h>
+#include <linux/can.h>
+
+const std::string can_dev="slcan0";
+
+int main(int argc,char *argv[])
+{
+  CEventServer *event_server=CEventServer::instance();
+  std::list<std::string> events;
+  CCAN can_port("can_port");
+  CCAN can_port2("can_port2");
+  unsigned char data[8];
+  unsigned int can_id;
+  int i=0,len;
+  int event_id;
+  
+  events.push_back(can_port.get_new_frame_event_id());
+  events.push_back(can_port2.get_new_frame_event_id());
+  try{
+    can_port.open(can_dev);
+    can_port2.open(can_dev);
+    unsigned short int can_filter = (unsigned short int)(7 << 4);
+    can_port.add_id_filter(can_filter, 0x0f0, false);
+    can_filter = (unsigned short int)(1 << 4);
+    can_port2.add_id_filter(can_filter, 0x0f0, false);
+    while(1)
+    {
+      event_id = event_server->wait_first(events);
+      if (event_id == 0)
+      {
+        can_port.read_frame(&can_id,data,&len);
+        std::cout << "  " << can_dev << "  " << std::uppercase << std::hex <<(int)can_id << std::dec << "   [" <<(int)len << "]  ";
+        for(i=0;i<len;i++)
+          std::cout << std::uppercase << std::setw(2) << std::setfill('0') << std::hex << (int)data[i] << " ";
+        std::cout << std::dec << std::endl;
+
+      }
+      else if (event_id == 1)
+      {
+        can_port2.read_frame(&can_id,data,&len);
+        std::cout << "  " << can_dev << "  " << std::uppercase << std::hex <<(int)can_id << std::dec << "   [" <<(int)len << "]  ";
+        for(i=0;i<len;i++)
+          std::cout << std::uppercase << std::setw(2) << std::setfill('0') << std::hex << (int)data[i] << " ";
+        std::cout << std::dec << std::endl;
+      }
+    }
+  }catch(CCommException &e){
+    std::cout << e.what() << std::endl;
+  }
+}