Index: src/conf/configure.json
===================================================================
--- src/conf/configure.json	(revision ec704efc4868d9579af5e4b849fd025adf96c081)
+++ src/conf/configure.json	(revision 8fbfd3821ea899d6d0a80a14e9d83708a76072d8)
@@ -1,1 +1,1 @@
-{"firstLayout": 861, "mainHeight": 540, "ip": "10.1.53.240", "mainSplitterRight": 920, "mainSplitterLeft": 209, "mainWidth": 1135, "port": 9000}
+{"firstLayout": 909, "mainHeight": 934, "ip": "10.1.53.240", "mainSplitterRight": 1559, "mainSplitterLeft": 355, "mainWidth": 1920, "port": 9000}
Index: src/log/GPPD.log
===================================================================
--- src/log/GPPD.log	(revision ec704efc4868d9579af5e4b849fd025adf96c081)
+++ src/log/GPPD.log	(revision 8fbfd3821ea899d6d0a80a14e9d83708a76072d8)
@@ -16327,2 +16327,649 @@
 2017-06-25 23:03:24,092 - INFO - Received command: pause
 2017-06-25 23:03:29,445 - INFO - Received command: configure
+2017-06-26 02:48:37,590 - INFO - Status is waiting
+2017-06-26 02:48:37,602 - INFO - NEON connected
+2017-06-26 02:48:37,602 - INFO - Status change to unconfigured
+2017-06-26 02:48:37,603 - INFO - Creating heartbeat thread
+2017-06-26 02:48:37,603 - INFO - Starting heartbeat thread
+2017-06-26 02:48:37,604 - INFO - Start heartbeat successfully
+2017-06-26 02:48:37,605 - INFO - Creating Command Thread...
+2017-06-26 02:48:37,605 - INFO - Start Command Thread successfully
+2017-06-26 02:48:37,606 - INFO - Creating Canvas data Thread...
+2017-06-26 02:48:37,608 - INFO - Start Canvas Data Thread successfully
+2017-06-26 02:48:37,744 - INFO - Received command: configure
+2017-06-26 02:49:06,876 - INFO - Status is waiting
+2017-06-26 02:49:06,887 - INFO - NEON connected
+2017-06-26 02:49:06,887 - INFO - Status change to unconfigured
+2017-06-26 02:49:06,888 - INFO - Creating heartbeat thread
+2017-06-26 02:49:06,888 - INFO - Starting heartbeat thread
+2017-06-26 02:49:06,889 - INFO - Start heartbeat successfully
+2017-06-26 02:49:06,889 - INFO - Creating Command Thread...
+2017-06-26 02:49:06,890 - INFO - Start Command Thread successfully
+2017-06-26 02:49:06,891 - INFO - Creating Canvas data Thread...
+2017-06-26 02:49:06,893 - INFO - Start Canvas Data Thread successfully
+2017-06-26 02:49:07,027 - INFO - Received command: configure
+2017-06-26 02:50:01,044 - INFO - Status is waiting
+2017-06-26 02:50:01,054 - INFO - NEON connected
+2017-06-26 02:50:01,055 - INFO - Status change to unconfigured
+2017-06-26 02:50:01,055 - INFO - Creating heartbeat thread
+2017-06-26 02:50:01,056 - INFO - Starting heartbeat thread
+2017-06-26 02:50:01,056 - INFO - Start heartbeat successfully
+2017-06-26 02:50:01,057 - INFO - Creating Command Thread...
+2017-06-26 02:50:01,058 - INFO - Start Command Thread successfully
+2017-06-26 02:50:01,059 - INFO - Creating Canvas data Thread...
+2017-06-26 02:50:01,060 - INFO - 1111 Start Canvas Data Thread successfully
+2017-06-26 02:50:01,060 - INFO - 2222222Start Canvas Data Thread successfully
+2017-06-26 02:50:01,197 - INFO - Received command: configure
+2017-06-26 02:52:03,616 - INFO - Status is waiting
+2017-06-26 02:52:03,626 - INFO - NEON connected
+2017-06-26 02:52:03,627 - INFO - Status change to unconfigured
+2017-06-26 02:52:03,628 - INFO - Creating heartbeat thread
+2017-06-26 02:52:03,628 - INFO - Starting heartbeat thread
+2017-06-26 02:52:03,630 - INFO - Start heartbeat successfully
+2017-06-26 02:52:03,630 - INFO - Creating Command Thread...
+2017-06-26 02:52:03,631 - INFO - Start Command Thread successfully
+2017-06-26 02:52:03,633 - INFO - Creating Canvas data Thread...
+2017-06-26 02:52:03,634 - INFO - 1111 Start Canvas Data Thread successfully
+2017-06-26 02:52:03,634 - INFO - 2222222Start Canvas Data Thread successfully
+2017-06-26 02:52:03,771 - INFO - Received command: configure
+2017-06-26 02:52:09,030 - INFO - NEON not availabel
+2017-06-26 02:52:10,300 - INFO - NEON not availabel
+2017-06-26 03:03:57,597 - INFO - Status is waiting
+2017-06-26 03:03:57,608 - INFO - NEON connected
+2017-06-26 03:03:57,608 - INFO - Status change to unconfigured
+2017-06-26 03:03:57,609 - INFO - Creating heartbeat thread
+2017-06-26 03:03:57,609 - INFO - Starting heartbeat thread
+2017-06-26 03:03:57,610 - INFO - Start heartbeat successfully
+2017-06-26 03:03:57,611 - INFO - Creating Command Thread...
+2017-06-26 03:03:57,611 - INFO - Start Command Thread successfully
+2017-06-26 03:03:57,613 - INFO - Creating Canvas data Thread...
+2017-06-26 03:03:57,613 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:03:57,749 - INFO - Received command: configure
+2017-06-26 03:04:34,510 - INFO - Status is waiting
+2017-06-26 03:04:34,521 - INFO - NEON connected
+2017-06-26 03:04:34,522 - INFO - Status change to unconfigured
+2017-06-26 03:04:34,522 - INFO - Creating heartbeat thread
+2017-06-26 03:04:34,522 - INFO - Starting heartbeat thread
+2017-06-26 03:04:34,523 - INFO - Start heartbeat successfully
+2017-06-26 03:04:34,524 - INFO - Creating Command Thread...
+2017-06-26 03:04:34,524 - INFO - Start Command Thread successfully
+2017-06-26 03:04:34,525 - INFO - Creating Canvas data Thread...
+2017-06-26 03:04:34,526 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:04:34,662 - INFO - Received command: configure
+2017-06-26 03:06:18,851 - INFO - Status is waiting
+2017-06-26 03:06:18,862 - INFO - NEON connected
+2017-06-26 03:06:18,862 - INFO - Status change to unconfigured
+2017-06-26 03:06:18,862 - INFO - Creating heartbeat thread
+2017-06-26 03:06:18,863 - INFO - Starting heartbeat thread
+2017-06-26 03:06:18,863 - INFO - Start heartbeat successfully
+2017-06-26 03:06:18,863 - INFO - Creating Command Thread...
+2017-06-26 03:06:18,864 - INFO - Start Command Thread successfully
+2017-06-26 03:06:18,866 - INFO - Creating Canvas data Thread...
+2017-06-26 03:06:18,867 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:06:18,995 - INFO - Received command: configure
+2017-06-26 03:07:22,403 - INFO - Status is waiting
+2017-06-26 03:07:22,413 - INFO - NEON connected
+2017-06-26 03:07:22,414 - INFO - Status change to unconfigured
+2017-06-26 03:07:22,414 - INFO - Creating heartbeat thread
+2017-06-26 03:07:22,415 - INFO - Starting heartbeat thread
+2017-06-26 03:07:22,416 - INFO - Start heartbeat successfully
+2017-06-26 03:07:22,416 - INFO - Creating Command Thread...
+2017-06-26 03:07:22,417 - INFO - Start Command Thread successfully
+2017-06-26 03:07:22,417 - INFO - Creating Canvas data Thread...
+2017-06-26 03:07:22,419 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:07:22,556 - INFO - Received command: configure
+2017-06-26 03:09:53,370 - INFO - Status is waiting
+2017-06-26 03:09:53,380 - INFO - NEON connected
+2017-06-26 03:09:53,381 - INFO - Status change to unconfigured
+2017-06-26 03:09:53,381 - INFO - Creating heartbeat thread
+2017-06-26 03:09:53,381 - INFO - Starting heartbeat thread
+2017-06-26 03:09:53,382 - INFO - Start heartbeat successfully
+2017-06-26 03:09:53,383 - INFO - Creating Command Thread...
+2017-06-26 03:09:53,384 - INFO - Start Command Thread successfully
+2017-06-26 03:09:53,385 - INFO - Creating Canvas data Thread...
+2017-06-26 03:09:53,386 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:09:53,521 - INFO - Received command: configure
+2017-06-26 03:10:21,579 - INFO - Status is waiting
+2017-06-26 03:10:21,590 - INFO - NEON connected
+2017-06-26 03:10:21,591 - INFO - Status change to unconfigured
+2017-06-26 03:10:21,591 - INFO - Creating heartbeat thread
+2017-06-26 03:10:21,592 - INFO - Starting heartbeat thread
+2017-06-26 03:10:21,592 - INFO - Start heartbeat successfully
+2017-06-26 03:10:21,593 - INFO - Creating Command Thread...
+2017-06-26 03:10:21,593 - INFO - Start Command Thread successfully
+2017-06-26 03:10:21,595 - INFO - Creating Canvas data Thread...
+2017-06-26 03:10:21,595 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:10:21,730 - INFO - Received command: configure
+2017-06-26 03:10:41,911 - INFO - Status is waiting
+2017-06-26 03:10:41,922 - INFO - NEON connected
+2017-06-26 03:10:41,923 - INFO - Status change to unconfigured
+2017-06-26 03:10:41,923 - INFO - Creating heartbeat thread
+2017-06-26 03:10:41,924 - INFO - Starting heartbeat thread
+2017-06-26 03:10:41,925 - INFO - Start heartbeat successfully
+2017-06-26 03:10:41,925 - INFO - Creating Command Thread...
+2017-06-26 03:10:41,927 - INFO - Start Command Thread successfully
+2017-06-26 03:10:41,928 - INFO - Creating Canvas data Thread...
+2017-06-26 03:10:41,930 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:10:42,063 - INFO - Received command: configure
+2017-06-26 03:11:28,593 - INFO - Status is waiting
+2017-06-26 03:11:28,604 - INFO - NEON connected
+2017-06-26 03:11:28,604 - INFO - Status change to unconfigured
+2017-06-26 03:11:28,605 - INFO - Creating heartbeat thread
+2017-06-26 03:11:28,605 - INFO - Starting heartbeat thread
+2017-06-26 03:11:28,606 - INFO - Start heartbeat successfully
+2017-06-26 03:11:28,607 - INFO - Creating Command Thread...
+2017-06-26 03:11:28,607 - INFO - Start Command Thread successfully
+2017-06-26 03:11:28,608 - INFO - Creating Canvas data Thread...
+2017-06-26 03:11:28,610 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:11:28,745 - INFO - Received command: configure
+2017-06-26 03:13:52,635 - INFO - Status is waiting
+2017-06-26 03:13:52,645 - INFO - NEON connected
+2017-06-26 03:13:52,646 - INFO - Status change to unconfigured
+2017-06-26 03:13:52,646 - INFO - Creating heartbeat thread
+2017-06-26 03:13:52,647 - INFO - Starting heartbeat thread
+2017-06-26 03:13:52,648 - INFO - Start heartbeat successfully
+2017-06-26 03:13:52,649 - INFO - Creating Command Thread...
+2017-06-26 03:13:52,650 - INFO - Start Command Thread successfully
+2017-06-26 03:13:52,650 - INFO - Creating Canvas data Thread...
+2017-06-26 03:13:52,652 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:13:52,789 - INFO - Received command: configure
+2017-06-26 03:16:15,547 - INFO - Status is waiting
+2017-06-26 03:16:15,558 - INFO - NEON connected
+2017-06-26 03:16:15,559 - INFO - Status change to unconfigured
+2017-06-26 03:16:15,559 - INFO - Creating heartbeat thread
+2017-06-26 03:16:15,560 - INFO - Starting heartbeat thread
+2017-06-26 03:16:15,560 - INFO - Start heartbeat successfully
+2017-06-26 03:16:15,561 - INFO - Creating Command Thread...
+2017-06-26 03:16:15,562 - INFO - Start Command Thread successfully
+2017-06-26 03:16:15,563 - INFO - Creating Canvas data Thread...
+2017-06-26 03:16:15,564 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:16:15,699 - INFO - Received command: configure
+2017-06-26 03:16:54,986 - INFO - Status is waiting
+2017-06-26 03:16:54,996 - INFO - NEON connected
+2017-06-26 03:16:54,997 - INFO - Status change to unconfigured
+2017-06-26 03:16:54,997 - INFO - Creating heartbeat thread
+2017-06-26 03:16:54,998 - INFO - Starting heartbeat thread
+2017-06-26 03:16:55,000 - INFO - Start heartbeat successfully
+2017-06-26 03:16:55,000 - INFO - Creating Command Thread...
+2017-06-26 03:16:55,001 - INFO - Start Command Thread successfully
+2017-06-26 03:16:55,002 - INFO - Creating Canvas data Thread...
+2017-06-26 03:16:55,003 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:16:55,138 - INFO - Received command: configure
+2017-06-26 03:17:20,506 - INFO - Status is waiting
+2017-06-26 03:17:20,516 - INFO - NEON connected
+2017-06-26 03:17:20,517 - INFO - Status change to unconfigured
+2017-06-26 03:17:20,517 - INFO - Creating heartbeat thread
+2017-06-26 03:17:20,517 - INFO - Starting heartbeat thread
+2017-06-26 03:17:20,518 - INFO - Start heartbeat successfully
+2017-06-26 03:17:20,519 - INFO - Creating Command Thread...
+2017-06-26 03:17:20,519 - INFO - Start Command Thread successfully
+2017-06-26 03:17:20,521 - INFO - Creating Canvas data Thread...
+2017-06-26 03:17:20,522 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:17:31,463 - INFO - Status is waiting
+2017-06-26 03:17:31,473 - INFO - NEON connected
+2017-06-26 03:17:31,474 - INFO - Status change to unconfigured
+2017-06-26 03:17:31,474 - INFO - Creating heartbeat thread
+2017-06-26 03:17:31,474 - INFO - Starting heartbeat thread
+2017-06-26 03:17:31,475 - INFO - Start heartbeat successfully
+2017-06-26 03:17:31,475 - INFO - Creating Command Thread...
+2017-06-26 03:17:31,476 - INFO - Start Command Thread successfully
+2017-06-26 03:17:31,477 - INFO - Creating Canvas data Thread...
+2017-06-26 03:17:31,478 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:17:31,611 - INFO - Received command: configure
+2017-06-26 03:17:55,715 - INFO - Status is waiting
+2017-06-26 03:17:55,726 - INFO - NEON connected
+2017-06-26 03:17:55,726 - INFO - Status change to unconfigured
+2017-06-26 03:17:55,726 - INFO - Creating heartbeat thread
+2017-06-26 03:17:55,727 - INFO - Starting heartbeat thread
+2017-06-26 03:17:55,728 - INFO - Start heartbeat successfully
+2017-06-26 03:17:55,728 - INFO - Creating Command Thread...
+2017-06-26 03:17:55,729 - INFO - Start Command Thread successfully
+2017-06-26 03:17:55,729 - INFO - Creating Canvas data Thread...
+2017-06-26 03:17:55,731 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:17:55,865 - INFO - Received command: configure
+2017-06-26 03:19:31,514 - INFO - Status is waiting
+2017-06-26 03:19:31,524 - INFO - NEON connected
+2017-06-26 03:19:31,525 - INFO - Status change to unconfigured
+2017-06-26 03:19:31,525 - INFO - Creating heartbeat thread
+2017-06-26 03:19:31,526 - INFO - Starting heartbeat thread
+2017-06-26 03:19:31,527 - INFO - Start heartbeat successfully
+2017-06-26 03:19:31,527 - INFO - Creating Command Thread...
+2017-06-26 03:19:31,528 - INFO - Start Command Thread successfully
+2017-06-26 03:19:31,528 - INFO - Creating Canvas data Thread...
+2017-06-26 03:19:31,530 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:19:31,664 - INFO - Received command: configure
+2017-06-26 03:20:11,059 - INFO - Status is waiting
+2017-06-26 03:20:11,068 - INFO - NEON connected
+2017-06-26 03:20:11,068 - INFO - Status change to unconfigured
+2017-06-26 03:20:11,069 - INFO - Creating heartbeat thread
+2017-06-26 03:20:11,069 - INFO - Starting heartbeat thread
+2017-06-26 03:20:11,070 - INFO - Start heartbeat successfully
+2017-06-26 03:20:11,071 - INFO - Creating Command Thread...
+2017-06-26 03:20:11,071 - INFO - Start Command Thread successfully
+2017-06-26 03:20:11,072 - INFO - Creating Canvas data Thread...
+2017-06-26 03:20:11,073 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:20:11,205 - INFO - Received command: configure
+2017-06-26 03:20:49,209 - INFO - Status is waiting
+2017-06-26 03:20:49,220 - INFO - NEON connected
+2017-06-26 03:20:49,221 - INFO - Status change to unconfigured
+2017-06-26 03:20:49,221 - INFO - Creating heartbeat thread
+2017-06-26 03:20:49,222 - INFO - Starting heartbeat thread
+2017-06-26 03:20:49,223 - INFO - Start heartbeat successfully
+2017-06-26 03:20:49,224 - INFO - Creating Command Thread...
+2017-06-26 03:20:49,225 - INFO - Start Command Thread successfully
+2017-06-26 03:20:49,225 - INFO - Creating Canvas data Thread...
+2017-06-26 03:20:49,227 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:20:49,363 - INFO - Received command: configure
+2017-06-26 03:21:09,252 - INFO - Received command: abort
+2017-06-26 03:21:14,257 - INFO - Received command: stop
+2017-06-26 03:21:33,525 - INFO - Status is waiting
+2017-06-26 03:21:33,536 - INFO - NEON connected
+2017-06-26 03:21:33,537 - INFO - Status change to unconfigured
+2017-06-26 03:21:33,537 - INFO - Creating heartbeat thread
+2017-06-26 03:21:33,538 - INFO - Starting heartbeat thread
+2017-06-26 03:21:33,539 - INFO - Start heartbeat successfully
+2017-06-26 03:21:33,539 - INFO - Creating Command Thread...
+2017-06-26 03:21:33,541 - INFO - Start Command Thread successfully
+2017-06-26 03:21:33,541 - INFO - Creating Canvas data Thread...
+2017-06-26 03:21:33,543 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:21:33,678 - INFO - Received command: configure
+2017-06-26 03:21:38,548 - INFO - Received command: abort
+2017-06-26 03:21:43,553 - INFO - Received command: start
+2017-06-26 03:21:48,559 - INFO - Received command: abort
+2017-06-26 03:21:53,564 - INFO - Received command: start
+2017-06-26 03:22:42,312 - INFO - Status is waiting
+2017-06-26 03:22:42,323 - INFO - NEON connected
+2017-06-26 03:22:42,323 - INFO - Status change to unconfigured
+2017-06-26 03:22:42,324 - INFO - Creating heartbeat thread
+2017-06-26 03:22:42,324 - INFO - Starting heartbeat thread
+2017-06-26 03:22:42,325 - INFO - Start heartbeat successfully
+2017-06-26 03:22:42,325 - INFO - Creating Command Thread...
+2017-06-26 03:22:42,326 - INFO - Start Command Thread successfully
+2017-06-26 03:22:42,326 - INFO - Creating Canvas data Thread...
+2017-06-26 03:22:42,328 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:22:42,470 - INFO - Received command: start
+2017-06-26 03:22:47,335 - INFO - Received command: pause
+2017-06-26 03:23:38,104 - INFO - Status is waiting
+2017-06-26 03:23:38,114 - INFO - NEON connected
+2017-06-26 03:23:38,114 - INFO - Status change to unconfigured
+2017-06-26 03:23:38,115 - INFO - Creating heartbeat thread
+2017-06-26 03:23:38,115 - INFO - Starting heartbeat thread
+2017-06-26 03:23:38,116 - INFO - Start heartbeat successfully
+2017-06-26 03:23:38,117 - INFO - Creating Command Thread...
+2017-06-26 03:23:38,117 - INFO - Start Command Thread successfully
+2017-06-26 03:23:38,118 - INFO - Creating Canvas data Thread...
+2017-06-26 03:23:38,119 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:23:38,255 - INFO - Received command: configure
+2017-06-26 03:23:43,123 - INFO - Received command: stop
+2017-06-26 03:24:13,542 - INFO - Status is waiting
+2017-06-26 03:24:13,553 - INFO - NEON connected
+2017-06-26 03:24:13,553 - INFO - Status change to unconfigured
+2017-06-26 03:24:13,554 - INFO - Creating heartbeat thread
+2017-06-26 03:24:13,554 - INFO - Starting heartbeat thread
+2017-06-26 03:24:13,555 - INFO - Start heartbeat successfully
+2017-06-26 03:24:13,555 - INFO - Creating Command Thread...
+2017-06-26 03:24:13,556 - INFO - Start Command Thread successfully
+2017-06-26 03:24:13,556 - INFO - Creating Canvas data Thread...
+2017-06-26 03:24:13,558 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:24:13,694 - INFO - Received command: stop
+2017-06-26 03:24:20,853 - INFO - Status is waiting
+2017-06-26 03:24:20,865 - INFO - NEON connected
+2017-06-26 03:24:20,866 - INFO - Status change to unconfigured
+2017-06-26 03:24:20,866 - INFO - Creating heartbeat thread
+2017-06-26 03:24:20,867 - INFO - Starting heartbeat thread
+2017-06-26 03:24:20,868 - INFO - Start heartbeat successfully
+2017-06-26 03:24:20,869 - INFO - Creating Command Thread...
+2017-06-26 03:24:20,869 - INFO - Start Command Thread successfully
+2017-06-26 03:24:20,870 - INFO - Creating Canvas data Thread...
+2017-06-26 03:24:20,872 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:24:21,008 - INFO - Received command: abort
+2017-06-26 03:25:34,944 - INFO - Status is waiting
+2017-06-26 03:25:34,957 - INFO - NEON connected
+2017-06-26 03:25:34,957 - INFO - Status change to unconfigured
+2017-06-26 03:25:34,958 - INFO - Creating heartbeat thread
+2017-06-26 03:25:34,958 - INFO - Starting heartbeat thread
+2017-06-26 03:25:34,959 - INFO - Start heartbeat successfully
+2017-06-26 03:25:34,960 - INFO - Creating Command Thread...
+2017-06-26 03:25:34,960 - INFO - Start Command Thread successfully
+2017-06-26 03:25:34,961 - INFO - Creating Canvas data Thread...
+2017-06-26 03:25:34,962 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:25:35,098 - INFO - Received command: pause
+2017-06-26 03:25:39,966 - INFO - Received command: abort
+2017-06-26 03:26:15,601 - INFO - Status is waiting
+2017-06-26 03:26:15,611 - INFO - NEON connected
+2017-06-26 03:26:15,611 - INFO - Status change to unconfigured
+2017-06-26 03:26:15,612 - INFO - Creating heartbeat thread
+2017-06-26 03:26:15,612 - INFO - Starting heartbeat thread
+2017-06-26 03:26:15,613 - INFO - Start heartbeat successfully
+2017-06-26 03:26:15,613 - INFO - Creating Command Thread...
+2017-06-26 03:26:15,614 - INFO - Start Command Thread successfully
+2017-06-26 03:26:15,614 - INFO - Creating Canvas data Thread...
+2017-06-26 03:26:15,616 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:26:15,750 - INFO - Received command: stop
+2017-06-26 03:26:20,621 - INFO - Received command: pause
+2017-06-26 03:26:30,632 - INFO - Received command: start
+2017-06-26 03:27:54,796 - INFO - Status is waiting
+2017-06-26 03:27:54,806 - INFO - NEON connected
+2017-06-26 03:27:54,807 - INFO - Status change to unconfigured
+2017-06-26 03:27:54,807 - INFO - Creating heartbeat thread
+2017-06-26 03:27:54,808 - INFO - Starting heartbeat thread
+2017-06-26 03:27:54,808 - INFO - Start heartbeat successfully
+2017-06-26 03:27:54,809 - INFO - Creating Command Thread...
+2017-06-26 03:27:54,809 - INFO - Start Command Thread successfully
+2017-06-26 03:27:54,810 - INFO - Creating Canvas data Thread...
+2017-06-26 03:27:54,812 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:27:54,951 - INFO - Received command: abort
+2017-06-26 03:27:56,128 - INFO - NEON not availabel
+2017-06-26 03:27:59,816 - INFO - Received command: stop
+2017-06-26 03:28:01,484 - INFO - NEON not availabel
+2017-06-26 03:28:03,766 - INFO - NEON not availabel
+2017-06-26 03:28:04,822 - INFO - Received command: abort
+2017-06-26 03:28:06,216 - INFO - NEON not availabel
+2017-06-26 03:28:09,827 - INFO - Received command: stop
+2017-06-26 03:34:30,454 - INFO - Status is waiting
+2017-06-26 03:34:30,466 - INFO - NEON connected
+2017-06-26 03:34:30,467 - INFO - Status change to unconfigured
+2017-06-26 03:34:30,467 - INFO - Creating heartbeat thread
+2017-06-26 03:34:30,468 - INFO - Starting heartbeat thread
+2017-06-26 03:34:30,469 - INFO - Start heartbeat successfully
+2017-06-26 03:34:30,469 - INFO - Creating Command Thread...
+2017-06-26 03:34:30,470 - INFO - Start Command Thread successfully
+2017-06-26 03:34:30,471 - INFO - Creating Canvas data Thread...
+2017-06-26 03:34:30,472 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:34:30,611 - INFO - Received command: stop
+2017-06-26 03:34:35,479 - INFO - Received command: start
+2017-06-26 03:34:36,508 - INFO - NEON not availabel
+2017-06-26 03:36:54,054 - INFO - Status is waiting
+2017-06-26 03:36:54,065 - INFO - NEON connected
+2017-06-26 03:36:54,066 - INFO - Status change to unconfigured
+2017-06-26 03:36:54,066 - INFO - Creating heartbeat thread
+2017-06-26 03:36:54,067 - INFO - Starting heartbeat thread
+2017-06-26 03:36:54,068 - INFO - Start heartbeat successfully
+2017-06-26 03:36:54,068 - INFO - Creating Command Thread...
+2017-06-26 03:36:54,069 - INFO - Start Command Thread successfully
+2017-06-26 03:36:54,070 - INFO - Creating Canvas data Thread...
+2017-06-26 03:36:54,071 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:37:19,412 - INFO - Status is waiting
+2017-06-26 03:37:19,427 - INFO - NEON connected
+2017-06-26 03:37:19,427 - INFO - Status change to unconfigured
+2017-06-26 03:37:19,428 - INFO - Creating heartbeat thread
+2017-06-26 03:37:19,428 - INFO - Starting heartbeat thread
+2017-06-26 03:37:19,429 - INFO - Start heartbeat successfully
+2017-06-26 03:37:19,430 - INFO - Creating Command Thread...
+2017-06-26 03:37:19,431 - INFO - Start Command Thread successfully
+2017-06-26 03:37:19,431 - INFO - Creating Canvas data Thread...
+2017-06-26 03:37:19,433 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:37:41,969 - INFO - Status is waiting
+2017-06-26 03:37:41,979 - INFO - NEON connected
+2017-06-26 03:37:41,980 - INFO - Status change to unconfigured
+2017-06-26 03:37:41,981 - INFO - Creating heartbeat thread
+2017-06-26 03:37:41,981 - INFO - Starting heartbeat thread
+2017-06-26 03:37:41,982 - INFO - Start heartbeat successfully
+2017-06-26 03:37:41,982 - INFO - Creating Command Thread...
+2017-06-26 03:37:41,983 - INFO - Start Command Thread successfully
+2017-06-26 03:37:41,983 - INFO - Creating Canvas data Thread...
+2017-06-26 03:37:41,985 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:37:42,123 - INFO - Received command: stop
+2017-06-26 03:37:46,990 - INFO - Received command: configure
+2017-06-26 03:37:57,326 - INFO - Received command: pause
+2017-06-26 03:38:05,170 - INFO - Received command: configure
+2017-06-26 03:38:19,497 - INFO - Received command: stop
+2017-06-26 03:38:20,178 - INFO - Received command: configure
+2017-06-26 03:38:34,261 - INFO - Received command: abort
+2017-06-26 03:38:35,192 - INFO - Received command: configure
+2017-06-26 03:38:35,745 - INFO - Received command: abort
+2017-06-26 03:38:56,986 - INFO - Status is waiting
+2017-06-26 03:38:56,997 - INFO - NEON connected
+2017-06-26 03:38:56,997 - INFO - Status change to unconfigured
+2017-06-26 03:38:56,998 - INFO - Creating heartbeat thread
+2017-06-26 03:38:56,998 - INFO - Starting heartbeat thread
+2017-06-26 03:38:56,999 - INFO - Start heartbeat successfully
+2017-06-26 03:38:56,999 - INFO - Creating Command Thread...
+2017-06-26 03:38:57,001 - INFO - Start Command Thread successfully
+2017-06-26 03:38:57,001 - INFO - Creating Canvas data Thread...
+2017-06-26 03:38:57,003 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:38:57,139 - INFO - Received command: stop
+2017-06-26 03:39:07,948 - INFO - Received command: pause
+2017-06-26 03:39:17,812 - INFO - Received command: start
+2017-06-26 03:40:32,496 - INFO - Status is waiting
+2017-06-26 03:40:32,509 - INFO - NEON connected
+2017-06-26 03:40:32,510 - INFO - Status change to unconfigured
+2017-06-26 03:40:32,510 - INFO - Creating heartbeat thread
+2017-06-26 03:40:32,511 - INFO - Starting heartbeat thread
+2017-06-26 03:40:32,512 - INFO - Start heartbeat successfully
+2017-06-26 03:40:32,512 - INFO - Creating Command Thread...
+2017-06-26 03:40:32,513 - INFO - Start Command Thread successfully
+2017-06-26 03:40:32,513 - INFO - Creating Canvas data Thread...
+2017-06-26 03:40:32,514 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:40:32,651 - INFO - Received command: stop
+2017-06-26 03:41:24,987 - INFO - Status is waiting
+2017-06-26 03:41:24,997 - INFO - NEON connected
+2017-06-26 03:41:24,998 - INFO - Status change to unconfigured
+2017-06-26 03:41:24,998 - INFO - Creating heartbeat thread
+2017-06-26 03:41:24,999 - INFO - Starting heartbeat thread
+2017-06-26 03:41:25,000 - INFO - Start heartbeat successfully
+2017-06-26 03:41:25,001 - INFO - Creating Command Thread...
+2017-06-26 03:41:25,002 - INFO - Start Command Thread successfully
+2017-06-26 03:41:25,003 - INFO - Creating Canvas data Thread...
+2017-06-26 03:41:25,004 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:41:25,142 - INFO - Received command: stop
+2017-06-26 03:42:03,469 - INFO - Status is waiting
+2017-06-26 03:42:03,479 - INFO - NEON connected
+2017-06-26 03:42:03,480 - INFO - Status change to unconfigured
+2017-06-26 03:42:03,481 - INFO - Creating heartbeat thread
+2017-06-26 03:42:03,481 - INFO - Starting heartbeat thread
+2017-06-26 03:42:03,482 - INFO - Start heartbeat successfully
+2017-06-26 03:42:03,482 - INFO - Creating Command Thread...
+2017-06-26 03:42:03,483 - INFO - Start Command Thread successfully
+2017-06-26 03:42:03,483 - INFO - Creating Canvas data Thread...
+2017-06-26 03:42:03,484 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:42:03,623 - INFO - Received command: stop
+2017-06-26 03:42:58,862 - INFO - Status is waiting
+2017-06-26 03:42:58,873 - INFO - NEON connected
+2017-06-26 03:42:58,874 - INFO - Status change to unconfigured
+2017-06-26 03:42:58,874 - INFO - Creating heartbeat thread
+2017-06-26 03:42:58,875 - INFO - Starting heartbeat thread
+2017-06-26 03:42:58,876 - INFO - Start heartbeat successfully
+2017-06-26 03:42:58,876 - INFO - Creating Command Thread...
+2017-06-26 03:42:58,878 - INFO - Start Command Thread successfully
+2017-06-26 03:42:58,878 - INFO - Creating Canvas data Thread...
+2017-06-26 03:42:58,879 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:43:41,104 - INFO - Received command: stop
+2017-06-26 03:44:38,340 - INFO - Status is waiting
+2017-06-26 03:44:38,349 - INFO - NEON connected
+2017-06-26 03:44:38,350 - INFO - Status change to unconfigured
+2017-06-26 03:44:38,351 - INFO - Creating heartbeat thread
+2017-06-26 03:44:38,351 - INFO - Starting heartbeat thread
+2017-06-26 03:44:38,352 - INFO - Start heartbeat successfully
+2017-06-26 03:44:38,352 - INFO - Creating Command Thread...
+2017-06-26 03:44:38,353 - INFO - Start Command Thread successfully
+2017-06-26 03:44:38,353 - INFO - Creating Canvas data Thread...
+2017-06-26 03:44:38,354 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:44:38,491 - INFO - Received command: stop
+2017-06-26 03:53:09,675 - INFO - Status is waiting
+2017-06-26 03:53:09,687 - INFO - NEON connected
+2017-06-26 03:53:09,688 - INFO - Status change to unconfigured
+2017-06-26 03:53:09,688 - INFO - Creating heartbeat thread
+2017-06-26 03:53:09,689 - INFO - Starting heartbeat thread
+2017-06-26 03:53:09,690 - INFO - Start heartbeat successfully
+2017-06-26 03:53:09,690 - INFO - Creating Command Thread...
+2017-06-26 03:53:09,692 - INFO - Start Command Thread successfully
+2017-06-26 03:53:09,692 - INFO - Creating Canvas data Thread...
+2017-06-26 03:53:09,693 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:53:09,839 - INFO - Received command: stop
+2017-06-26 03:53:37,776 - INFO - Status is waiting
+2017-06-26 03:53:37,786 - INFO - NEON connected
+2017-06-26 03:53:37,787 - INFO - Status change to unconfigured
+2017-06-26 03:53:37,787 - INFO - Creating heartbeat thread
+2017-06-26 03:53:37,788 - INFO - Starting heartbeat thread
+2017-06-26 03:53:37,789 - INFO - Start heartbeat successfully
+2017-06-26 03:53:37,789 - INFO - Creating Command Thread...
+2017-06-26 03:53:37,790 - INFO - Start Command Thread successfully
+2017-06-26 03:53:37,791 - INFO - Creating Canvas data Thread...
+2017-06-26 03:53:37,792 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:53:37,930 - INFO - Received command: stop
+2017-06-26 03:54:17,839 - INFO - Status is waiting
+2017-06-26 03:54:17,850 - INFO - NEON connected
+2017-06-26 03:54:17,850 - INFO - Status change to unconfigured
+2017-06-26 03:54:17,851 - INFO - Creating heartbeat thread
+2017-06-26 03:54:17,851 - INFO - Starting heartbeat thread
+2017-06-26 03:54:17,852 - INFO - Start heartbeat successfully
+2017-06-26 03:54:17,853 - INFO - Creating Command Thread...
+2017-06-26 03:54:17,854 - INFO - Start Command Thread successfully
+2017-06-26 03:54:17,854 - INFO - Creating Canvas data Thread...
+2017-06-26 03:54:17,855 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:54:18,007 - INFO - Received command: stop
+2017-06-26 03:54:44,818 - INFO - Status is waiting
+2017-06-26 03:54:44,826 - INFO - NEON connected
+2017-06-26 03:54:44,827 - INFO - Status change to unconfigured
+2017-06-26 03:54:44,827 - INFO - Creating heartbeat thread
+2017-06-26 03:54:44,828 - INFO - Starting heartbeat thread
+2017-06-26 03:54:44,829 - INFO - Start heartbeat successfully
+2017-06-26 03:54:44,829 - INFO - Creating Command Thread...
+2017-06-26 03:54:44,830 - INFO - Start Command Thread successfully
+2017-06-26 03:54:44,830 - INFO - Creating Canvas data Thread...
+2017-06-26 03:54:44,832 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:54:44,970 - INFO - Received command: stop
+2017-06-26 03:55:30,125 - INFO - Status is waiting
+2017-06-26 03:55:30,136 - INFO - NEON connected
+2017-06-26 03:55:30,137 - INFO - Status change to unconfigured
+2017-06-26 03:55:30,138 - INFO - Creating heartbeat thread
+2017-06-26 03:55:30,138 - INFO - Starting heartbeat thread
+2017-06-26 03:55:30,139 - INFO - Start heartbeat successfully
+2017-06-26 03:55:30,140 - INFO - Creating Command Thread...
+2017-06-26 03:55:30,140 - INFO - Start Command Thread successfully
+2017-06-26 03:55:30,141 - INFO - Creating Canvas data Thread...
+2017-06-26 03:55:30,141 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:55:30,279 - INFO - Received command: stop
+2017-06-26 03:56:48,638 - INFO - Status is waiting
+2017-06-26 03:56:48,648 - INFO - NEON connected
+2017-06-26 03:56:48,649 - INFO - Status change to unconfigured
+2017-06-26 03:56:48,649 - INFO - Creating heartbeat thread
+2017-06-26 03:56:48,650 - INFO - Starting heartbeat thread
+2017-06-26 03:56:48,651 - INFO - Start heartbeat successfully
+2017-06-26 03:56:48,652 - INFO - Creating Command Thread...
+2017-06-26 03:56:48,652 - INFO - Start Command Thread successfully
+2017-06-26 03:56:48,653 - INFO - Creating Canvas data Thread...
+2017-06-26 03:56:48,653 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:56:48,798 - INFO - Received command: stop
+2017-06-26 03:57:31,725 - INFO - Status is waiting
+2017-06-26 03:57:31,735 - INFO - NEON connected
+2017-06-26 03:57:31,736 - INFO - Status change to unconfigured
+2017-06-26 03:57:31,737 - INFO - Creating heartbeat thread
+2017-06-26 03:57:31,737 - INFO - Starting heartbeat thread
+2017-06-26 03:57:31,738 - INFO - Start heartbeat successfully
+2017-06-26 03:57:31,738 - INFO - Creating Command Thread...
+2017-06-26 03:57:31,739 - INFO - Start Command Thread successfully
+2017-06-26 03:57:31,740 - INFO - Creating Canvas data Thread...
+2017-06-26 03:57:31,741 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:57:31,876 - INFO - Received command: stop
+2017-06-26 03:58:33,940 - INFO - Status is waiting
+2017-06-26 03:58:33,953 - INFO - NEON connected
+2017-06-26 03:58:33,954 - INFO - Status change to unconfigured
+2017-06-26 03:58:33,954 - INFO - Creating heartbeat thread
+2017-06-26 03:58:33,955 - INFO - Starting heartbeat thread
+2017-06-26 03:58:33,955 - INFO - Start heartbeat successfully
+2017-06-26 03:58:33,956 - INFO - Creating Command Thread...
+2017-06-26 03:58:33,957 - INFO - Start Command Thread successfully
+2017-06-26 03:58:33,958 - INFO - Creating Canvas data Thread...
+2017-06-26 03:58:33,959 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:58:34,105 - INFO - Received command: stop
+2017-06-26 03:59:23,436 - INFO - Status is waiting
+2017-06-26 03:59:23,446 - INFO - NEON connected
+2017-06-26 03:59:23,446 - INFO - Status change to unconfigured
+2017-06-26 03:59:23,447 - INFO - Creating heartbeat thread
+2017-06-26 03:59:23,447 - INFO - Starting heartbeat thread
+2017-06-26 03:59:23,448 - INFO - Start heartbeat successfully
+2017-06-26 03:59:23,448 - INFO - Creating Command Thread...
+2017-06-26 03:59:23,449 - INFO - Start Command Thread successfully
+2017-06-26 03:59:23,450 - INFO - Creating Canvas data Thread...
+2017-06-26 03:59:23,450 - INFO - Start Canvas Data Thread successfully
+2017-06-26 03:59:23,588 - INFO - Received command: stop
+2017-06-26 04:00:13,971 - INFO - Status is waiting
+2017-06-26 04:00:13,982 - INFO - NEON connected
+2017-06-26 04:00:13,983 - INFO - Status change to unconfigured
+2017-06-26 04:00:13,984 - INFO - Creating heartbeat thread
+2017-06-26 04:00:13,984 - INFO - Starting heartbeat thread
+2017-06-26 04:00:13,986 - INFO - Start heartbeat successfully
+2017-06-26 04:00:13,986 - INFO - Creating Command Thread...
+2017-06-26 04:00:13,987 - INFO - Start Command Thread successfully
+2017-06-26 04:00:13,987 - INFO - Creating Canvas data Thread...
+2017-06-26 04:00:13,988 - INFO - Start Canvas Data Thread successfully
+2017-06-26 04:00:14,127 - INFO - Received command: stop
+2017-06-26 04:00:47,204 - INFO - Status is waiting
+2017-06-26 04:00:47,215 - INFO - NEON connected
+2017-06-26 04:00:47,215 - INFO - Status change to unconfigured
+2017-06-26 04:00:47,216 - INFO - Creating heartbeat thread
+2017-06-26 04:00:47,216 - INFO - Starting heartbeat thread
+2017-06-26 04:00:47,217 - INFO - Start heartbeat successfully
+2017-06-26 04:00:47,218 - INFO - Creating Command Thread...
+2017-06-26 04:00:47,219 - INFO - Start Command Thread successfully
+2017-06-26 04:00:47,219 - INFO - Creating Canvas data Thread...
+2017-06-26 04:00:47,221 - INFO - Start Canvas Data Thread successfully
+2017-06-26 04:00:47,366 - INFO - Received command: stop
+2017-06-26 04:01:20,944 - INFO - Status is waiting
+2017-06-26 04:01:20,955 - INFO - NEON connected
+2017-06-26 04:01:20,955 - INFO - Status change to unconfigured
+2017-06-26 04:01:20,956 - INFO - Creating heartbeat thread
+2017-06-26 04:01:20,956 - INFO - Starting heartbeat thread
+2017-06-26 04:01:20,957 - INFO - Start heartbeat successfully
+2017-06-26 04:01:20,957 - INFO - Creating Command Thread...
+2017-06-26 04:01:20,958 - INFO - Start Command Thread successfully
+2017-06-26 04:01:20,959 - INFO - Creating Canvas data Thread...
+2017-06-26 04:01:20,959 - INFO - Start Canvas Data Thread successfully
+2017-06-26 04:01:21,096 - INFO - Received command: stop
+2017-06-26 04:03:10,635 - INFO - Status is waiting
+2017-06-26 04:03:10,646 - INFO - NEON connected
+2017-06-26 04:03:10,646 - INFO - Status change to unconfigured
+2017-06-26 04:03:10,647 - INFO - Creating heartbeat thread
+2017-06-26 04:03:10,647 - INFO - Starting heartbeat thread
+2017-06-26 04:03:10,648 - INFO - Start heartbeat successfully
+2017-06-26 04:03:10,649 - INFO - Creating Command Thread...
+2017-06-26 04:03:10,650 - INFO - Start Command Thread successfully
+2017-06-26 04:03:10,650 - INFO - Creating Canvas data Thread...
+2017-06-26 04:03:10,651 - INFO - Start Canvas Data Thread successfully
+2017-06-26 04:03:10,789 - INFO - Received command: stop
+2017-06-26 04:03:40,011 - INFO - Status is waiting
+2017-06-26 04:03:40,022 - INFO - NEON connected
+2017-06-26 04:03:40,022 - INFO - Status change to unconfigured
+2017-06-26 04:03:40,023 - INFO - Creating heartbeat thread
+2017-06-26 04:03:40,023 - INFO - Starting heartbeat thread
+2017-06-26 04:03:40,024 - INFO - Start heartbeat successfully
+2017-06-26 04:03:40,024 - INFO - Creating Command Thread...
+2017-06-26 04:03:40,026 - INFO - Start Command Thread successfully
+2017-06-26 04:03:40,027 - INFO - Creating Canvas data Thread...
+2017-06-26 04:03:40,028 - INFO - Start Canvas Data Thread successfully
+2017-06-26 04:03:40,170 - INFO - Received command: stop
+2017-06-26 04:13:21,119 - INFO - Status is waiting
+2017-06-26 04:13:21,130 - INFO - NEON connected
+2017-06-26 04:13:21,131 - INFO - Status change to unconfigured
+2017-06-26 04:13:21,131 - INFO - Creating heartbeat thread
+2017-06-26 04:13:21,132 - INFO - Starting heartbeat thread
+2017-06-26 04:13:21,133 - INFO - Start heartbeat successfully
+2017-06-26 04:13:21,133 - INFO - Creating Command Thread...
+2017-06-26 04:13:21,134 - INFO - Start Command Thread successfully
+2017-06-26 04:13:21,134 - INFO - Creating Canvas data Thread...
+2017-06-26 04:13:21,135 - INFO - Start Canvas Data Thread successfully
+2017-06-26 04:13:21,271 - INFO - Received command: stop
+2017-06-26 04:23:10,365 - INFO - Status is waiting
+2017-06-26 04:23:10,374 - INFO - NEON connected
+2017-06-26 04:23:10,375 - INFO - Status change to unconfigured
+2017-06-26 04:23:10,375 - INFO - Creating heartbeat thread
+2017-06-26 04:23:10,376 - INFO - Starting heartbeat thread
+2017-06-26 04:23:10,376 - INFO - Start heartbeat successfully
+2017-06-26 04:23:10,377 - INFO - Creating Command Thread...
+2017-06-26 04:23:10,377 - INFO - Start Command Thread successfully
+2017-06-26 04:23:10,378 - INFO - Creating Canvas data Thread...
+2017-06-26 04:23:10,379 - INFO - Start Canvas Data Thread successfully
+2017-06-26 04:23:10,514 - INFO - Received command: stop
+2017-06-26 04:24:11,814 - INFO - Status is waiting
+2017-06-26 04:24:11,825 - INFO - NEON connected
+2017-06-26 04:24:11,825 - INFO - Status change to unconfigured
+2017-06-26 04:24:11,826 - INFO - Creating heartbeat thread
+2017-06-26 04:24:11,826 - INFO - Starting heartbeat thread
+2017-06-26 04:24:11,827 - INFO - Start heartbeat successfully
+2017-06-26 04:24:11,827 - INFO - Creating Command Thread...
+2017-06-26 04:24:11,828 - INFO - Start Command Thread successfully
+2017-06-26 04:24:11,829 - INFO - Creating Canvas data Thread...
+2017-06-26 04:24:11,829 - INFO - Start Canvas Data Thread successfully
+2017-06-26 04:24:11,969 - INFO - Received command: stop
Index: src/main.py
===================================================================
--- src/main.py	(revision ec704efc4868d9579af5e4b849fd025adf96c081)
+++ src/main.py	(revision 8fbfd3821ea899d6d0a80a14e9d83708a76072d8)
@@ -47,5 +47,4 @@
         self.mainSplitter.addWidget(self.mainSetWidget)
     
