diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 82d2866bc..b80daaeea 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -3733,10 +3733,12 @@ string multiSlsDetector::setNetworkParameter(networkParameter p, string s){ case RECEIVER_STREAMING_PORT: prev_streaming = enableDataStreamingFromReceiver(); enableDataStreamingFromReceiver(0); + enableDataStreamingToClient(0); break; case CLIENT_STREAMING_PORT: prev_streaming = enableDataStreamingToClient(); enableDataStreamingToClient(0); + enableDataStreamingFromReceiver(0); break; case RECEIVER_STREAMING_SRC_IP: prev_streaming = enableDataStreamingFromReceiver(); @@ -3807,9 +3809,11 @@ string multiSlsDetector::setNetworkParameter(networkParameter p, string s){ switch (p) { case RECEIVER_STREAMING_PORT: enableDataStreamingFromReceiver(1); + enableDataStreamingToClient(1); break; case CLIENT_STREAMING_PORT: enableDataStreamingToClient(1); + enableDataStreamingFromReceiver(1); break; case RECEIVER_STREAMING_SRC_IP: enableDataStreamingFromReceiver(1); diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 93bb5532f..10363bfcf 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -8764,31 +8764,35 @@ int slsDetector::setReceiverReadTimer(int time_in_ms){ int slsDetector::enableDataStreamingFromReceiver(int enable){ - int fnum=F_STREAM_DATA_FROM_RECEIVER; - int ret = FAIL; - int retval=-1; - int arg = enable; + + if (enable >= 0) { + int fnum=F_STREAM_DATA_FROM_RECEIVER; + int ret = FAIL; + int retval=-1; + int arg = enable; - if(thisDetector->receiverOnlineFlag==ONLINE_FLAG){ + if(thisDetector->receiverOnlineFlag==ONLINE_FLAG){ #ifdef VERBOSE - std::cout << "***************Sending Data Streaming in Receiver " << arg << std::endl; + std::cout << "***************Sending Data Streaming in Receiver " << arg << std::endl; #endif - if (connectData() == OK){ - ret=thisReceiver->sendInt(fnum,retval,arg); - disconnectData(); + if (connectData() == OK){ + ret=thisReceiver->sendInt(fnum,retval,arg); + disconnectData(); + } + if(ret==FAIL) { + retval = -1; + cout << "could not set data streaming in receiver to " << enable <<" Returned:" << retval << endl; + setErrorMask((getErrorMask())|(DATA_STREAMING)); + } else { + thisDetector->receiver_datastream = retval; + if(ret==FORCE_UPDATE) + updateReceiver(); + } } - if(ret==FAIL) - retval = -1; - if(ret==FORCE_UPDATE) - updateReceiver(); } - if ((enable > 0) && (retval != enable)){ - cout << "could not set data streaming in receiver to " << enable <<" Returned:" << retval << endl; - setErrorMask((getErrorMask())|(DATA_STREAMING)); - } - return retval; + return thisDetector->receiver_datastream; } diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index 56721cc7a..0b84c29e3 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -2338,6 +2338,15 @@ string slsDetectorCommand::cmdAcquire(int narg, char *args[], int action) { myDet->setOnline(ONLINE_FLAG); int r_online = myDet->setReceiverOnline(ONLINE_FLAG); + // switch off data streaming to prevent extra images in zmq gui buffer + if (r_online == ONLINE_FLAG) { + if (myDet->enableDataStreamingFromReceiver() != 0) { + if (myDet->enableDataStreamingFromReceiver(0) != 0) { + std::cout << "Error: Unable to switch off data streaming in receiver. If GUI on, extra image(s) in zmq GUI buffer" << std::endl; + } + } + } + if(myDet->acquire() == FAIL) return string("acquire unsuccessful"); if(r_online){ @@ -5934,10 +5943,18 @@ string slsDetectorCommand::cmdReceiver(int narg, char *args[], int action) { myDet->setOnline(ONLINE_FLAG); - myDet->setReceiverOnline(ONLINE_FLAG); + int r_online = myDet->setReceiverOnline(ONLINE_FLAG); if(cmd=="receiver"){ if (action==PUT_ACTION) { + // switch off data streaming to prevent extra images in zmq gui buffer + if (r_online == ONLINE_FLAG) { + if (myDet->enableDataStreamingFromReceiver() != 0) { + if (myDet->enableDataStreamingFromReceiver(0) != 0) { + std::cout << "Error: Unable to switch off data streaming in receiver. If GUI on, extra image(s) in zmq GUI buffer" << std::endl; + } + } + } if(!strcasecmp(args[1],"start")) myDet->startReceiver(); else if(!strcasecmp(args[1],"stop"))