diff --git a/manual/manual-api/mainClient.cpp b/manual/manual-api/mainClient.cpp new file mode 100644 index 000000000..815126733 --- /dev/null +++ b/manual/manual-api/mainClient.cpp @@ -0,0 +1,91 @@ +/** +\file mainClient.cpp + +This file is an example of how to implement the slsDetectorUsers class +You can compile it linking it to the slsDetector library + +gcc mainClient.cpp -L lib -l SlsDetector -lm -lpthread + +where lib is the location of libSlsDetector.so + +*/ + +#include +#include "slsDetectorUsers.h" +#include "detectorData.h" + +/** Definition of the data callback which simply prints out the number of points received and teh frame number */ +int dataCallback(detectorData *pData, int iframe, void *pArg) +{ + std::cout << "dataCallback: " << pData->npoints << " " << pData->npy << "Frame number: " << iframe << std::endl; +} + + +/**example of a main program using the slsDetectorUsers class */ +int main(int argc, char **argv) { + int id=0; + /** if specified, argv[2] is used as detector ID (default is 0)*/ + if (argc>=3) + id=atoi(argv[2]); + + + + /** slsDetectorUsers is instantiated */ + slsDetectorUsers *pDetector = new slsDetectorUsers (id); + + + /** if specified, argv[1] is used as detector config file (necessary at least the first time it is called to properly configure advanced settings in the shared memory)*/ + if (argc>=2) + pDetector->readConfigurationFile(argv[1]); + + /** Setting the detector online (should be by default */ + pDetector->setOnline(1); + /** defining the detector size */ + int minX, minY=0, sizeX, sizeY=1; + pDetector->getDetectorSize(minX, minY, sizeX, sizeY); + std::cout << "X: Start=" << minX << ", Size= " << sizeX << std::endl; + std::cout << "Y: Start=" << minY << ", Size= " << sizeY << std::endl; + pDetector->setDetectorSize(0,0,7680,1); + std::cout << pDetector->getDetectorDeveloper() << std::endl; + + /** registering data callback */ + pDetector->registerDataCallback(&dataCallback, NULL); + + /** checking detector status and exiting if not idle */ + int status = pDetector->getDetectorStatus(); + if (status != 0){ + std::cout << "Detector not ready: " << slsDetectorUsers::runStatusType(status) << std::endl; + return 1; + } + + /** checking and setting detector settings */ + std::cout << "settings: " << slsDetectorUsers::getDetectorSettings(pDetector->setSettings()) << std::endl; + pDetector->setSettings(slsDetectorUsers::getDetectorSettings("standard")); + std::cout << "settings: " << slsDetectorUsers::getDetectorSettings(pDetector->setSettings()) << std::endl; + + /** Settings exposure time to 10ms */ + pDetector->setExposureTime(10000000); + + /** Settings exposure time to 100ms */ + pDetector->setExposurePeriod(100000000); + + /** Settingsnumber of frames to 30 */ + pDetector->setNumberOfFrames(30); + + /** start measurement */ + pDetector->startMeasurement(); + + while (1) { + usleep(100000); + status = pDetector->getDetectorStatus(); + if (status == 0 || status == 1|| status == 3) + break; + } + /** returning when acquisition is finished or data are avilable */ + + + delete pDetector; + + return 0; +} + diff --git a/manual/manual-api/mainReceiver.cpp b/manual/manual-api/mainReceiver.cpp new file mode 100644 index 000000000..0bfeac8f6 --- /dev/null +++ b/manual/manual-api/mainReceiver.cpp @@ -0,0 +1,114 @@ +/* A simple server in the internet domain using TCP + The port number is passed as an argument +*/ + +/** +\file mainReceiver.cpp + + +This file is an example of how to implement the slsDetectorUsers class +You can compile it linking it to the slsDetector library + +gcc mainReceiver.cpp -L lib -l SlsDetector -lm -lpthread + +where lib is the location of libSlsDetector.so + +*/ + +#include "slsReceiverUsers.h" + + +#include //SIGINT +#include //EXIT + +#include +using namespace std; + +/** + close file if receiver process is interrupted +*/ + +void closeFile(int p){ + cout<<"close file in receiver"<registerCallBackStartAcquisition(func,arg); + + + /* + callback argument is + total farmes caught + registerCallBackAcquisitionFinished(void (*func)(int, void*),void *arg); + */ + + + //receiver->registerCallBackAcquisitionFinished(func,arg); + + + + /* + args to raw data ready callback are + framenum + datapointer + file descriptor + guidatapointer (NULL, no data required) + + NEVER DELETE THE DATA POINTER + REMEMBER THAT THE CALLBACK IS BLOCKING + + registerCallBackRawDataReady(void (*func)(int, char*, FILE*, char*, void*),void *arg); + + */ + + //receiver->registerCallBackRawDataReady(func,arg); + + + /* start receiver to listen for commands from the client (and data from detectors when expected */ + + receiver->start(); + + + return 0; +} + diff --git a/manual/manual-api/slsDetectorUsers.doxy b/manual/manual-api/slsDetectorUsers.doxy index e096ed1fe..41a4eba4a 100644 --- a/manual/manual-api/slsDetectorUsers.doxy +++ b/manual/manual-api/slsDetectorUsers.doxy @@ -62,9 +62,9 @@ HIDE_FRIEND_COMPOUNDS = NO INTERNAL_DOCS = NO -SHOW_INCLUDE_FILES = NO +SHOW_INCLUDE_FILES = YES -SHOW_FILES = NO +SHOW_FILES = YES SHOW_NAMESPACES = NO @@ -78,9 +78,10 @@ USE_PDFLATEX = YES LATEX_HIDE_INDICES = YES +SOURCE_BROWSER = YES PREDEFINED = __cplusplus -INPUT = slsDetectorUsers.h detectorData.h slsReceiverUsers.h +INPUT = slsDetectorUsers.h detectorData.h slsReceiverUsers.h mainClient.cpp mainReceiver.cpp OUTPUT_DIRECTORY = slsDetectorUsersDocs