-        self.started=True
         self.ip = "" 
         self.port = 0 
@@ -54,4 +53,5 @@
         self.myCommand = None
         self.dataThread = None
+        self.started = True
 
         self.setCentralWidget(self.mainSplitter)
@@ -175,5 +175,6 @@
     @QtCore.pyqtSlot(str)
     def setCommand(self, value):
-        if self.myCommand!=value: 
+        if self.myCommand!=value:
+            self.stateMachine(value) 
             _timen=str(datetime.datetime.now())
             self.userWidget.setCommandTimeLabel(_timen)
@@ -201,16 +202,10 @@
         self.dataThread = neonReceiver.dataThread(parent, gui, self.neonServer, progressPath, protonPath, neutronPath, pulsePath, 1.0)
         logging.info("Start Canvas Data Thread successfully")
-    
-    def setDataPath(self, kwargs, started):
+ 
+    def setDataPath(self, kwargs):
         if not self.dataThread:
             logging.info("NEON not availabel")
         else:
             self.dataThread.setDataPath(kwargs)
-            if not started:
-                self.dataThread.pause()
-                print 'pause'
-            else:
-                self.dataThread.resume()
-                print 'resume'
 
     def getDetectorIndex(self):
@@ -221,11 +216,11 @@
         tabIndex = self.dataThread.getTabIndex()
         if tabIndex == 0:
