unsigned long GetToggleStatus(int channel, char* param) { init_caen(); int slot = 0; const unsigned short Chlist[1] = {channel}; unsigned long *answer = malloc(sizeof(unsigned long)); CAENHVRESULT ret = CAENHV_GetChParam(handle, slot, param, 1, Chlist, answer); return answer[0]; }
float GetFloatParameter(int channel, char* param) { init_caen(); int slot = 0; const unsigned short Chlist[1] = {channel}; float *answer = (float*)malloc(sizeof(float)); CAENHVRESULT ret = CAENHV_GetChParam(handle, slot, param, 1, Chlist, answer); return answer[0]; }
void PRadHVChannel::ReadVoltage() { locker.lock(); int err; CAENHVData hvData; for(size_t i = 0; i < crateList.size(); ++i) { hvData.config.crate = crateList[i].id; for(size_t j = 0; j < crateList[i].boardList.size(); ++j) { int size = crateList[i].boardList[j].nChan; float monVals[size], setVals[size]; unsigned int pwON[size]; char nameList[size][MAX_CH_NAME]; unsigned short list[size]; for(int k = 0; k < size; ++k) list[k] = k; err = CAENHV_GetChName(crateList[i].handle, crateList[i].boardList[j].slot, size, list, nameList); showError("HV Read Voltage", err); err = CAENHV_GetChParam(crateList[i].handle, crateList[i].boardList[j].slot, "Pw", size, list, pwON); showError("HV Read Voltage", err); err = CAENHV_GetChParam(crateList[i].handle, crateList[i].boardList[j].slot, "VMon", size, list, monVals); showError("HV Read Voltage", err); err = CAENHV_GetChParam(crateList[i].handle, crateList[i].boardList[j].slot, "V0Set", size, list, setVals); showError("HV Read Voltage", err); hvData.config.slot = (unsigned char)crateList[i].boardList[j].slot; for(int k = 0; k < size; ++k) { hvData.config.channel = (unsigned char)k; hvData.name = nameList[k]; hvData.ON = (bool)pwON[k]; hvData.Vmon = monVals[k]; hvData.Vset = setVals[k]; float diff = (hvData.ON)?(hvData.Vmon - hvData.Vset):0; if(diff > 10 || diff < -10) { cerr << "WARNING: voltage deviates from set value!" << endl << hvData << endl; } float limit = (nameList[k][0] == 'G')?1900:1300; if(hvData.Vmon > limit) { cerr << "WARNING: voltage exceeds safe limit!" << endl << hvData << endl; } myHandler->FeedData(hvData); } } } locker.unlock(); }