// SPDX-License-Identifier: LGPL-3.0-or-other // Copyright (C) 2021 Contributors to the SLS Detector Package #include #include #include #include #include #include #include #include "ctbSlowAdcs.h" #include "ctbDefs.h" #include "sls/Detector.h" #include "sls/sls_detector_defs.h" using namespace std; ctbSlowAdc::ctbSlowAdc(TGGroupFrame *page, int idac, sls::Detector *det) : TGHorizontalFrame(page, 800,50) , id(idac), myDet(det) { TGHorizontalFrame *hframe=this; page->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1)); MapWindow(); char tit[100]; sprintf(tit, "SENSE %d:",idac-1000); dacsLabel= new TGLabel(hframe, tit);// new TGLabel(hframe, tit); hframe->AddFrame(dacsLabel,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5)); dacsLabel->MapWindow(); dacsLabel->SetTextJustify(kTextLeft); sprintf(tit, "xxx"); dacsValue= new TGLabel(hframe, tit); hframe->AddFrame( dacsValue,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5)); dacsValue->MapWindow(); dacsValue->SetTextJustify(kTextLeft); TGTextButton *b= new TGTextButton(hframe, "Update"); hframe->AddFrame( b,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5)); b->MapWindow(); b->SetTextJustify(kTextLeft); b->Connect("Clicked()","ctbSlowAdc",this,"getValue()"); } int ctbSlowAdc::setLabel(char *tit) { if(tit) dacsLabel->SetText(tit); return id; } string ctbSlowAdc::getLabel() { ostringstream line; line << dacsLabel->GetText() << endl; // line << "DAC" << dec << id << " " << dacsUnit->IsOn() << endl; return line.str(); } int ctbSlowAdc::getValue() { try { std::string s; // temp if (id == static_cast(slsDetectorDefs::SLOW_ADC_TEMP)) { int val = myDet->getTemperature(static_cast(id)).tsquash("Different values"); cout << "slow adc temp" << " " << val << endl; s = to_string(val) + " " + to_string(0x00b0) + "C";//�C dacsValue->SetText(s.c_str()); return val; } // mv else { int val = myDet->getSlowADC(static_cast(id)).tsquash("Different values"); cout << "slow adc " << id << " " << val << endl; s = to_string(val) + " mV"; dacsValue->SetText(s.c_str()); return val; } } CATCH_DISPLAY ("Could not get slow dac " + to_string(id) + ".", "ctbSlowAdc::getValue") return -1; } ctbSlowAdcs::ctbSlowAdcs(TGVerticalFrame *page, sls::Detector *det) : TGGroupFrame(page,"Sense",kVerticalFrame) , myDet(det){ SetTitlePos(TGGroupFrame::kLeft); page->AddFrame(this,new TGLayoutHints( kLHintsTop | kLHintsExpandX , 10,10,10,10)); MapWindow(); // cout << "window mapped " << endl; for (int idac=0; idacsetLabel((char*)"Temperature"); } int ctbSlowAdcs::setSlowAdcAlias(string line) { int is=-1, mv=0; char tit[100]; int narg=sscanf(line.c_str(),"SENSE%d %s %d",&is,tit,&mv); if (narg<2) return -1; if (is>=0 && issetLabel(tit); return is; } string ctbSlowAdcs::getSlowAdcAlias() { ostringstream line; for (int i=0; igetLabel() << endl; return line.str(); } string ctbSlowAdcs::getAdcParameters() { ostringstream line; for (int i=0; igetValue << endl; line << "adc:" << i << " " << adcs[i]->getValue() << endl; } line << "adc:-1" << adcs[NSLOWADCS]->getValue() << endl; return line.str(); } void ctbSlowAdcs::update() { for (int idac=0; idacgetValue(); } }