-            self.mainSetWidget.upRightTab.histogramPage.updateCanvas(value)            
+            self.mainSetWidget.upRightTab.histogramPage.updateCanvas(value, self.started)            
         elif tabIndex == 1:
-            self.mainSetWidget.upRightTab.detectorPage.updateBankCanvas(value)
+            self.mainSetWidget.upRightTab.detectorPage.updateBankCanvas(value, self.started)
         elif tabIndex == 2:
-            self.mainSetWidget.upRightTab.monitorPage.updateCanvas(value)            
+            self.mainSetWidget.upRightTab.monitorPage.updateCanvas(value, self.started)
         elif tabIndex == 3:    
-            self.mainSetWidget.upRightTab.experimentPage.updateCanvas(value)            
+            self.mainSetWidget.upRightTab.experimentPage.updateCanvas(value, self.started) 
     
     @QtCore.pyqtSlot(object)
@@ -270,4 +265,132 @@
             self.getCanvasData(self.parent, self)
 
+    def stateMachine(self, command):
+        _command = command
+        _status = self.getStatus()
+
+        if _command == 'configure':
+            if _status == 'waiting':
+                logging.info("waiting status cannot receive configure command")
+            elif _status == 'unconfigured':
+                _status = 'configuring'
+                logging.info("status change to configuring")
+                # start get data from neon
+                self.getCanvasData(self.parent, self)
+                self.dataThread.pause()
+                self.started = False
+                self.mainSetWidget.upRightTab.tabChange()
+                _status = 'ready'
+                logging.info("status change to ready")
+            elif _status == 'configuring':
+                logging.info("configuring status cannot receive configure command")
+            elif _status == 'ready':
+                logging.info("ready status cannot receive configure command")
+            elif _status == 'running':
+                logging.info("running status cannot receive configure command")
+            elif _status == 'paused':
+                logging.info("paused status cannot receive configure command")
+        elif _command == 'unconfigure':
+            if _status == 'waiting':
+                logging.info("waiting status cannot receive unconfigure command")
+            elif _status == 'unconfigured':
+                logging.info("unconfigured status cannot receive unconfigure command")
+            elif _status == 'configuring':
+                logging.info("configuring status cannot receive unconfigure command")
+            elif _status == 'ready':
+                self.dataThread.pause()
+                self.started = False
+                _status = 'unconfigured'
+                logging.info("status change to unconfigured")
+            elif _status == 'running':
+                logging.info("running status cannot receive unconfigure command")
+            elif _status == 'paused':
+                logging.info("paused status cannot receive unconfigure command")
+        elif _command == 'start':
+            if _status == 'waiting':
+                logging.info("waiting status cannot receive start command")
+            elif _status == 'unconfigured':
+                logging.info("unconfigured status cannot receive start command")
+            elif _status == 'configuring':
+                logging.info("configuring status cannot receive start command")
+            elif _status == 'ready':
+                self.dataThread.resume()
+                self.started = True
+                _status = 'running'
+                logging.info("status change to running")
+            elif _status == 'running':
+                logging.info("running status cannot receive start command")
+            elif _status == 'paused':
+                logging.info("paused status cannot receive start command")
+        elif _command == 'pause':
+            if _status == 'waiting':
+                logging.info("waiting status cannot receive pause command")
+            elif _status == 'unconfigured':
+                logging.info("unconfigured status cannot receive pause command")
+            elif _status == 'configuring':
+                logging.info("configuring status cannot receive pause command")
+            elif _status == 'ready':
+                logging.info("ready status cannot receive pause command")
+            elif _status == 'running':
+                # pause get date from neon
+                self.dataThread.pause()
+                _status = 'paused'
+                logging.info("status change to paused")
+            elif _status == 'paused':
+                logging.info("paused status cannot receive pause command")
+        elif _command == 'resume':
+            if _status == 'waiting':
+                logging.info("waiting status cannot receive resume command")
+            elif _status == 'unconfigured':
+                logging.info("unconfigured status cannot receive resume command")
+            elif _status == 'configuring':
+                logging.info("configuring status cannot receive resume command")
+            elif _status == 'ready':
+                logging.info("ready status cannot receive resume command")
+            elif _status == 'running':
+                logging.info("running status cannot receive resume command")
+            elif _status == 'paused':
+                self.dataThread.resume()
+                _status = 'running'
+                logging.info("status change to runninig")
+        elif _command == 'stop':
+            if _status == 'waiting':
+                logging.info("waiting status cannot receive stop command")
+            elif _status == 'unconfigured':
+                logging.info("unconfigured status cannot receive stop command")
+            elif _status == 'configuring':
+                logging.info("configuring status cannot receive stop command")
+            elif _status == 'ready':
+                logging.info("ready status cannot receive stop command")
+            elif _status == 'running':
+                self.dataThread.pause()
+                self.started = False
+                _status = 'ready'
+                logging.info("status change to ready")
+            elif _status == 'paused':
+                logging.info("paused status cannot receive stop command")
+        elif _command == 'abort':
+            if _status == 'waiting':
+                logging.info("waiting status cannot receive abort command")
+            elif _status == 'unconfigured':
+                logging.info("unconfigured status cannot receive abort command")
+            elif _status == 'configuring':
+                self.dataThread.pause()
+                self.started = False
+                _status = 'unconfigured'
+                logging.info("status change to unconfigured")
+            elif _status == 'ready':
+                logging.info("ready status cannot receive abort command")
+            elif _status == 'running':
+                self.dataThread.pause()
+                self.started = False
+                _status = 'ready'
+                logging.info("status change to ready")
+            elif _status == 'paused':
+                logging.info("paused status cannot receive abort command")
+
+        self.userWidget.setStatusLabel(_status)  
+        self.myStatus = _status
+        self.myCommand = _command
+
 def exit_handler(top):
     top.saveConfigure()
