Пример #1
0
// we try to change the state of the connection
void Model::serial_try_connect (bool connect)
{
  int result;
  if (connect) {
    m_signal_serial_state_changed.emit (SERIAL_CONNECTING);
    result = rr_dev_open (m_device, settings.Hardware.PortName.c_str(),
			  settings.Hardware.SerialSpeed);
    if(result < 0) {
      m_signal_serial_state_changed.emit (SERIAL_DISCONNECTED);
      Gtk::MessageDialog dialog("Failed to connect to device", false,
                                Gtk::MESSAGE_ERROR, Gtk::BUTTONS_CLOSE);
      dialog.set_secondary_text(strerror(errno));
      dialog.run();
    } else {
      rr_dev_reset (m_device);
      m_signal_serial_state_changed.emit (SERIAL_CONNECTED);
    }
  } else {
    m_signal_serial_state_changed.emit (SERIAL_DISCONNECTING);
    m_devconn.disconnect();
    rr_dev_close (m_device);
    m_devconn.disconnect();
    m_signal_serial_state_changed.emit (SERIAL_DISCONNECTED);

    if (m_printing) {
      Pause();
      g_warning ("FIXME: warn of dis-connect while printing !");
    }
  }
}
Пример #2
0
int
rr_dev_close (rr_dev dev)
{
  int result = serial_close(dev->fd);
  dev->fd = SERIAL_INVALID_INIT;
  rr_dev_reset (dev);
  return result;
}
Пример #3
0
// we try to change the state of the connection
void Printer::serial_try_connect (bool connect)
{

  int result;
  assert(m_model != NULL); // Need a model first

  if (connect) {
    void *cl = static_cast<void *>(this);
    // TODO: Configurable protocol, cache size
    device = rr_dev_create (RR_PROTO_FIVED,
			    m_model->settings.Hardware.ReceivingBufferSize,
			    rr_reply_fn, cl,
			    rr_more_fn, cl,
			    rr_error_fn, cl,
			    rr_wait_wr_fn, cl,
			    rr_log_fn, cl);

    signal_serial_state_changed.emit (SERIAL_CONNECTING);

    result = rr_dev_open (device,
			  m_model->settings.Hardware.PortName.c_str(),
			  m_model->settings.Hardware.SerialSpeed);

    if(result < 0) {
      signal_serial_state_changed.emit (SERIAL_DISCONNECTED);
      error (_("Failed to connect to device"),
             _("an error occured while connecting"));
    } else {
      rr_dev_reset (device);
      signal_serial_state_changed.emit (SERIAL_CONNECTED);
      UpdateTemperatureMonitor();
    }
  } else {
    if (printing) {
      error (_("Cannot disconnect"),
             _("printer is printing"));
      signal_serial_state_changed.emit (SERIAL_CONNECTED);
    }
    else {
      signal_serial_state_changed.emit (SERIAL_DISCONNECTING);
      devconn.disconnect();
      if (device)
	rr_dev_close (device);
      devconn.disconnect();
      signal_serial_state_changed.emit (SERIAL_DISCONNECTED);
      Pause();
      temp_timeout.disconnect();
      if (device)
	rr_dev_free (device);
      device = NULL;
    }
  }

  if (connect) {
    UpdateTemperatureMonitor();
  } else {
  }
}
Пример #4
0
void Printer::Stop()
{  
  if (device==NULL) return;

  set_printing (false);
  //assert(m_model != NULL);
  
  if (!rr_dev_is_connected (device)) {
    alert (_("Not connected to printer.\nCannot stop printing"));
    return;
  }
  rr_dev_reset (device);
}
Пример #5
0
void Model::Print()
{
  if (rr_dev_fd (m_device) < 0) {
    alert ("Not connected to printer.\nCannot start printing");
    return;
  }

  rr_dev_reset (m_device);

  delete (m_iter);
  m_iter = gcode.get_iter();

  m_printing = true;
  m_progress.start ("Printing", gcode.commands.size());
  rr_dev_set_paused (m_device, RR_PRIO_NORMAL, 0);
}
Пример #6
0
void Printer::Print()
{
  if (device==NULL) return;
  if (!rr_dev_is_connected (device)) {
    alert (_("Not connected to printer.\nCannot start printing"));
    return;
  }

  assert(m_model != NULL);

  delete (gcode_iter);
  gcode_iter = m_model->gcode.get_iter();
  set_printing (true);

  rr_dev_reset (device);
  rr_dev_set_paused (device, RR_PRIO_NORMAL, 0);
}
Пример #7
0
void Model::STOP()
{
  SendNow ("M112");
  rr_dev_reset (m_device);
}