mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-12 21:07:13 +02:00
fixed gui getting stuck (wrong datathreadmask more than 64 bits cuz of 72 sockets)
This commit is contained in:
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
//for memory mapping
|
//for memory mapping
|
||||||
u_int64_t CSP0BASE;
|
u_int64_t CSP0BASE;
|
||||||
|
|
||||||
@ -171,8 +172,8 @@ int mapCSP0(void) {
|
|||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
printf("CSPObase is 0x%x \n",CSP0BASE);
|
printf("CSPObase is 0x%llx \n",CSP0BASE);
|
||||||
printf("CSPOBASE=from %08x to %x\n",CSP0BASE,CSP0BASE+MEM_SIZE);
|
printf("CSPOBASE=from %llx to %llx\n",CSP0BASE,CSP0BASE+MEM_SIZE);
|
||||||
|
|
||||||
u_int32_t address;
|
u_int32_t address;
|
||||||
address = FIFO_DATA_REG_OFF;
|
address = FIFO_DATA_REG_OFF;
|
||||||
@ -827,7 +828,7 @@ u_int32_t testRAM(void) {
|
|||||||
int i=0;
|
int i=0;
|
||||||
allocateRAM();
|
allocateRAM();
|
||||||
// while(i<100000) {
|
// while(i<100000) {
|
||||||
memcpy(ram_values, values, dataBytes);
|
memcpy((char*)ram_values, (char*)values, dataBytes);
|
||||||
printf ("Testing RAM:\t%d: copied fifo %x to memory %x size %d\n",i++, (unsigned int)(values), (unsigned int)(ram_values), dataBytes);
|
printf ("Testing RAM:\t%d: copied fifo %x to memory %x size %d\n",i++, (unsigned int)(values), (unsigned int)(ram_values), dataBytes);
|
||||||
// }
|
// }
|
||||||
return result;
|
return result;
|
||||||
@ -970,7 +971,7 @@ int64_t getActualTime(){
|
|||||||
|
|
||||||
int64_t getMeasurementTime(){
|
int64_t getMeasurementTime(){
|
||||||
int64_t v=get64BitReg(GET_MEASUREMENT_TIME_LSB_REG, GET_MEASUREMENT_TIME_MSB_REG);
|
int64_t v=get64BitReg(GET_MEASUREMENT_TIME_LSB_REG, GET_MEASUREMENT_TIME_MSB_REG);
|
||||||
int64_t mask=0x8000000000000000;
|
u_int64_t mask=0x8000000000000000;
|
||||||
if (v & mask ) {
|
if (v & mask ) {
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("no measurement time left\n");
|
printf("no measurement time left\n");
|
||||||
@ -1000,7 +1001,7 @@ int loadImage(int index, short int ImageVals[]){
|
|||||||
for(i=0;i<6;i++)
|
for(i=0;i<6;i++)
|
||||||
printf("%d:%d\t",i,ImageVals[i]);
|
printf("%d:%d\t",i,ImageVals[i]);
|
||||||
#endif
|
#endif
|
||||||
memcpy(ptr,ImageVals ,dataBytes);
|
memcpy((char*)ptr,(char*)ImageVals ,dataBytes);
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("\nLoaded x%08x address with image of index %d\n",(unsigned int)(ptr),index);
|
printf("\nLoaded x%08x address with image of index %d\n",(unsigned int)(ptr),index);
|
||||||
#endif
|
#endif
|
||||||
@ -1816,7 +1817,7 @@ int allocateRAM() {
|
|||||||
int prepareADC(){
|
int prepareADC(){
|
||||||
printf("Preparing ADC\n");
|
printf("Preparing ADC\n");
|
||||||
u_int32_t valw,codata,csmask;
|
u_int32_t valw,codata,csmask;
|
||||||
int i,j,cdx,ddx,value;
|
int i,j,cdx,ddx;
|
||||||
cdx=0; ddx=1;
|
cdx=0; ddx=1;
|
||||||
csmask=0x7c; // 1111100
|
csmask=0x7c; // 1111100
|
||||||
|
|
||||||
@ -2208,7 +2209,7 @@ int readCounterBlock(int startACQ, short int CounterVals[]){
|
|||||||
printf("Value of multipurpose reg:%d\n",bus_r(MULTI_PURPOSE_REG));
|
printf("Value of multipurpose reg:%d\n",bus_r(MULTI_PURPOSE_REG));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
memcpy(CounterVals,ptr,dataBytes);
|
memcpy((char*)CounterVals,(char*)ptr,dataBytes);
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
int i;
|
int i;
|
||||||
printf("Copied counter memory block with size of %d bytes..\n",dataBytes);
|
printf("Copied counter memory block with size of %d bytes..\n",dataBytes);
|
||||||
@ -2278,7 +2279,7 @@ int resetCounterBlock(int startACQ){
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
memcpy(counterVals,ptr,dataBytes);
|
memcpy((char*)counterVals,(char*)ptr,dataBytes);
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
int i;
|
int i;
|
||||||
printf("Copied counter memory block with size of %d bytes..\n",(int)sizeof(counterVals));
|
printf("Copied counter memory block with size of %d bytes..\n",(int)sizeof(counterVals));
|
||||||
@ -2350,7 +2351,7 @@ int calibratePedestal(int frames){
|
|||||||
|
|
||||||
int a;
|
int a;
|
||||||
for (a=0;a<1280; a++){
|
for (a=0;a<1280; a++){
|
||||||
unsigned short v = (frame[a] << 8) + (frame[a] >> 8);
|
//unsigned short v = (frame[a] << 8) + (frame[a] >> 8);
|
||||||
// printf("%i: %i %i\n",a, frame[a],v);
|
// printf("%i: %i %i\n",a, frame[a],v);
|
||||||
avg[a] += ((double)frame[a])/(double)frames;
|
avg[a] += ((double)frame[a])/(double)frames;
|
||||||
//if(frame[a] == 8191)
|
//if(frame[a] == 8191)
|
||||||
@ -2377,7 +2378,7 @@ int calibratePedestal(int frames){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
double nf = (double)numberFrames;
|
//double nf = (double)numberFrames;
|
||||||
for(i =0; i < 1280; i++){
|
for(i =0; i < 1280; i++){
|
||||||
adc = i / 256;
|
adc = i / 256;
|
||||||
adcCh = (i - adc * 256) / 32;
|
adcCh = (i - adc * 256) / 32;
|
||||||
|
@ -72,6 +72,7 @@ int getAdcConfigured();
|
|||||||
|
|
||||||
u_int64_t getDetectorNumber();
|
u_int64_t getDetectorNumber();
|
||||||
u_int32_t getFirmwareVersion();
|
u_int32_t getFirmwareVersion();
|
||||||
|
u_int32_t getFirmwareSVNVersion();
|
||||||
int testFifos(void);
|
int testFifos(void);
|
||||||
u_int32_t testFpga(void);
|
u_int32_t testFpga(void);
|
||||||
u_int32_t testRAM(void);
|
u_int32_t testRAM(void);
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include "communication_funcs.h"
|
#include "communication_funcs.h"
|
||||||
#include "server_funcs.h"
|
#include "server_funcs.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
extern int sockfd;
|
extern int sockfd;
|
||||||
|
@ -2376,7 +2376,6 @@ int set_speed(int file_des) {
|
|||||||
int set_readout_flags(int file_des) {
|
int set_readout_flags(int file_des) {
|
||||||
|
|
||||||
enum readOutFlags arg;
|
enum readOutFlags arg;
|
||||||
int n;
|
|
||||||
int ret=FAIL;
|
int ret=FAIL;
|
||||||
|
|
||||||
|
|
||||||
|
@ -164,8 +164,8 @@ int choose_vthresh_and_vtrim(int countlim, int nsigma, int im) {
|
|||||||
double vthreshmean, vthreshSTDev;
|
double vthreshmean, vthreshSTDev;
|
||||||
int *thrmi, *thrma;
|
int *thrmi, *thrma;
|
||||||
double c;
|
double c;
|
||||||
double b=BVTRIM;
|
//double b=BVTRIM;
|
||||||
double a=AVTRIM;
|
//double a=AVTRIM;
|
||||||
int *trim;
|
int *trim;
|
||||||
int ich, imod, ichan;
|
int ich, imod, ichan;
|
||||||
int nvalid=0;
|
int nvalid=0;
|
||||||
@ -236,7 +236,7 @@ int choose_vthresh_and_vtrim(int countlim, int nsigma, int im) {
|
|||||||
while (runBusy()) {
|
while (runBusy()) {
|
||||||
}
|
}
|
||||||
usleep(500);
|
usleep(500);
|
||||||
fifodata=fifo_read_event();
|
fifodata=(int*)fifo_read_event();
|
||||||
scan=decode_data(fifodata);
|
scan=decode_data(fifodata);
|
||||||
for (imod=modmi; imod<modma; imod++) {
|
for (imod=modmi; imod<modma; imod++) {
|
||||||
for (ichan=0; ichan<nChans*nChips; ichan++){
|
for (ichan=0; ichan<nChans*nChips; ichan++){
|
||||||
@ -377,7 +377,7 @@ int trim_with_level(int countlim, int im) {
|
|||||||
}
|
}
|
||||||
usleep(500);
|
usleep(500);
|
||||||
|
|
||||||
fifodata=fifo_read_event();
|
fifodata=(int*)fifo_read_event();
|
||||||
scan=decode_data(fifodata);
|
scan=decode_data(fifodata);
|
||||||
for (imod=modmi; imod<modma; imod++) {
|
for (imod=modmi; imod<modma; imod++) {
|
||||||
for (ichan=0; ichan<nChans*nChips; ichan++) {
|
for (ichan=0; ichan<nChans*nChips; ichan++) {
|
||||||
@ -515,7 +515,7 @@ int choose_vthresh() {
|
|||||||
}
|
}
|
||||||
usleep(500);
|
usleep(500);
|
||||||
|
|
||||||
fifodata=fifo_read_event();
|
fifodata=(int*)fifo_read_event();
|
||||||
scan=decode_data(fifodata);
|
scan=decode_data(fifodata);
|
||||||
//
|
//
|
||||||
scan1=decode_data(fifodata);
|
scan1=decode_data(fifodata);
|
||||||
@ -523,7 +523,7 @@ int choose_vthresh() {
|
|||||||
|
|
||||||
for (imod=modmi; imod<modma; imod++) {
|
for (imod=modmi; imod<modma; imod++) {
|
||||||
//
|
//
|
||||||
med[imod]=median(scan1+imod*nChans*nChips,nChans*nChips);
|
med[imod]=(int)median((int*)scan1+imod*nChans*nChips,nChans*nChips);
|
||||||
med1[imod]=med[imod];
|
med1[imod]=med[imod];
|
||||||
//commented out by dhanya vthreshmean=vthreshmean+getDACbyIndexDACU(VTHRESH,imod);
|
//commented out by dhanya vthreshmean=vthreshmean+getDACbyIndexDACU(VTHRESH,imod);
|
||||||
olddiff[imod]=0xffffff;
|
olddiff[imod]=0xffffff;
|
||||||
@ -553,7 +553,7 @@ int choose_vthresh() {
|
|||||||
}
|
}
|
||||||
usleep(500);
|
usleep(500);
|
||||||
|
|
||||||
fifodata=fifo_read_event();
|
fifodata=(int*)fifo_read_event();
|
||||||
scan=decode_data(fifodata);
|
scan=decode_data(fifodata);
|
||||||
//
|
//
|
||||||
scan1=decode_data(fifodata);
|
scan1=decode_data(fifodata);
|
||||||
@ -561,7 +561,7 @@ int choose_vthresh() {
|
|||||||
change_flag=0;
|
change_flag=0;
|
||||||
printf("Vthresh iteration %3d 0f %3d\n",iteration, maxiterations);
|
printf("Vthresh iteration %3d 0f %3d\n",iteration, maxiterations);
|
||||||
for (ichan=modmi; ichan<modma; ichan++) {
|
for (ichan=modmi; ichan<modma; ichan++) {
|
||||||
med[ichan]=median(scan1+ichan*nChans*nChips,nChans*nChips);
|
med[ichan]=(int)median((int*)scan1+ichan*nChans*nChips,nChans*nChips);
|
||||||
med1[imod]=med[imod];
|
med1[imod]=med[imod];
|
||||||
media=median(med1+modmi,nm);
|
media=median(med1+modmi,nm);
|
||||||
|
|
||||||
@ -680,7 +680,7 @@ int trim_with_median(int stop, int im) {
|
|||||||
while (runBusy()) {
|
while (runBusy()) {
|
||||||
}
|
}
|
||||||
usleep(500);
|
usleep(500);
|
||||||
fifodata=fifo_read_event();
|
fifodata=(int*)fifo_read_event();
|
||||||
scan=decode_data(fifodata);
|
scan=decode_data(fifodata);
|
||||||
scan1=decode_data(fifodata);
|
scan1=decode_data(fifodata);
|
||||||
|
|
||||||
@ -689,7 +689,7 @@ int trim_with_median(int stop, int im) {
|
|||||||
/********* calculates median every time ***********/
|
/********* calculates median every time ***********/
|
||||||
|
|
||||||
for (imod=modmi; imod<modma; imod++) {
|
for (imod=modmi; imod<modma; imod++) {
|
||||||
me[imod]=median(scan1+imod*nChans*nChips,nChans*nChips);
|
me[imod]=median((int*)scan1+imod*nChans*nChips,nChans*nChips);
|
||||||
me1[imod]=me[imod];
|
me1[imod]=me[imod];
|
||||||
printf("Median of module %d=%d\n",imod,me[imod]);
|
printf("Median of module %d=%d\n",imod,me[imod]);
|
||||||
}
|
}
|
||||||
|
@ -5282,7 +5282,16 @@ void multiSlsDetector::readFrameFromReceiver(){
|
|||||||
int* multiframe=new int[nel]();
|
int* multiframe=new int[nel]();
|
||||||
int nch;
|
int nch;
|
||||||
|
|
||||||
volatile uint64_t dataThreadMask = 0x0;
|
/*
|
||||||
|
//left shift can be done to a maximum of 32 bits (so using 3 x 32 bits, instead of 2 x 64 bits)
|
||||||
|
volatile uint32_t dataThreadMask1 = 0x0;
|
||||||
|
volatile uint32_t dataThreadMask2 = 0x0;
|
||||||
|
volatile uint32_t dataThreadMask3 = 0x0;
|
||||||
|
if(numSockets >= 96) {
|
||||||
|
cprintf(BG_RED,"Error: Too many sockets %d for gui to process. Goodbye!", numSockets);
|
||||||
|
createReceivingDataSockets(true);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
//wait for real time acquisition to start
|
//wait for real time acquisition to start
|
||||||
bool running = true;
|
bool running = true;
|
||||||
@ -5290,22 +5299,41 @@ void multiSlsDetector::readFrameFromReceiver(){
|
|||||||
if(checkJoinThread())
|
if(checkJoinThread())
|
||||||
running = false;
|
running = false;
|
||||||
|
|
||||||
for(int i = 0; i < numSockets; ++i)
|
|
||||||
dataThreadMask|=(1<<i);
|
for(int i = 0; i < numSockets; ++i) {
|
||||||
|
if(i < 32)
|
||||||
|
dataThreadMask1 |=(1<<i);
|
||||||
|
else if (i < 64)
|
||||||
|
dataThreadMask2 |=(1<<(i-32));
|
||||||
|
else
|
||||||
|
dataThreadMask3 |=(1<<(i-64));
|
||||||
|
}
|
||||||
|
|
||||||
//exit when last message for each socket received
|
//exit when last message for each socket received
|
||||||
while(running){
|
while(running){
|
||||||
|
|
||||||
|
printf("datathreadmask1:0x%08x datathreadmask2:0x%08x datathreadmask2:0x%08x\n",dataThreadMask1,dataThreadMask2,dataThreadMask3);
|
||||||
//memset(((char*)multiframe),0xFF,slsdatabytes*thisMultiDetector->numberOfDetectors); //reset frame memory
|
//memset(((char*)multiframe),0xFF,slsdatabytes*thisMultiDetector->numberOfDetectors); //reset frame memory
|
||||||
|
|
||||||
//get each frame
|
//get each frame
|
||||||
for(int isocket=0; isocket<numSockets; ++isocket){
|
for(int isocket=0; isocket<numSockets; ++isocket){
|
||||||
|
cout<<"isocket:"<<isocket<<endl;
|
||||||
|
|
||||||
//if running
|
//if running
|
||||||
if((1 << isocket) & dataThreadMask){
|
if (((isocket < 32) && ((1 << isocket) & dataThreadMask1)) || //first 32 sockets
|
||||||
|
((isocket >= 32) && (isocket < 64) &&((1 << (isocket-32)) & dataThreadMask2)) || //next 32 sockets
|
||||||
|
((isocket >= 64) && ((1 << (isocket-64)) & dataThreadMask3))) { //next set of sockets
|
||||||
|
//if((1 << isocket) & dataThreadMask){
|
||||||
|
cout<<"isocket running"<<endl;
|
||||||
//get individual images
|
//get individual images
|
||||||
if(FAIL == getData(isocket, jungfrau, image, expectedslssize, currentAcquisitionIndex,currentFrameIndex,currentSubFrameIndex,currentFileName)){
|
if(FAIL == getData(isocket, jungfrau, image, expectedslssize, currentAcquisitionIndex,currentFrameIndex,currentSubFrameIndex,currentFileName)){
|
||||||
dataThreadMask^=(1<<isocket);
|
if(isocket < 32)
|
||||||
|
dataThreadMask1^=(1<<isocket);
|
||||||
|
else if (isocket < 64)
|
||||||
|
dataThreadMask2^=(1<<(isocket-32));
|
||||||
|
else
|
||||||
|
dataThreadMask3^=(1<<(isocket-64));
|
||||||
|
printf("changed to datathreadmask1:0x%08x datathreadmask2:0x%08x datathreadmask2:0x%08x\n",dataThreadMask1,dataThreadMask2,dataThreadMask3);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5341,7 +5369,109 @@ void multiSlsDetector::readFrameFromReceiver(){
|
|||||||
|
|
||||||
|
|
||||||
//all done
|
//all done
|
||||||
if(!dataThreadMask){
|
if(!dataThreadMask1 && !dataThreadMask2 && !dataThreadMask3){
|
||||||
|
cout<<"doneeeeeeeeeeeeeeeeeeeeeee!\n"<<endl;
|
||||||
|
sem_wait(&sem_newRTAcquisition);
|
||||||
|
//done with complete acquisition
|
||||||
|
if(checkJoinThread())
|
||||||
|
break;
|
||||||
|
else{
|
||||||
|
//starting a new scan/measurement
|
||||||
|
for(int i = 0; i < numSockets; ++i) {
|
||||||
|
if(i < 32)
|
||||||
|
dataThreadMask1 |=(1<<i);
|
||||||
|
else if (i < 64)
|
||||||
|
dataThreadMask2 |=(1<<(i-32));
|
||||||
|
else
|
||||||
|
dataThreadMask3 |=(1<<(i-64));
|
||||||
|
}
|
||||||
|
running = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//send data to callback
|
||||||
|
if(running){
|
||||||
|
fdata = decodeData(multiframe,nch);
|
||||||
|
if ((fdata) && (dataReady)){
|
||||||
|
thisData = new detectorData(fdata,NULL,NULL,getCurrentProgress(),currentFileName.c_str(),nx,ny);
|
||||||
|
dataReady(thisData, currentFrameIndex, currentSubFrameIndex, pCallbackArg);
|
||||||
|
delete thisData;
|
||||||
|
fdata = NULL;
|
||||||
|
//cout<<"Send frame #"<< currentFrameIndex << " to gui"<<endl;
|
||||||
|
}
|
||||||
|
setCurrentProgress(currentAcquisitionIndex+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
//setting it back for each scan/measurement
|
||||||
|
running = true;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
bool runningList[numSockets];
|
||||||
|
int numRunning = 0;
|
||||||
|
|
||||||
|
//wait for real time acquisition to start
|
||||||
|
bool running = true;
|
||||||
|
sem_wait(&sem_newRTAcquisition);
|
||||||
|
if(checkJoinThread())
|
||||||
|
running = false;
|
||||||
|
|
||||||
|
for(int i = 0; i < numSockets; ++i)
|
||||||
|
runningList[i] = true;
|
||||||
|
numRunning = numSockets;
|
||||||
|
|
||||||
|
|
||||||
|
//exit when last message for each socket received
|
||||||
|
while(running){
|
||||||
|
//memset(((char*)multiframe),0xFF,slsdatabytes*thisMultiDetector->numberOfDetectors); //reset frame memory
|
||||||
|
|
||||||
|
//get each frame
|
||||||
|
for(int isocket=0; isocket<numSockets; ++isocket){
|
||||||
|
|
||||||
|
//if running
|
||||||
|
if (runningList[isocket]) {
|
||||||
|
//if((1 << isocket) & dataThreadMask){
|
||||||
|
//get individual images
|
||||||
|
if(FAIL == getData(isocket, jungfrau, image, expectedslssize, currentAcquisitionIndex,currentFrameIndex,currentSubFrameIndex,currentFileName)){
|
||||||
|
runningList[isocket] = false;
|
||||||
|
numRunning--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//assemble data with interleaving
|
||||||
|
if(maxX){
|
||||||
|
|
||||||
|
//bottom
|
||||||
|
if(bottom[isocket]){
|
||||||
|
//if((((isocket/numSocketsPerSLSDetector)+1)%2) == 0){
|
||||||
|
for(int i=0;i<slsmaxY;++i){
|
||||||
|
memcpy(((char*)multiframe) + offsetY[isocket] + offsetX[isocket] + (int)((slsmaxY-1-i)*maxX*bytesperchannel),
|
||||||
|
(char*)image+ (int)(i*(slsmaxX/numSocketsPerSLSDetector)*bytesperchannel),
|
||||||
|
(int)(slsmaxX/numSocketsPerSLSDetector)*bytesperchannel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//top
|
||||||
|
else{
|
||||||
|
for(int i=0;i<slsmaxY;++i){
|
||||||
|
memcpy(((char*)multiframe) + offsetY[isocket] + offsetX[isocket] + (int)(i*maxX*bytesperchannel),
|
||||||
|
(char*)image+ (int)(i*(slsmaxX/numSocketsPerSLSDetector)*bytesperchannel),
|
||||||
|
(int)(slsmaxX/numSocketsPerSLSDetector)*bytesperchannel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//assemble data with no interleaving, assumed detectors appended vertically
|
||||||
|
else{
|
||||||
|
memcpy((char*)multiframe+slsdatabytes*isocket,(char*)image,slsdatabytes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//all done
|
||||||
|
if(!numRunning){
|
||||||
sem_wait(&sem_newRTAcquisition);
|
sem_wait(&sem_newRTAcquisition);
|
||||||
//done with complete acquisition
|
//done with complete acquisition
|
||||||
if(checkJoinThread())
|
if(checkJoinThread())
|
||||||
@ -5349,7 +5479,8 @@ void multiSlsDetector::readFrameFromReceiver(){
|
|||||||
else{
|
else{
|
||||||
//starting a new scan/measurement
|
//starting a new scan/measurement
|
||||||
for(int i = 0; i < numSockets; ++i)
|
for(int i = 0; i < numSockets; ++i)
|
||||||
dataThreadMask|=(1<<i);
|
runningList[i] = true;
|
||||||
|
numRunning = numSockets;
|
||||||
running = false;
|
running = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user