Index: src/model/getNeonData.py
===================================================================
--- src/model/getNeonData.py	(revision ec704efc4868d9579af5e4b849fd025adf96c081)
+++ src/model/getNeonData.py	(revision 8fbfd3821ea899d6d0a80a14e9d83708a76072d8)
@@ -85,7 +85,20 @@
             self.xyXaxis.append([])
             self.xyYaxis.append([])
+    
+    def __del__(self):
+        self.wait()
 
     def pause(self):
         self.started=False
+
+    def set(self, value):
+        self.started=value
+
+    def get(self):
+        return self.started
+
+    def resume(self):
+        if not self.started:
+            self.started = True
 
     @QtCore.pyqtSlot()
@@ -280,14 +293,4 @@
         self.finished.emit()
 
-    def set(self, value):
-        self.started=value
-
-    def get(self):
-        return self.started
-
-    def resume(self):
-        if not self.started:
-            self.started = True
-
     def setDataPath(self, kwargs):
         self.kwargs = kwargs
Index: src/model/neonReceiver.py
===================================================================
--- src/model/neonReceiver.py	(revision ec704efc4868d9579af5e4b849fd025adf96c081)
+++ src/model/neonReceiver.py	(revision 8fbfd3821ea899d6d0a80a14e9d83708a76072d8)
@@ -68,5 +68,5 @@
         self.worker_thread.start()
         self.worker.finished.connect(self.worker_thread.quit)
