included json example with dummy values

This commit is contained in:
Dhanya Maliakal 2016-09-16 17:19:37 +02:00
parent c16f251442
commit f517eb7a41
4 changed files with 53 additions and 10 deletions

View File

@ -39,6 +39,12 @@ add_definitions(
-DDACS_INT -DDACS_INT
) )
add_library(zmq STATIC IMPORTED )
set_target_properties(zmq PROPERTIES
IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../slsReceiverSoftware/include/libzmq.a
)
add_library(slsDetectorStatic STATIC add_library(slsDetectorStatic STATIC
${SOURCES} ${SOURCES}
${HEADERS} ${HEADERS}

View File

@ -24,6 +24,7 @@ ID: $Id$
#include <iostream> #include <iostream>
#include <string> #include <string>
#include <zmq.h> #include <zmq.h>
#include <rapidjson/document.h> //to scan json header in zmq stream
using namespace std; using namespace std;
@ -5012,16 +5013,44 @@ void multiSlsDetector::startReceivingData(){
if(!idet) framecount++; //update indices, count only once if(!idet) framecount++; //update indices, count only once
// receive a message, this is a blocking function
len = zmq_msg_init (&message); /* is this required? Xiaoqiang didnt have it*/ //scan header--------------------------------------------------------
if(len) {cprintf(RED,"Failed to initialize message %d for %d\n",len,ithread); continue; } //error zmq_msg_init (&message);
len = zmq_msg_recv(&message, zmqsocket, 0);
if (len == -1) {
zmq_msg_close(&message);
cprintf(RED, "%d message null\n",ithread);
continue;
}
rapidjson::Document d;
d.Parse((char*)zmq_msg_data(&message));
// htype is an array of strings
rapidjson::Value::Array htype = d["htype"].GetArray();
for(int i=0; i< htype.Size(); i++)
cout << ithread << "htype: " << htype[i].GetString() << endl;/*print*/
// shape is an array of ints
rapidjson::Value::Array shape = d["shape"].GetArray();
cout << ithread << "shape: "; /*print*/
for(int i=0; i< shape.Size(); i++)
cout << ithread << shape[i].GetInt() << " ";/*print*/
cout << endl;
cout << ithread << "type: " << d["type"].GetString() << endl;/*print*/
// close the message
zmq_msg_close(&message);
//scan data--------------------------------------------------------
zmq_msg_init (&message);
len = zmq_msg_recv(&message, zmqsocket, 0); len = zmq_msg_recv(&message, zmqsocket, 0);
//if(len<1024*256) //last one
//cprintf(RED,"got less than planned for socket %d\n",ithread); if(len<1024*256){
cprintf(RED,"got less than planned for socket %d\n",ithread);
//end of socket //end of socket
if (len <= 3 ) { //if (len <= 3 ) {
if(!len) cprintf(RED,"Received no data in socket for %d\n", ithread); if(!len) cprintf(RED,"Received no data in socket for %d\n", ithread);
zmq_msg_close(&message);
//cout<<ithread <<" sls Received end data"<<endl; //cout<<ithread <<" sls Received end data"<<endl;
singleframe[ithread] = NULL; singleframe[ithread] = NULL;
pthread_mutex_lock(&ms); pthread_mutex_lock(&ms);
@ -5035,8 +5064,7 @@ void multiSlsDetector::startReceivingData(){
break; break;
} }
if(zmq_msg_data(&message)==NULL) cprintf(RED,"GOT NULL FROM ZMQ\n"); /*not needed most likely*/ //actual data
//cout<<"Received on " << ithread << " for frame " << framecount << endl; //cout<<"Received on " << ithread << " for frame " << framecount << endl;
//if(len == singleDatabytes/numReadoutPerDetector){//hoow to solve this //if(len == singleDatabytes/numReadoutPerDetector){//hoow to solve this
memcpy((char*)(singleframe[ithread]),(char*)zmq_msg_data(&message),singleDatabytes/numReadoutPerDetector); memcpy((char*)(singleframe[ithread]),(char*)zmq_msg_data(&message),singleDatabytes/numReadoutPerDetector);
@ -5052,8 +5080,9 @@ void multiSlsDetector::startReceivingData(){
sem_post(&sem_singledone[ithread]);//let multi know is ready sem_post(&sem_singledone[ithread]);//let multi know is ready
//cprintf(GREEN,"single %d posted done for multi\n",ithread); //cprintf(GREEN,"single %d posted done for multi\n",ithread);
// close the message
zmq_msg_close(&message);
} }
zmq_msg_close(&message);
//close socket //close socket
zmq_disconnect(zmqsocket, hostname); zmq_disconnect(zmqsocket, hostname);

View File

@ -521,7 +521,7 @@ int slsDetectorUtils::acquire(int delflag){
setAcquiringFlag(false); setAcquiringFlag(false);
clock_gettime(CLOCK_REALTIME, &end); clock_gettime(CLOCK_REALTIME, &end);
cprintf(BLUE,"Elapsed time:%f seconds\n",( end.tv_sec - begin.tv_sec ) + ( end.tv_nsec - begin.tv_nsec ) / 1000000000.0); cout << "Elapsed time for acquisition:" << (( end.tv_sec - begin.tv_sec ) + ( end.tv_nsec - begin.tv_nsec ) / 1000000000.0) << " seconds" << endl;
return OK; return OK;

View File

@ -18,6 +18,8 @@ add_executable(sls_detector_get
target_link_libraries(sls_detector_get target_link_libraries(sls_detector_get
slsDetectorShared slsDetectorShared
pthread pthread
zmq
rt
) )
set_target_properties(sls_detector_get PROPERTIES set_target_properties(sls_detector_get PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
@ -30,6 +32,8 @@ add_executable(sls_detector_put
target_link_libraries(sls_detector_put target_link_libraries(sls_detector_put
slsDetectorShared slsDetectorShared
pthread pthread
zmq
rt
) )
set_target_properties(sls_detector_put PROPERTIES set_target_properties(sls_detector_put PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
@ -42,6 +46,8 @@ add_executable(sls_detector_acquire
target_link_libraries(sls_detector_acquire target_link_libraries(sls_detector_acquire
slsDetectorShared slsDetectorShared
pthread pthread
zmq
rt
) )
set_target_properties(sls_detector_acquire PROPERTIES set_target_properties(sls_detector_acquire PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
@ -54,6 +60,8 @@ add_executable(sls_detector_help
target_link_libraries(sls_detector_help target_link_libraries(sls_detector_help
slsDetectorShared slsDetectorShared
pthread pthread
zmq
rt
) )
set_target_properties(sls_detector_help PROPERTIES set_target_properties(sls_detector_help PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin