example and updated python bindings

This commit is contained in:
Erik Frojdh 2020-08-20 12:19:35 +02:00
parent a7cc2b38d8
commit 8ef6f32be6
2 changed files with 113 additions and 12 deletions

View File

@ -134,4 +134,35 @@ hang around until the main process exits.
time.sleep(0.1) time.sleep(0.1)
#Join the process #Join the process
p.join() p.join()
------------------------------
Setting and getting times
------------------------------
::
import datetime as dt
from slsdet import Detector
d = Detector()
# The simplest way is to set the exposure time in
# seconds by using the exptime property
# This sets the exposure time for all modules
d.exptime = 0.5
# exptime also accepts a python datetime.timedelta
# which can be used to set the time in almost any unit
t = dt.timedelta(milliseconds = 2.3)
d.exptime = t
# or combination of units
t = dt.timedelta(minutes = 3, seconds = 1.23)
d.exptime = t
#exptime however always returns the time in seconds
>>> d.exptime
181.23

View File

@ -180,6 +180,14 @@ void init_det(py::module &m) {
(Result<sls::ns>(Detector::*)(sls::Positions) const) & (Result<sls::ns>(Detector::*)(sls::Positions) const) &
Detector::getDelayAfterTriggerLeft, Detector::getDelayAfterTriggerLeft,
py::arg() = Positions{}) py::arg() = Positions{})
.def("getDynamicRange",
(Result<int>(Detector::*)(sls::Positions) const) &
Detector::getDynamicRange,
py::arg() = Positions{})
.def("setDynamicRange",
(void (Detector::*)(int)) & Detector::setDynamicRange, py::arg())
.def("getDynamicRangeList", (std::vector<int>(Detector::*)() const) &
Detector::getDynamicRangeList)
.def("getTimingMode", .def("getTimingMode",
(Result<defs::timingMode>(Detector::*)(sls::Positions) const) & (Result<defs::timingMode>(Detector::*)(sls::Positions) const) &
Detector::getTimingMode, Detector::getTimingMode,
@ -188,6 +196,9 @@ void init_det(py::module &m) {
(void (Detector::*)(defs::timingMode, sls::Positions)) & (void (Detector::*)(defs::timingMode, sls::Positions)) &
Detector::setTimingMode, Detector::setTimingMode,
py::arg(), py::arg() = Positions{}) py::arg(), py::arg() = Positions{})
.def("getTimingModeList",
(std::vector<defs::timingMode>(Detector::*)() const) &
Detector::getTimingModeList)
.def("getSpeed", .def("getSpeed",
(Result<defs::speedLevel>(Detector::*)(sls::Positions) const) & (Result<defs::speedLevel>(Detector::*)(sls::Positions) const) &
Detector::getSpeed, Detector::getSpeed,
@ -364,6 +375,18 @@ void init_det(py::module &m) {
(void (Detector::*)(sls::Positions)) & (void (Detector::*)(sls::Positions)) &
Detector::sendSoftwareTrigger, Detector::sendSoftwareTrigger,
py::arg() = Positions{}) py::arg() = Positions{})
.def("getScan",
(Result<defs::scanParameters>(Detector::*)(sls::Positions) const) &
Detector::getScan,
py::arg() = Positions{})
.def("setScan",
(void (Detector::*)(const defs::scanParameters)) &
Detector::setScan,
py::arg())
.def("getScanErrorMessage",
(Result<std::string>(Detector::*)(sls::Positions) const) &
Detector::getScanErrorMessage,
py::arg() = Positions{})
.def("getNumberofUDPInterfaces", .def("getNumberofUDPInterfaces",
(Result<int>(Detector::*)(sls::Positions) const) & (Result<int>(Detector::*)(sls::Positions) const) &
Detector::getNumberofUDPInterfaces, Detector::getNumberofUDPInterfaces,
@ -458,6 +481,14 @@ void init_det(py::module &m) {
.def("setDestinationUDPPort2", .def("setDestinationUDPPort2",
(void (Detector::*)(int, int)) & Detector::setDestinationUDPPort2, (void (Detector::*)(int, int)) & Detector::setDestinationUDPPort2,
py::arg(), py::arg()) py::arg(), py::arg())
.def("reconfigureUDPDestination",
(void (Detector::*)(sls::Positions)) &
Detector::reconfigureUDPDestination,
py::arg() = Positions{})
.def("validateUDPConfiguration",
(void (Detector::*)(sls::Positions)) &
Detector::validateUDPConfiguration,
py::arg() = Positions{})
.def("printRxConfiguration", .def("printRxConfiguration",
(Result<std::string>(Detector::*)(sls::Positions) const) & (Result<std::string>(Detector::*)(sls::Positions) const) &
Detector::printRxConfiguration, Detector::printRxConfiguration,
@ -670,6 +701,14 @@ void init_det(py::module &m) {
(void (Detector::*)(int, sls::Positions)) & (void (Detector::*)(int, sls::Positions)) &
Detector::setRxZmqTimer, Detector::setRxZmqTimer,
py::arg(), py::arg() = Positions{}) py::arg(), py::arg() = Positions{})
.def("getRxZmqStartingFrame",
(Result<int>(Detector::*)(sls::Positions) const) &
Detector::getRxZmqStartingFrame,
py::arg() = Positions{})
.def("setRxZmqStartingFrame",
(void (Detector::*)(int, sls::Positions)) &
Detector::setRxZmqStartingFrame,
py::arg(), py::arg() = Positions{})
.def("getRxZmqPort", .def("getRxZmqPort",
(Result<int>(Detector::*)(sls::Positions) const) & (Result<int>(Detector::*)(sls::Positions) const) &
Detector::getRxZmqPort, Detector::getRxZmqPort,
@ -700,12 +739,6 @@ void init_det(py::module &m) {
(void (Detector::*)(const sls::IpAddr, sls::Positions)) & (void (Detector::*)(const sls::IpAddr, sls::Positions)) &
Detector::setClientZmqIp, Detector::setClientZmqIp,
py::arg(), py::arg() = Positions{}) py::arg(), py::arg() = Positions{})
.def("getDynamicRange",
(Result<int>(Detector::*)(sls::Positions) const) &
Detector::getDynamicRange,
py::arg() = Positions{})
.def("setDynamicRange",
(void (Detector::*)(int)) & Detector::setDynamicRange, py::arg())
.def("getSubExptime", .def("getSubExptime",
(Result<sls::ns>(Detector::*)(sls::Positions) const) & (Result<sls::ns>(Detector::*)(sls::Positions) const) &
Detector::getSubExptime, Detector::getSubExptime,
@ -939,11 +972,11 @@ void init_det(py::module &m) {
(void (Detector::*)(const int, const int, sls::Positions)) & (void (Detector::*)(const int, const int, sls::Positions)) &
Detector::setInjectChannel, Detector::setInjectChannel,
py::arg(), py::arg(), py::arg() = Positions{}) py::arg(), py::arg(), py::arg() = Positions{})
.def( .def("getVetoPhoton",
"getVetoPhoton", (void (Detector::*)(const int, const std::string &,
(Result<std::vector<int>>(Detector::*)(const int, sls::Positions)) & sls::Positions)) &
Detector::getVetoPhoton, Detector::getVetoPhoton,
py::arg(), py::arg() = Positions{}) py::arg(), py::arg(), py::arg() = Positions{})
.def("setVetoPhoton", .def("setVetoPhoton",
(void (Detector::*)(const int, const int, const int, (void (Detector::*)(const int, const int, const int,
const std::string &, sls::Positions)) & const std::string &, sls::Positions)) &
@ -954,6 +987,11 @@ void init_det(py::module &m) {
(void (Detector::*)(const int, const int, sls::Positions)) & (void (Detector::*)(const int, const int, sls::Positions)) &
Detector::setVetoReference, Detector::setVetoReference,
py::arg(), py::arg(), py::arg() = Positions{}) py::arg(), py::arg(), py::arg() = Positions{})
.def("setVetoFile",
(void (Detector::*)(const int, const std::string &,
sls::Positions)) &
Detector::setVetoFile,
py::arg(), py::arg(), py::arg() = Positions{})
.def("getBurstMode", .def("getBurstMode",
(Result<defs::burstMode>(Detector::*)(sls::Positions)) & (Result<defs::burstMode>(Detector::*)(sls::Positions)) &
Detector::getBurstMode, Detector::getBurstMode,
@ -962,6 +1000,20 @@ void init_det(py::module &m) {
(void (Detector::*)(defs::burstMode, sls::Positions)) & (void (Detector::*)(defs::burstMode, sls::Positions)) &
Detector::setBurstMode, Detector::setBurstMode,
py::arg(), py::arg() = Positions{}) py::arg(), py::arg() = Positions{})
.def("getCDSGain",
(Result<bool>(Detector::*)(sls::Positions) const) &
Detector::getCDSGain,
py::arg() = Positions{})
.def("setCDSGain",
(void (Detector::*)(bool, sls::Positions)) & Detector::setCDSGain,
py::arg(), py::arg() = Positions{})
.def("getFilter",
(Result<int>(Detector::*)(sls::Positions) const) &
Detector::getFilter,
py::arg() = Positions{})
.def("setFilter",
(void (Detector::*)(int, sls::Positions)) & Detector::setFilter,
py::arg(), py::arg() = Positions{})
.def("getCurrentSource", .def("getCurrentSource",
(Result<bool>(Detector::*)(sls::Positions) const) & (Result<bool>(Detector::*)(sls::Positions) const) &
Detector::getCurrentSource, Detector::getCurrentSource,
@ -987,6 +1039,24 @@ void init_det(py::module &m) {
(void (Detector::*)(const bool, sls::Positions)) & (void (Detector::*)(const bool, sls::Positions)) &
Detector::setVeto, Detector::setVeto,
py::arg(), py::arg() = Positions{}) py::arg(), py::arg() = Positions{})
.def("getADCConfiguration",
(Result<int>(Detector::*)(const int, const int, sls::Positions)
const) &
Detector::getADCConfiguration,
py::arg(), py::arg(), py::arg() = Positions{})
.def("setADCConfiguration",
(void (Detector::*)(const int, const int, const int,
sls::Positions)) &
Detector::setADCConfiguration,
py::arg(), py::arg(), py::arg(), py::arg() = Positions{})
.def("getBadChannels",
(void (Detector::*)(const std::string &, sls::Positions) const) &
Detector::getBadChannels,
py::arg(), py::arg() = Positions{})
.def("setBadChannels",
(void (Detector::*)(const std::string &, sls::Positions)) &
Detector::setBadChannels,
py::arg(), py::arg() = Positions{})
.def("getCounterMask", .def("getCounterMask",
(Result<uint32_t>(Detector::*)(sls::Positions) const) & (Result<uint32_t>(Detector::*)(sls::Positions) const) &
Detector::getCounterMask, Detector::getCounterMask,