-        
+         
         self.worker.signalLog.connect(self.gui.setLog)
         self.worker.signalProgress.connect(self.gui.setProgressData) 
Index: src/viewer/detector.py
===================================================================
--- src/viewer/detector.py	(revision 313197017345ce14c4cd30dd2053952521fc8b16)
+++ src/viewer/detector.py	(revision 8fbfd3821ea899d6d0a80a14e9d83708a76072d8)
@@ -208,40 +208,43 @@
         self.parent.tabChange()
 
-    def updateBankCanvas(self, value):
-        _bankIndex=self.getBankIndex()
-        _comboIndex=self.getComboIndex()
-        if _bankIndex==0:
-            color2D = 'r'
-            color3D = 'hot'
-        elif _bankIndex==1:
-            color2D = 'g'
-            color3D = 'cool'
-        elif _bankIndex==2 :
-            color2D = 'b'
-            color3D = 'prism'
-        elif _bankIndex==3:
-            color2D = 'c'
-            color3D = 'spring'
-        elif _bankIndex==4:
-            color2D = 'm'
-            color3D = 'winter'
-        elif _bankIndex==5:
-            color2D = 'y'
-            color3D = 'BuPu'
-        try:
-            self.BankCanvas.ax.clear()
-            if _comboIndex==0:
-                # PID 2D Bar
-                #self.BankCanvas.ax.bar(_x,value,0.5,color='r')
-                self.BankCanvas.ax.hist(value[1], color=color2D)
-            elif _comboIndex==1:
-                # XY 3D Image
-                self.BankCanvas.ax.pcolormesh(value[0], value[1], value[2], cmap=color3D)
-                #mlab.show()
-                #self.BankCanvas.ax.clear()
-                #self.BankCanvas.ax.imshow(img)
-                #self.BankCanvas.draw()
-        except:
+    def updateBankCanvas(self, value, started):
+        self.BankCanvas.ax.clear()
+        if not started:
             pass
