diff --git a/slsDetectorGui/forms/form_tab_advanced.ui b/slsDetectorGui/forms/form_tab_advanced.ui
index af6a7bc0a..de820db1e 100644
--- a/slsDetectorGui/forms/form_tab_advanced.ui
+++ b/slsDetectorGui/forms/form_tab_advanced.ui
@@ -1264,7 +1264,7 @@ An extension given by the modules serial number will be attached.
- ZMQ Port TX:
+ ZMQ Port:
@@ -1314,6 +1314,26 @@ An extension given by the modules serial number will be attached.
+
+
+
+ 23
+ 142
+ 291
+ 25
+
+
+
+ Switching off and on the receiver data streaming from command line requires client sockets to be restarted as well.
+
+
+ Restart Streaming (Receiver->GUI)
+
+
+
+ :/icons/images/refresh.png:/icons/images/refresh.png
+
+
@@ -1625,7 +1645,7 @@ An extension given by the modules serial number will be attached.
- ZMQ Port RX:
+ ZMQ Port (GUI):
diff --git a/slsDetectorGui/include/qTabAdvanced.h b/slsDetectorGui/include/qTabAdvanced.h
index 5071e8fd6..4d730ca33 100644
--- a/slsDetectorGui/include/qTabAdvanced.h
+++ b/slsDetectorGui/include/qTabAdvanced.h
@@ -162,6 +162,10 @@ private slots:
*/
void SetReceiver();
+ /** Restart data streaming in receiver and gui
+ */
+ void RestartStreaming();
+
/** Add ROI Input if the value changed in the last slot
*/
void AddROIInputSlot(){AddROIInput(1);};
diff --git a/slsDetectorGui/src/qDrawPlot.cpp b/slsDetectorGui/src/qDrawPlot.cpp
index 4f798da61..5bf2e6cc5 100644
--- a/slsDetectorGui/src/qDrawPlot.cpp
+++ b/slsDetectorGui/src/qDrawPlot.cpp
@@ -741,11 +741,20 @@ void* qDrawPlot::DataStartAcquireThread(void *this_pointer){
if(((qDrawPlot*)this_pointer)->myDet->setReceiverOnline() == slsDetectorDefs::ONLINE_FLAG) {
// if receiver data up streaming not on, switch it on
- if (((qDrawPlot*)this_pointer)->myDet->enableDataStreamingFromReceiver() != 1)
+ if (((qDrawPlot*)this_pointer)->myDet->enableDataStreamingFromReceiver() != 1) {cprintf(GREEN,"receiver not on\n");
+ // switch on receiver
if (((qDrawPlot*)this_pointer)->myDet->enableDataStreamingFromReceiver(1) != 1) {
qDefs::checkErrorMessage(((qDrawPlot*)this_pointer)->myDet,"qDrawPlot::DataStartAcquireThread");
return this_pointer;
}
+ // switch off client
+ ((qDrawPlot*)this_pointer)->myDet->enableDataStreamingToClient(0);
+ // switch on client
+ if (((qDrawPlot*)this_pointer)->myDet->enableDataStreamingToClient(1) != 1) {
+ qDefs::checkErrorMessage(((qDrawPlot*)this_pointer)->myDet,"qDrawPlot::DataStartAcquireThread");
+ return this_pointer;
+ }
+ }
}
((qDrawPlot*)this_pointer)->myDet->acquire(1);
diff --git a/slsDetectorGui/src/qTabAdvanced.cpp b/slsDetectorGui/src/qTabAdvanced.cpp
index fe3aab038..753b2ec1c 100644
--- a/slsDetectorGui/src/qTabAdvanced.cpp
+++ b/slsDetectorGui/src/qTabAdvanced.cpp
@@ -79,6 +79,7 @@ void qTabAdvanced::SetupWidgetWindow(){
isAngular = true;
spinZmqPort->setEnabled(false);
spinZmqPort2->setEnabled(false);
+ btnRestartStreaming->setEnabled(false);
break;
case slsDetectorDefs::EIGER:
isEnergy = true;
@@ -280,6 +281,7 @@ void qTabAdvanced::Initialization(){
connect(dispUDPMAC, SIGNAL(editingFinished()), this, SLOT(SetNetworkParameters()));
connect(btnRxr, SIGNAL(clicked()), this, SLOT(SetReceiver()));
+ connect(btnRestartStreaming,SIGNAL(clicked()), this, SLOT(RestartStreaming()));
}
@@ -729,12 +731,17 @@ void qTabAdvanced::SetRxrUDPPort(int port){
void qTabAdvanced::SetCltZmqPort(int port){
#ifdef VERBOSE
- cout << "Setting Receiver UDP Port:" << port << endl;
+ cout << "Setting Client UDP Port:" << port << endl;
#endif
ostringstream ss; ss << port; string sport = ss.str();
disconnect(spinZmqPort, SIGNAL(valueChanged(int)), this, SLOT(SetCltZmqPort(int)));
spinZmqPort->setValue(atoi(det->setClientStreamingPort(sport).c_str()));
+ myDet->enableDataStreamingFromReceiver(false);
+ myDet->enableDataStreamingToClient(false);
+
+ myDet->enableDataStreamingFromReceiver(true);
+ myDet->enableDataStreamingToClient(true);
qDefs::checkErrorMessage(det,"qTabAdvanced::SetCltZmqPort");
connect(spinZmqPort, SIGNAL(valueChanged(int)), this, SLOT(SetCltZmqPort(int)));
}
@@ -751,6 +758,11 @@ void qTabAdvanced::SetRxrZmqPort(int port){
disconnect(spinZmqPort2, SIGNAL(valueChanged(int)), this, SLOT(SetRxrZmqPort(int)));
spinZmqPort2->setValue(atoi(det->setReceiverStreamingPort(sport).c_str()));
+ myDet->enableDataStreamingFromReceiver(false);
+ myDet->enableDataStreamingToClient(false);
+
+ myDet->enableDataStreamingFromReceiver(true);
+ myDet->enableDataStreamingToClient(true);
qDefs::checkErrorMessage(det,"qTabAdvanced::SetRxrZmqPort");
connect(spinZmqPort2, SIGNAL(valueChanged(int)), this, SLOT(SetRxrZmqPort(int)));
}
@@ -854,6 +866,23 @@ void qTabAdvanced::SetReceiver(){
+//-------------------------------------------------------------------------------------------------------------------------------------------------
+
+
+void qTabAdvanced::RestartStreaming(){
+#ifdef VERBOSE
+ cout << "Restarting Data Streaming in Receiver and Gui" << endl;
+#endif
+ disconnect(btnRestartStreaming,SIGNAL(clicked()), this, SLOT(RestartStreaming()));
+ myDet->enableDataStreamingFromReceiver(false);
+ myDet->enableDataStreamingToClient(false);
+
+ myDet->enableDataStreamingFromReceiver(true);
+ myDet->enableDataStreamingToClient(true);
+ connect(btnRestartStreaming,SIGNAL(clicked()), this, SLOT(RestartStreaming()));
+}
+
+
//-------------------------------------------------------------------------------------------------------------------------------------------------