示例#1
0
//---COLONNE LUMINEUSE---------------
int Init_Colonne_24V()
{
  int i,k1;

  if(port_24V_number==-1)
    {
      printf("24V port has not been initialized\n");
      return -1;
    }
  CPhidgetInterfaceKit_setOutputState(IFK2,port_24V_number,1);
  sleep(1);
  //verification que le output est bien passe a 1. Parfois il est necessaire
  //de faire plusieurs passage 0-1 pour s'en assurer

  CPhidgetInterfaceKit_getOutputState(IFK2,port_24V_number,&k1);
  if(k1==0)
    {
      for(i=0;i<4;i++)
	{
	  CPhidgetInterfaceKit_setOutputState(IFK2,port_24V_number,0);
	  sleep(1);
	  CPhidgetInterfaceKit_setOutputState(IFK2,port_24V_number,1);
	  sleep(1);
	  CPhidgetInterfaceKit_getOutputState(IFK2,port_24V_number,&k1);
	  if(k1==1)break;
	}
      if(i==4)
	{
	  printf("Cannot initiate 24V for light column\n");
	  status_24V=-1;
	  return -1;
	}
    }
  status_24V=1;
  return 1;
}
Wt::WContainerWidget* WidgetsInterfaceKit::CreateWidget()
{
	Wt::WContainerWidget* tab_container = new Wt::WContainerWidget();
  Wt::WVBoxLayout* vbox = new Wt::WVBoxLayout(tab_container);
	
	Wt::WGroupBox* spesific_box = new Wt::WGroupBox(Wt::WString::tr("PhidgetInterfaceKit"));
	vbox->addWidget(spesific_box);

  Wt::WHBoxLayout* hbox = new Wt::WHBoxLayout(spesific_box);
	Wt::WTable* table = new Wt::WTable();
	hbox->addWidget(table);

	table->columnAt(0)->setWidth(GetLeftColumnWidth());
	table->columnAt(1)->setWidth(Wt::WLength::Auto);

	int row = 0;
  int i, int_value;
	bool ratiometric = true;

	/* Ratiometric */
  table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("Ratiometric")));
  m_ratiometric_checkbox = new Wt::WCheckBox();
  table->elementAt(row++, 1)->addWidget(m_ratiometric_checkbox);
	m_ratiometric_checkbox->changed().connect(boost::bind(&WidgetsInterfaceKit::OnWtRatiometricStateChanged, this, m_ratiometric_checkbox));
  if (EPHIDGET_OK == CPhidgetInterfaceKit_getRatiometric(m_phidget->GetNativeHandle(), &int_value))
  {
		ratiometric = (PTRUE == int_value);
    m_ratiometric_checkbox->setChecked(ratiometric);
  }

  /* Sensors */
	if (EPHIDGET_OK == CPhidgetInterfaceKit_getSensorCount(m_phidget->GetNativeHandle(), &int_value))
	{
		m_sensor_widget_array_length = int_value;
		m_sensor_widget_array = new SensorWidget*[m_sensor_widget_array_length];

		for (i=0; i<m_sensor_widget_array_length; i++)
		{
			m_sensor_widget_array[i] = new SensorWidget(m_phidget, i, ratiometric);

			table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("SensorArgs").arg(i)));

      table->elementAt(row++, 1)->addWidget(m_sensor_widget_array[i]->CreateWidget());
		}
	}

	/* Input */
	if (EPHIDGET_OK == CPhidgetInterfaceKit_getInputCount(m_phidget->GetNativeHandle(), &int_value))
	{
		table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("Input")));

		Wt::WTable* input_table = new Wt::WTable();
		table->elementAt(row++, 1)->addWidget(input_table);
		
		m_input_checkbox_array_length = int_value;
		m_input_checkbox_array = new Wt::WCheckBox*[m_input_checkbox_array_length];

		for (i=0; i<m_input_checkbox_array_length; i++)
		{
			m_input_checkbox_array[i] = new Wt::WCheckBox();
			Wt::WTableCell* cell = input_table->elementAt(0, i);
			cell->addWidget(m_input_checkbox_array[i]);
			cell->setContentAlignment(Wt::AlignCenter|Wt::AlignMiddle);
			
			cell = input_table->elementAt(1, i);
			cell->addWidget(new Wt::WText(Wt::WString::tr("GeneralArg").arg(i)));
			cell->setContentAlignment(Wt::AlignCenter|Wt::AlignMiddle);

			int input_state;
			if (EPHIDGET_OK == CPhidgetInterfaceKit_getInputState(m_phidget->GetNativeHandle(), i, &input_state))
			{
				m_input_checkbox_array[i]->setChecked(PTRUE == input_state);
			}
			m_input_checkbox_array[i]->setEnabled(false);
		}
	}

	/* Output */
	if (EPHIDGET_OK == CPhidgetInterfaceKit_getOutputCount(m_phidget->GetNativeHandle(), &int_value))
	{
		table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("Output")));

		Wt::WTable* output_table = new Wt::WTable();
		table->elementAt(row++, 1)->addWidget(output_table);
		
		m_output_checkbox_array_length = int_value;
		m_output_checkbox_array = new Wt::WCheckBox*[m_output_checkbox_array_length];

		for (i=0; i<m_output_checkbox_array_length; i++)
		{
			m_output_checkbox_array[i] = new Wt::WCheckBox();
			m_output_checkbox_array[i]->changed().connect(boost::bind(&WidgetsInterfaceKit::OnWtOutputStateChanged, this, m_output_checkbox_array[i]));

			Wt::WTableCell* cell = output_table->elementAt(0, i);
			cell->addWidget(m_output_checkbox_array[i]);
			cell->setContentAlignment(Wt::AlignCenter|Wt::AlignMiddle);
			
			cell = output_table->elementAt(1, i);
			cell->addWidget(new Wt::WText(Wt::WString::tr("GeneralArg").arg(i)));
			cell->setContentAlignment(Wt::AlignCenter|Wt::AlignMiddle);

      int output_state;
      if (EPHIDGET_OK == CPhidgetInterfaceKit_getOutputState(m_phidget->GetNativeHandle(), i, &output_state))
      {
        m_output_checkbox_array[i]->setChecked(PTRUE == output_state);
      }
		}
	}

	Wt::WGroupBox* generic_box = new Wt::WGroupBox(Wt::WString::tr("Phidget (Common)"));
	vbox->addWidget(generic_box);

	generic_box->addWidget(WidgetsCommon::CreateWidget());

	return tab_container;
}