+        else:
+            _bankIndex=self.getBankIndex()
+            _comboIndex=self.getComboIndex()
+            if _bankIndex==0:
+                color2D = 'r'
+                color3D = 'hot'
+            elif _bankIndex==1:
+                color2D = 'g'
+                color3D = 'cool'
+            elif _bankIndex==2 :
+                color2D = 'b'
+                color3D = 'prism'
+            elif _bankIndex==3:
+                color2D = 'c'
+                color3D = 'spring'
+            elif _bankIndex==4:
+                color2D = 'm'
+                color3D = 'winter'
+            elif _bankIndex==5:
+                color2D = 'y'
+                color3D = 'BuPu'
+            try:
+                if _comboIndex==0:
+                    # PID 2D Bar
+                    #self.BankCanvas.ax.bar(_x,value,0.5,color='r')
+                    self.BankCanvas.ax.hist(value[1], color=color2D)
+                elif _comboIndex==1:
+                    # XY 3D Image
+                    self.BankCanvas.ax.pcolormesh(value[0], value[1], value[2], cmap=color3D)
+                    #mlab.show()
+                    #self.BankCanvas.ax.clear()
+                    #self.BankCanvas.ax.imshow(img)
+                    #self.BankCanvas.draw()
+            except:
+                pass
         plt.pause(0.0001)
         self.BankCanvas.draw()
