Commit 2a887290 authored by Locatelli's avatar Locatelli

Merge remote-tracking branch 'origin/V3.2_191' into ploty2

parents 9ee6e2ec 16565764
......@@ -144,7 +144,6 @@ ExperimentData::ExperimentData(const string& name) :
cycleName.init(this, SAVE, "cycleName");
year.init(this, SAVE, "year");
proposalId.init(this, SAVE, "proposalId");
proposalCode.init(this, SAVE, "proposalCode");
sampleIndex.init(this, SAVE, "sampleIndex");
......@@ -1474,10 +1473,7 @@ void ExperimentData::sendMailChangeOfProposal() {
return;
}
string proposal = proposalCode();
if (proposal == "") {
proposal = proposalId();
}
string proposal = experimentNumber();
string subject = "Proposal " + proposal + " started on " + instrumentName();
string content = "You received this email because your address is registered on the proposal.";
......
......@@ -197,13 +197,12 @@ public:
Property<std::string> day; //! Day property
Property<std::string> time; //! Day property
Property<int32> numor; //! Data numor property
Property<std::string> experimentNumber; //! Experiment number property name
Property<std::string> experimentNumber; //! Experiment number property name aka proposal code
Property<std::string> cycleId; // current cycle id (format YY + index)
Property<std::string> cycleName; // current cycle id (format YY + index)
Property<std::string> year; // current year (format YYYY)
Property<std::string> proposalId; // current proposal id
Property<std::string> proposalCode; // current proposal code
Property<std::string> instrumentId; //! Instrument Id property
......
......@@ -50,6 +50,10 @@ SampleForProposal::SampleForProposal(const string& name) : ExperimentController(
idCurrentSampleGen.init(this, SAVE, "idCurrentSampleGen");
proposalId.init(this, SAVE, "proposalId");
indiceCurrent.init(this, NOSAVE, "indiceCurrent");
SampleLabels.init(this, NOSAVE, "SampleLabels");
SampleValues.init(this, NOSAVE, "SampleValues");
// refSampleProposalID.init(this, SAVE, "refSampleProposalID");
// idCurrent.init(this, SAVE, "idCurrent");
......@@ -101,8 +105,7 @@ SampleForProposal::SampleForProposal(const string& name) : ExperimentController(
proposalId = 1;
m_a = 0;
// SampleRefLabels.resize(1);
// SampleRefValues.resize(1);
// for (int32 i = 0; i < 1 ; i++) {
// SampleRefLabels.update(i, " ( Id = None ) " );
// SampleRefValues.update(i, i );
......@@ -159,7 +162,7 @@ void SampleForProposal::refreshNbSamplesProperty(int32 value) throw (CannotSetVa
//throw CannotSetValue();
return;
}
cout << "refreshNbSamplesProperty " << value << endl;
id.resize(value);
sampleName.resize(value);
samplecomment.resize(value);
......@@ -175,7 +178,8 @@ void SampleForProposal::refreshNbSamplesProperty(int32 value) throw (CannotSetVa
// transition.resize(value);
idCurrentSampleGen.resize(value+1);
// if ( indiceCurrentDisplay() > value){
......@@ -183,7 +187,7 @@ void SampleForProposal::refreshNbSamplesProperty(int32 value) throw (CannotSetVa
// }
if (experimentData.isAssigned() ) {
//cout << "refreshNbSamplesProperty experimentData->proposalId().c_str() " << experimentData->proposalId() << endl;
cout << "refreshNbSamplesProperty experimentData->proposalId().c_str() " << experimentData->proposalId() << endl;
proposalId = lexical_cast<int32>(experimentData->proposalId().c_str());
int32 cal_id;
for (int32 ki = 0; ki < value; ki++) {
......@@ -199,6 +203,7 @@ void SampleForProposal::refreshNbSamplesProperty(int32 value) throw (CannotSetVa
}
void SampleForProposal::refreshsampleName(int32 index, const string& value ) {
cout << " refreshsampleName " << index << " index "<< value << endl;
updatelisteSampleRef(nbSamples());
}
......@@ -247,15 +252,39 @@ void SampleForProposal::updatelisteSampleRef(int32 new_nbSamples) {
SampleGenRefValues.update(i, i);
}
} else {
nbSamplesGen = 1;
nbSamplesGen = 3;
idCurrentSampleGen.resize(nbSamplesGen());
SampleGenRefValues.resize(nbSamplesGen());
SampleGenRefLabels.resize(nbSamplesGen());
for (int32 i = 0; i < nbSamplesGen(); i++) {
SampleGenRefLabels.update(0, " Fe203 ");
SampleGenRefValues.update(0, 0);
SampleGenRefLabels.update(1, " GaN ");
SampleGenRefValues.update(1, 1);
SampleGenRefLabels.update(2, " Al203 ");
SampleGenRefValues.update(2, 2);
/*for (int32 i = 0; i < nbSamplesGen(); i++) {
//cout << "updatelisteSampleRef02 i " << i << endl;
SampleGenRefLabels.update(i, " None ");
SampleGenRefValues.update(i, i);
}
}*/
SampleLabels.resize(nbSamplesGen());
SampleValues.resize(nbSamplesGen());
SampleLabels.update(0, " Id = 0 (Fe203- ferroelectric) " );
SampleValues.update(0, 0 );
SampleLabels.update(1, " Id = 1 (Fe203-nanocrystalline) " );
SampleValues.update(1, 1 );
SampleLabels.update(2, " Id = 2 (GaN-sapphire substrates)" );
SampleValues.update(2, 2 );
indiceCurrent.setEnumeratedValues(SampleValues);
indiceCurrent.setEnumeratedLabels(SampleLabels);
}
idCurrentSampleGen.setEnumeratedValues(SampleGenRefValues);
......
......@@ -129,6 +129,10 @@ public:
Property<int32> proposalId;
Property<int32> indiceCurrent;
DynamicProperty<std::string> SampleLabels; // Possible states
DynamicProperty<int32> SampleValues; // Possible state values
protected:
virtual void updateproposalId();
......
......@@ -12,14 +12,15 @@ sample_for_proposal.MainSample=Main sample
sample_for_proposal.sampleTable=Sample table description
sample_for_proposal.echALabel=NOP1
sample_for_proposal.echBLabel=NOP2
sample_for_proposal.echCLabel=NOP3
sample_for_proposal.echALabel=Fe203
sample_for_proposal.echBLabel=GaN
sample_for_proposal.echCLabel=Al203
sample_for_proposal.echAValue=0
sample_for_proposal.echBValue=1
sample_for_proposal.echCValue=2
sample_for_proposal.sampleTablePar1=Set Sample parameters
sample_for_proposal.setParaSample=ID sample
......
......@@ -34,6 +34,13 @@
<dynamic_property name="idCurrentSampleGen" size_property="nbSamples" type="int32">
</dynamic_property>
<property name="indiceCurrent" type="long">
</property>
<dynamic_property name="SampleValues" size_property="nbSamples" type="Long">
</dynamic_property>
<dynamic_property name="SampleLabels" size_property="nbSamples" type="String">
</dynamic_property>
<!--
<dynamic_property name="crossSection" size_property="nbSamples" type="float64" max_length="8">
......
......@@ -17,8 +17,9 @@
<label role="sample_for_proposal1" property="id" hAlignment="center"/>
<text role="sample_for_proposal1" property="sampleName" hAlignment="center"/>
<text role="sample_for_proposal1" property="samplecomment" hAlignment="right"/>
<combo role="sample_for_proposal1" property="idCurrentSampleGen" hAlignment="right" valuesAndLabels="sample_for_proposal.echA,sample_for_proposal.echB,sample_for_proposal.echC"/>
<!-- <combo role="sample_for_proposal1" property="idCurrentSampleGen" hAlignment="right" valuesAndLabels="sample_for_proposal.echA,sample_for_proposal.echB,sample_for_proposal.echC"/>
-->
<property_combo role="sample_for_proposal1" property="idCurrentSampleGen" Alignment="right"/>
</dynamic_composite>
</table_composite>
......
......@@ -2,7 +2,6 @@
<controller type="type_of_measure" role="type_of_measure1"/>
<number_of_lines nb_lines="3"/>
<property_combo role="type_of_measure1" property="typeOfMeasureIndex" prefix="type_of_measure.type_indexPrefix"/>
<newLine/>
<group title="type_of_measure.sampleBloc" border="false" >
<table_composite nbColumns="2" alignment="top_left">
......
......@@ -49,6 +49,22 @@ PumpCommon::PumpCommon(const std::string& name) {
cPercent.init(this, SAVE, "actual_chC", "wanted_chC", "ChC %");
dPercent.init(this, SAVE, "actual_chD", "wanted_chD", "ChD %");
// Mixing percents
flow1.init(this, SAVE, "actualf_ch1", "wantedf_ch1", "Ch1 f");
flow2.init(this, SAVE, "actualf_ch2", "wantedf_ch2", "Ch2 f");
flow3.init(this, SAVE, "actualf_ch3", "wantedf_ch3", "Ch3 f");
flow4.init(this, SAVE, "actualf_ch4", "wantedf_ch4", "Ch4 f");
flow5.init(this, SAVE, "actualf_ch5", "wantedf_ch5", "Ch5 f");
flow6.init(this, SAVE, "actualf_ch6", "wantedf_ch6", "Ch6 f");
channelStatus1.init(this, SAVE, "actual_ch1Status", "wanted_ch1Status", "Ch1");
channelStatus2.init(this, SAVE, "actual_ch2Status", "wanted_ch2Status", "Ch2");
channelStatus3.init(this, SAVE, "actual_ch3Status", "wanted_ch3Status", "Ch3");
channelStatus4.init(this, SAVE, "actual_ch4Status", "wanted_ch4Status", "Ch4");
channelStatus5.init(this, SAVE, "actual_ch5Status", "wanted_ch5Status", "Ch5");
channelStatus6.init(this, SAVE, "actual_ch6Status", "wanted_ch6Status", "Ch6");
// Init command list
initCommand(driver::INIT_COMMAND);
initCommand(driver::READ_COMMAND);
......
......@@ -86,6 +86,22 @@ public:
Property<float64, SETPOINT> bPercent;
Property<float64, SETPOINT> cPercent;
Property<float64, SETPOINT> dPercent;
//Channel status
Property<float64, SETPOINT> flow1;
Property<float64, SETPOINT> flow2;
Property<float64, SETPOINT> flow3;
Property<float64, SETPOINT> flow4;
Property<float64, SETPOINT> flow5;
Property<float64, SETPOINT> flow6;
//Channel statuse
Property<float64, SETPOINT> channelStatus1;
Property<float64, SETPOINT> channelStatus2;
Property<float64, SETPOINT> channelStatus3;
Property<float64, SETPOINT> channelStatus4;
Property<float64, SETPOINT> channelStatus5;
Property<float64, SETPOINT> channelStatus6;
};
}
......
/*
* Nomad Instrument Control Software
*
* Copyright 2011 Institut Laue-Langevin
*
* Licensed under the EUPL, Version 1.1 only (the "License");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://joinup.ec.europa.eu/software/page/eupl
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the Licence is distributed on an "AS IS" basis,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
*/
#ifndef HUMIDITYCHAMBERV5_H
#define HUMIDITYCHAMBERV5_H
#include <Controller.h>
#include <controllers/common/pump/PumpCommon.h>
//#include "drivers/ill/sane/humiditychamberV5/HumidityChamberV5Driver.h"
#include <drivers/mks/mks946/Mks946PumpDriver.h>
namespace humidity {
/*!
* The HumidityChamber class is the specific implementation of the
* ExperimentController
*/
class HumidityChamberV5: public ExperimentController, public controller::Stoppable {
public:
//! Type of controller
static const std::string TYPE;
static const int32 CLOSE_CH;
static const int32 OPEN_CH;
/*!
* \brief Constructor
* \param[in] name the name of the experiment controller
*/
HumidityChamberV5(const std::string& name);
/*!
* \brief Destructor
*/
virtual ~HumidityChamberV5();
/*!
* Properties
*/
Property<bool> automatic;
Property<int32> nbChannels;
Property<float64, SETPOINT> total_flow;
Property<float64, SETPOINT> humid_content;
Property<float64, SETPOINT> humidity;
Property<float64, SETPOINT> temperature;
Property<float64, SETPOINT> bathReservoirTemperature;
Property<float64, SETPOINT> bathSampleTemperature;
/*//Channel status
Property<float64, SETPOINT> flow1;
Property<float64, SETPOINT> flow2;
Property<float64, SETPOINT> flow3;
Property<float64, SETPOINT> flow4;
Property<float64, SETPOINT> flow5;
Property<float64, SETPOINT> flow6;
//Channel statuse
Property<float64, SETPOINT> channelStatus1;
Property<float64, SETPOINT> channelStatus2;
Property<float64, SETPOINT> channelStatus3;
Property<float64, SETPOINT> channelStatus4;
Property<float64, SETPOINT> channelStatus5;
Property<float64, SETPOINT> channelStatus6;*/
DynamicProperty<float64> wantedFlows;
DynamicProperty<float64> actualFlows;
DynamicProperty<float64> wantedStatus;
DynamicProperty<float64> actualStatus;
DynamicProperty<float64> minFlows;
DynamicProperty<float64> maxFlows;
Property<float64> tolerance;
// Time out
Property<bool> useTimeout;
Property<std::string> timeoutType;
Property<int32> timeout;
// Stabilisation
Property<bool> useStabilisation;
Property<std::string> stabilisationType;
Property<int32> stabilisation;
protected:
virtual void postConfiguration();
DriverPtr<pump::PumpCommon> m_driverPump;
private:
virtual void start();
virtual void stop();
void setTotalFlow(float64 time) throw (CannotSetValue);
void setHumidContent(float64 time) throw (CannotSetValue);
int32 setTime(int32 aTime, const std::string& aType) const;
void setTimeType(Property<int32>* prop, const std::string& type) throw (CannotSetValue);
void setTimeProperty(int32 time) throw (CannotSetValue);
void updateActualHumidity();
void set_humid_flow( float64 total_flow, float64 humid_content ) ;
/*
void updateActualTemperature();
void updateActualBathReservoirTemperature();
void updateActualBathSampleTemperature();
void updateSampleTopTemperature();
void updateSampleBottomTemperature();
void updateReservoirTemperature();
void updateCalculatedHumidity();
*/
static const std::string HOUR;
static const std::string MINUTE;
static const std::string SECOND;
};
}
#endif //HUMIDITYCHAMBER_H
......@@ -4,5 +4,6 @@
<controller class="humidity::HumidityChamberV4"/>
<controller class="humidity::OldHumidityChamber"/>
<controller class="humidity::ReadHumidityController"/>
<controller class="humidity::HumidityChamberV5"/>
</module>
humidity_chamber_v5.automaticPrefix=Auto
humidity_chamber_v5.automaticCheckedValue=true
humidity_chamber_v5.automaticUncheckedValue=false
humidity_chamber_v5.wanted_temperaturePrefix=Wanted temperature
humidity_chamber_v5.wanted_humidityPrefix=Wanted humidity
humidity_chamber_v5.wanted_bath_reservoir_temperaturePrefix=Wanted reservoir temp.
humidity_chamber_v5.wanted_bath_sample_temperaturePrefix=Wanted sample temp.
humidity_chamber_v5.timeoutPrefix=Time Out
humidity_chamber_v5.stabilisationPrefix=Stabilisation
humidity_chamber_v5.timeoutCheckedValue=true
humidity_chamber_v5.timeoutUncheckedValue=false
humidity_chamber_v5.stabilisationCheckedValue=true
humidity_chamber_v5.stabilisationUncheckedValue=false
humidity_chamber_v5.hValue=h
humidity_chamber_v5.hLabel=h
humidity_chamber_v5.mValue=m
humidity_chamber_v5.mLabel=m
humidity_chamber_v5.sValue=s
humidity_chamber_v5.sLabel=s
humidity_chamber_v5.sample_top_temperaturePrefix=Sample Top temperature
humidity_chamber_v5.sample_bottom_temperaturePrefix=Sample Bottom temperature
humidity_chamber_v5.reservoir_temperaturePrefix=Reservoir temperature
humidity_chamber_v5.calculated_humidityPrefix=Calculated humidity
humidity_chamber_v5.degreeCelsius=~degreeC
humidity_chamber_v5.percent=%
humidity_chamber_v5.wanted__total_flowPrefix=Total Flow
humidity_chamber_v5.wanted_humid_contentPrefix=Humidity Content
humidity_chamber_v5.ratio=(0..1)
humidity_chamber_v5.sccm=sccm
humidity_chamber_v5.MinFlowPrefix=Min Flow
humidity_chamber_v5.MaxFlowPrefix=Max Flow
humidity_chamber_v5.MixingPercents=Mixing Percents
humidity_chamber_v5.ChannelST=Status(0 close 1 open)
humidity_chamber_v5.title1=Debug (Wanted values)
\ No newline at end of file
<plugin>
<controller type="humidity_chamber_v5" role="humidity_chamber_v51"/>
<number_of_lines nb_lines="3"/>
<!-- <property_switcher role="humidity_chamber_v51" property="automatic" switcher_key="humidity_chamber_v5.automaticSwitcher"/>
<property_switcher role="humidity_chamber_v51" property="use_timeout" switcher_key="humidity_chamber_v5.timeoutSwitcher"/>
<property_switcher role="humidity_chamber_v51" property="use_stabilisation" switcher_key="humidity_chamber_v5.stabilisationSwitcher"/>
<check role="humidity_chamber_v51" property="automatic" prefix="humidity_chamber_v5.automaticPrefix" checkBoxValues="humidity_chamber_v5.automatic"/>
<switchable_composite switcher_key="humidity_chamber_v5.automaticSwitcher" switch_values="true">
<text role="humidity_chamber_v51" property="wanted_temperature" prefix="humidity_chamber_v5.wanted_temperaturePrefix" suffix="humidity_chamber_v5.degreeCelsius"/>
<text role="humidity_chamber_v51" property="wanted_humidity" prefix="humidity_chamber_v5.wanted_humidityPrefix" suffix="humidity_chamber_v5.percent"/>
</switchable_composite>
<switchable_composite switcher_key="humidity_chamber_v5.automaticSwitcher" switch_values="false">
<text role="humidity_chamber_v51" property="wanted_bath_reservoir_temperature" prefix="humidity_chamber_v5.wanted_bath_reservoir_temperaturePrefix" suffix="humidity_chamber_v5.degreeCelsius"/>
<text role="humidity_chamber_v51" property="wanted_bath_sample_temperature" prefix="humidity_chamber_v5.wanted_bath_sample_temperaturePrefix" suffix="humidity_chamber_v5.degreeCelsius"/>
</switchable_composite>
<text role="humidity_chamber_v51" property="tolerance" prefix="humidity_chamber_v5.tolerancePrefix" suffix="humidity_chamber_v5.degreeCelsius"/>
<newLine/>
<switchable_composite switcher_key="humidity_chamber_v5.automaticSwitcher" switch_values="false">
<text role="humidity_chamber_v51" property="wanted_gonio_temperature" prefix="humidity_chamber_v5.wanted_gonio_temperaturePrefix" suffix="humidity_chamber_v5.degreeCelsius"/>
<check role="humidity_chamber_v51" property="gonio_heater" prefix="humidity_chamber_v5.gonio_heaterPrefix" checkBoxValues="humidity_chamber_v5.gonio_heater"/>
</switchable_composite>
<newLine/>
<check role="humidity_chamber_v51" property="use_timeout" prefix="humidity_chamber_v5.timeoutPrefix" checkBoxValues="humidity_chamber_v5.timeout"/>
<switchable_composite switcher_key="humidity_chamber_v5.timeoutSwitcher" switch_values="true">
<text role="humidity_chamber_v51" property="timeout" spaceBefore="false"/>
<radio role="humidity_chamber_v51" property="timeout_type" valuesAndLabels="humidity_chamber_v5.h,humidity_chamber_v5.m,humidity_chamber_v5.s" spaceBefore="false"/>
</switchable_composite>
<check role="humidity_chamber_v51" property="use_stabilisation" prefix="humidity_chamber_v5.stabilisationPrefix" checkBoxValues="humidity_chamber_v5.stabilisation"/>
<switchable_composite switcher_key="humidity_chamber_v5.stabilisationSwitcher" switch_values="true">
<text role="humidity_chamber_v51" property="stabilisation" spaceBefore="false"/>
<radio role="humidity_chamber_v51" property="stabilisation_type" valuesAndLabels="humidity_chamber_v5.h,humidity_chamber_v5.m,humidity_chamber_v5.s" spaceBefore="false"/>
</switchable_composite>
-->
</plugin>
<controller_plugin_config type="humidity_chamber_v5">
<image key="HUMIDITY"/>
<settings view="humidity_chamber_v5View.xml"/>
<command view="humidity_chamber_v5CommandView.xml" backgroundable="true"/>
</controller_plugin_config>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<controller type="humidity_chamber_v5">
<property name="actual_total_flow" type="float64" max_length="6">
<decimal_format nb_decimal_places="2" />
</property>
<property name="wanted_total_flow" type="float64" max_length="6">
<decimal_format nb_decimal_places="2" />
</property>
<property name="actual_humid_content" type="float64" max_length="6">
<decimal_format nb_decimal_places="2" />
</property>
<property name="wanted_humid_content" type="float64" max_length="6">
<decimal_format nb_decimal_places="2" />
</property>
<property name="automatic" type="boolean">
</property>
<property name="actual_humidity" type="float64" max_length="5">
<decimal_format nb_decimal_places="1"/>
</property>
<property name="wanted_humidity" type="float64" max_length="5">
<decimal_format nb_decimal_places="1"/>
</property>
<property name="actual_temperature" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
</property>
<property name="wanted_temperature" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
</property>
<dynamic_property name="minFlows" size_property="nbChannels" type="Double" max_length="6">
<decimal_format nb_decimal_places="2"/>
</dynamic_property>
<dynamic_property name="maxFlows" size_property="nbChannels" type="Double" max_length="6">
<decimal_format nb_decimal_places="2"/>
</dynamic_property>
<dynamic_property name="wantedFlows" size_property="nbChannels" type="Double" max_length="6">
<decimal_format nb_decimal_places="2"/>
</dynamic_property>
<dynamic_property name="actualFlows" size_property="nbChannels" type="Double" max_length="6">
<decimal_format nb_decimal_places="2"/>
</dynamic_property>
<dynamic_property name="wantedStatus" size_property="nbChannels" type="Double" max_length="6">
<decimal_format nb_decimal_places="2"/>
</dynamic_property>
<dynamic_property name="actualStatus" size_property="nbChannels" type="Double" max_length="6">
<decimal_format nb_decimal_places="2"/>
</dynamic_property>
<property name="actual_bath_reservoir_temperature" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
</property>
<property name="wanted_bath_reservoir_temperature" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
</property>
<property name="actual_bath_sample_temperature" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
</property>
<property name="wanted_bath_sample_temperature" type="float64" max_length="6">
<decimal_format nb_decimal_places="2"/>
</property>
<property name="tolerance" type="float64" max_length="5">
<decimal_format nb_decimal_places="2"/>
</property>
<property name="use_timeout" type="Boolean">
</property>
<property name="timeout" type="int32" max_length="6">
<strictly_positive/>
</property>
<property name="timeout_type" type="String">
<specific_values values="h,m,s"/>
</property>
<property name="use_stabilisation" type="Boolean">
</property>
<property name="stabilisation" type="int32" max_length="6">
<strictly_positive/>
</property>
<property name="stabilisation_type" type="String">
<specific_values values="h,m,s"/>
</property>
</controller>
<plugin>
<controller type="humidity_chamber_v5" role="humidity_chamber_v51"/>
<property_switcher role="humidity_chamber_v51" property="automatic" switcher_key="humidity_chamber_v5.automaticSwitcher"/>
<property_switcher role="humidity_chamber_v51" property="use_timeout" switcher_key="humidity_chamber_v5.timeoutSwitcher"/>
<property_switcher role="humidity_chamber_v51" property="use_stabilisation" switcher_key="humidity_chamber_v5.stabilisationSwitcher"/>
<text role="humidity_chamber_v51" property="wanted_total_flow" prefix="humidity_chamber_v5.wanted__total_flowPrefix" suffix="humidity_chamber_v5.sccm"/>
<text role="humidity_chamber_v51" property="wanted_humid_content" prefix="humidity_chamber_v5.wanted_humid_contentPrefix" suffix="humidity_chamber_v5.ratio"/>
<newLine/>
<group title="humidity_chamber_v5.title1" isVertical="true">
<table_composite nbColumns="2">
<simple_label prefix="humidity_chamber_v5.MixingPercents" />
<simple_label prefix="humidity_chamber_v5.ChannelST" />
<dynamic_composite role="humidity_chamber_v51" properties="wantedFlows,wantedStatus">
<text role="humidity_chamber_v51" property="wantedFlows" />
<label role="humidity_chamber_v51" property="wantedStatus" />
</dynamic_composite>
</table_composite>
</group>
<!-- <check role="humidity_chamber_v51" property="automatic" prefix="humidity_chamber_v5.automaticPrefix" checkBoxValues="humidity_chamber_v5.automatic"/>
<newLine/> -->
<!-- <switchable_composite switcher_key="humidity_chamber_v5.automaticSwitcher" switch_values="true">
<text role="humidity_chamber_v51" property="wanted_temperature" prefix="humidity_chamber_v5.wanted_temperaturePrefix" suffix="humidity_chamber_v5.degreeCelsius"/>
<newLine/>
<text role="humidity_chamber_v51" property="wanted_humidity" prefix="humidity_chamber_v5.wanted_humidityPrefix" suffix="HumidityChamberV4Driver.percent"/>
</switchable_composite> -->
<!-- <switchable_composite switcher_key="humidity_chamber_v5.automaticSwitcher" switch_values="false">
<text role="humidity_chamber_v51" property="wanted_bath_reservoir_temperature" prefix="humidity_chamber_v5.wanted_bath_reservoir_temperaturePrefix" suffix="humidity_chamber_v5.degreeCelsius"/>
<newLine/>
<text role="humidity_chamber_v51" property="wanted_bath_sample_temperature" prefix="humidity_chamber_v5.wanted_bath_sample_temperaturePrefix" suffix="humidity_chamber_v5.degreeCelsius"/>
<newLine/>
<text role="humidity_chamber_v51" property="wanted_gonio_temperature" prefix="humidity_chamber_v5.wanted_gonio_temperaturePrefix" suffix="humidity_chamber_v5.degreeCelsius"/>
<newLine/>
<check role="humidity_chamber_v51" property="gonio_heater" prefix="humidity_chamber_v5.gonio_heaterPrefix" checkBoxValues="humidity_chamber_v5.gonio_heater"/>
</switchable_composite>
<newLine/>
<text role="humidity_chamber_v51" property="tolerance" prefix="humidity_chamber_v5.tolerancePrefix" suffix="humidity_chamber_v5.degreeCelsius"/>
<newLine/>
-->
<check role="humidity_chamber_v51" property="use_timeout" prefix="humidity_chamber_v5.timeoutPrefix" checkBoxValues="humidity_chamber_v5.timeout"/>
<switchable_composite switcher_key="humidity_chamber_v5.timeoutSwitcher" switch_values="true">
<text role="humidity_chamber_v51" property="timeout" spaceBefore="false"/>
<radio role="humidity_chamber_v51"