Index: /trunk/BNS/bnseph.cpp
===================================================================
--- /trunk/BNS/bnseph.cpp	(revision 837)
+++ /trunk/BNS/bnseph.cpp	(revision 838)
@@ -35,12 +35,10 @@
 }
 
-// Start 
+// Connect the Socket
 ////////////////////////////////////////////////////////////////////////////
-void t_bnseph::run() {
+void t_bnseph::reconnect() {
 
-  emit(newMessage("bnseph::run Start"));
+  delete _socket;
 
-  // Connect the Socket
-  // ------------------
   QSettings settings;
   QString host = "localhost";
@@ -50,14 +48,21 @@
   _socket->connectToHost(host, port);
 
-  const int timeOut = 3*1000;  // 3 seconds
+  const int timeOut = 10*1000;  // 10 seconds
   if (!_socket->waitForConnected(timeOut)) {
-    emit(error("bnseph::run Connect Timeout"));
+    emit(newMessage("bnseph::run Connect Timeout"));
   }
-  else {
-    while (true) {
-      if (_socket->state() != QAbstractSocket::ConnectedState) {
-        emit(error("bnseph::not connected"));
-        break;
-      }
+}
+
+// Start 
+////////////////////////////////////////////////////////////////////////////
+void t_bnseph::run() {
+
+  emit(newMessage("bnseph::run Start"));
+
+  while (true) {
+    if (_socket == 0 || _socket->state() != QAbstractSocket::ConnectedState) {
+      reconnect();
+    }
+    if (_socket && _socket->state() == QAbstractSocket::ConnectedState) {
       if (_socket->canReadLine()) {
         readEph();
@@ -66,4 +71,7 @@
         _socket->waitForReadyRead(10);
       }
+    }
+    else {
+      msleep(10);
     }
   }
Index: /trunk/BNS/bnseph.h
===================================================================
--- /trunk/BNS/bnseph.h	(revision 837)
+++ /trunk/BNS/bnseph.h	(revision 838)
@@ -51,4 +51,5 @@
  
  private:
+  void reconnect();
   void readEph();
   QTcpSocket* _socket;