Index: src/viewer/experiment.py
===================================================================
--- src/viewer/experiment.py	(revision 3bb8b49e132da1bd5aef49c1aceabe7ffe9c64e5)
+++ src/viewer/experiment.py	(revision 8fbfd3821ea899d6d0a80a14e9d83708a76072d8)
@@ -157,46 +157,14 @@
         self.beginTime = time.time()
 
-    '''
-    def startProtonSimulator(self):
-        self.putProton()
-        self.getProton()
-
-    def putProton(self):
-        global CSNSThreadID
-        CSNSThreadID += 1
-        self.putThread = protonSimulator(CSNSThreadID, self.inQueue,
-                self.outQueue)
-
-        self.putThread.setDaemon(True)
-        self.putThread.start()
-
-    def getProton(self):
-        global CSNSThreadID
-        CSNSThreadID += 1
-        self.getThread = updateProtonCharge(CSNSThreadID,
-                self.protonCanvas, self.protonCanvas.ax, 'g',
-                self.outQueue)
-        self.getThread.setDaemon(True)
-        self.getThread.start()
-
-    def putProtonIsAlive(self):
-        try:
-            return self.putThread.isAlive()
-        except:
-            return False
-
-    def getProtonIsAlive(self):
-        try:
-            return self.getThread.isAlive()
-        except:
-            return False
-    '''
     def RadioButtonChoose(self):
         pass
 
-    def updateCanvas(self, value):
+    def updateCanvas(self, value, started):
         try:
             self.protonCanvas.ax.clear()
-            self.protonCanvas.ax.plot(value[0][0], value[0][1], color=self.protonCanvas.plotColor)
+            if not started:
+                pass
+            else:
+                self.protonCanvas.ax.plot(value[0][0], value[0][1], color=self.protonCanvas.plotColor)
             self.protonCanvas.ax.relim()
             self.protonCanvas.ax.autoscale_view()
@@ -207,5 +175,8 @@
         try:
             self.neutronCanvas.ax.clear()
-            self.neutronCanvas.ax.plot(value[1][0], value[1][1], color=self.neutronCanvas.plotColor)
+            if not started:
+                pass
+            else:
+                self.neutronCanvas.ax.plot(value[1][0], value[1][1], color=self.neutronCanvas.plotColor)
             self.neutronCanvas.ax.relim()
             self.neutronCanvas.ax.autoscale_view()
@@ -216,5 +187,8 @@
         try:
             self.pulseCanvas.ax.clear()
-            self.pulseCanvas.ax.plot(value[2][0], value[2][1], color=self.pulseCanvas.plotColor)
+            if not started:
+                pass
+            else:
+                self.pulseCanvas.ax.plot(value[2][0], value[2][1], color=self.pulseCanvas.plotColor)
             self.pulseCanvas.ax.relim()
             self.pulseCanvas.ax.autoscale_view()
Index: src/viewer/histogram.py
===================================================================
--- src/viewer/histogram.py	(revision a4397d59bcb87eaf11f8ab908a89d898284ed271)
+++ src/viewer/histogram.py	(revision 8fbfd3821ea899d6d0a80a14e9d83708a76072d8)
@@ -42,17 +42,21 @@
         return self.patternDock[n].getCanvas()
 
-    def updateCanvas(self,value):
+    def updateCanvas(self, value, started):
         try:
+            
             for i in range(len(self.patternDock)):
-                _pause = self.patternDock[i].pauseButton.text()
-                if _pause == 'Pause':
-                    _scale = self.patternDock[i].getScale()
-                    can = self.patternDock[i].canvas
-                    can.ax.clear()
-                    can.ax.plot(np.divide(value[0][i],_scale), np.divide(value[1][i],_scale), color=can.plotColor)
+                can = self.patternDock[i].canvas
+                can.ax.clear()
+                if not started:
+                    pass
+                else:
+                    _pause = self.patternDock[i].pauseButton.text()
+                    if _pause == 'Pause':
+                        _scale = self.patternDock[i].getScale()
+                        can.ax.plot(np.divide(value[0][i],_scale), np.divide(value[1][i],_scale), color=can.plotColor)
 
-                    can.ax.relim()
-                    can.ax.autoscale_view()
-                    can.draw()
+                can.ax.relim()
+                can.ax.autoscale_view()
+                can.draw()
         except:
             pass
Index: src/viewer/mainSet.py
===================================================================
--- src/viewer/mainSet.py	(revision ec704efc4868d9579af5e4b849fd025adf96c081)
+++ src/viewer/mainSet.py	(revision 8fbfd3821ea899d6d0a80a14e9d83708a76072d8)
@@ -38,6 +38,6 @@
         #self.createTimeProgress(0,2000)
 
-    def setDataPath(self, kwargs, started):
-        self.parent.setDataPath(kwargs,started) 
+    def setDataPath(self, kwargs):
+        self.parent.setDataPath(kwargs) 
 
     # time Progress ThreadI
Index: src/viewer/mainTab.py
===================================================================
--- src/viewer/mainTab.py	(revision ec704efc4868d9579af5e4b849fd025adf96c081)
+++ src/viewer/mainTab.py	(revision 8fbfd3821ea899d6d0a80a14e9d83708a76072d8)
@@ -36,5 +36,4 @@
     
         self.currentChanged.connect(self.tabChange)
-        self.started=True
 
     def updateDiffractionSimulator(self):
@@ -115,5 +114,4 @@
             groupTOFPath, groupCountsPath = self.getHistogramPath() 
             kwargs = {"tabIndex": tabIndex, "path1": groupCountsPath, "path2": groupTOFPath}
-            self.started=False 
         elif tabIndex == 1:
             pidXaxisPath, pidValuePath, xyXaxisPath, xyYaxisPath, xyValuePath = self.getDetectorPath()
@@ -123,10 +121,9 @@
             kwargs = {"tabIndex": tabIndex, "path1": monitorValuePath, "path2": monitorAxisXPath, "path3": monitorAxisYPath, "path4": monitorTOFPath,"path5": monitorCountsPath}
 
-            self.started=True 
         elif tabIndex == 3:
             protonPath, neutronPath, pulsePath = self.getExperimentPath()
             kwargs = {"tabIndex": tabIndex, "path1": pulsePath, "path2": protonPath, "path3": neutronPath}
        
-        self.parent.setDataPath(kwargs, self.started)
+        self.parent.setDataPath(kwargs)
 
 
Index: src/viewer/monitor.py
===================================================================
--- src/viewer/monitor.py	(revision a4397d59bcb87eaf11f8ab908a89d898284ed271)
+++ src/viewer/monitor.py	(revision 8fbfd3821ea899d6d0a80a14e9d83708a76072d8)
@@ -60,23 +60,27 @@
                            self.monitorDock[2])
 
-    def updateCanvas(self, value):
+    def updateCanvas(self, value, started):
         i = 0
         j = 0
         for i in range(3):
-            _pause = self.monitorDock[i].pauseButton.text()
-            if _pause == 'Pause':
-                can3D = self.monitorDock[i].imageCanvas
-                can2D = self.monitorDock[i].patternCanvas
-                try:
-                    can3D.ax.pcolormesh(value[0][i], value[1][i], value[2][i], cmap=can3D.plotColor)
-                    can3D.draw()
-                except:
-                    pass
-                try:
-                    can2D.ax.clear()
-                    can2D.ax.plot(value[3][i], value[4][i], color=can2D.plotColor)
-                    can2D.ax.relim()
-                    can2D.ax.autoscale_view()
-                    can2D.draw()
-                except:
-                    pass
+            can3D = self.monitorDock[i].imageCanvas
+            can2D = self.monitorDock[i].patternCanvas
+            can3D.ax.clear()
+            can2D.ax.clear()
+            if not started:
+                pass
+            else:
+                _pause = self.monitorDock[i].pauseButton.text()
+                if _pause == 'Pause':
+                    try:
+                        can3D.ax.pcolormesh(value[0][i], value[1][i], value[2][i], cmap=can3D.plotColor)
+                    except:
+                        pass
+                    try:
+                        can2D.ax.plot(value[3][i], value[4][i], color=can2D.plotColor)
+                        can2D.ax.relim()
+                        can2D.ax.autoscale_view()
+                    except:
+                        pass
+            can3D.draw()
+            can2D.draw()
Index: src/viewer/stateMachine.py
===================================================================
--- src/viewer/stateMachine.py	(revision ec704efc4868d9579af5e4b849fd025adf96c081)
+++ src/viewer/stateMachine.py	(revision 8fbfd3821ea899d6d0a80a14e9d83708a76072d8)
@@ -8,9 +8,13 @@
                 logging.info("waiting status cannot receive configure command")
             elif _status == 'unconfigured':
+                _status = 'configuring'
+                logging.info("status change to configuring")
                 # start get data from neon
                 self.getCanvasData(self.parent, self) 
+                self.dataThread.pause()
+                self.started = False
                 self.mainSetWidget.upRightTab.tabChange() 
-                _status = 'configuring'
-                logging.info("status change to configuring")
+                _status = 'ready'
+                logging.info("status change to ready")
             elif _status == 'configuring':
                 logging.info("configuring status cannot receive configure command")
@@ -29,6 +33,8 @@
                 logging.info("configuring status cannot receive unconfigure command")
             elif _status == 'ready':
-                self.dataThread.clear()
+                self.dataThread.pause()
+                self.started = False
                 _status = 'unconfigured'
+                logging.info("status change to unconfigured")
             elif _status == 'running':
                 logging.info("running status cannot receive unconfigure command")
@@ -43,5 +49,8 @@
                 logging.info("configuring status cannot receive start command")
             elif _status == 'ready':
+                self.dataThread.resume()
+                self.started = True
                 _status = 'running'
+                logging.info("status change to running")
             elif _status == 'running':
                 logging.info("running status cannot receive start command")
@@ -59,6 +68,7 @@
             elif _status == 'running':
                 # pause get date from neon
-                self.dataThread.pause()
+                self.dataThread.pause() 
                 _status = 'paused'
+                logging.info("status change to paused")
             elif _status == 'paused':
                 logging.info("paused status cannot receive pause command")
@@ -75,5 +85,7 @@
                 logging.info("running status cannot receive resume command")
             elif _status == 'paused':
-                 _status = 'running'
+                self.dataThread.resume()
+                _status = 'running'
+                logging.info("status change to runninig")
         elif _command == 'stop':
             if _status == 'waiting':
@@ -86,5 +98,8 @@
                 logging.info("ready status cannot receive stop command")
             elif _status == 'running':
+                self.dataThread.pause()
+                self.started = False
                 _status = 'ready'
+                logging.info("status change to ready")
             elif _status == 'paused':
                 logging.info("paused status cannot receive stop command")
@@ -95,9 +110,15 @@
                 logging.info("unconfigured status cannot receive abort command")
             elif _status == 'configuring':
+                self.dataThread.pause()
+                self.started = False
                 _status = 'unconfigured'
+                logging.info("status change to unconfigured")
             elif _status == 'ready':
                 logging.info("ready status cannot receive abort command")
             elif _status == 'running':
+                self.dataThread.pause()
+                self.started = False
                 _status = 'ready'
+                logging.info("status change to ready")
             elif _status == 'paused':
                 logging.info("paused status cannot receive abort command")
