class UR::Dash

Public Class Methods

new(host, logger=Logger.new(STDOUT,level: :INFO)) click to toggle source
# File lib/dashboard.rb, line 48
def initialize(host, logger=Logger.new(STDOUT,level: :INFO))
  host = '//' + host if host !~ /\/\//
  uri = URI::parse(host)
  @logger = logger
  @hostname = uri.host
  @port = uri.port.nil? ? 29999 : uri.port
  @conn_state = ConnectionState::DISCONNECTED
  @sock = nil
end

Public Instance Methods

add_to_log(message) click to toggle source
# File lib/dashboard.rb, line 189
def add_to_log(message)
  @sock.write ("addToLog " + message.to_s + "\n")
  line = @sock.gets.strip
  if line.match(/^Added log message/)
    @logger.debug line
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Dashboard server down or not in Remote Mode')
  end
end
break_release() click to toggle source
# File lib/dashboard.rb, line 284
def break_release
  @sock.write("brake release\n")
  line = @sock.gets.strip
  if line.match(/^Brake/)
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant release breaks. Dashboard server down or not in Remote Mode')
  end
end
clear_operation_mode() click to toggle source
# File lib/dashboard.rb, line 248
def clear_operation_mode
  @sock.write("clear operational mode\n")
  line = @sock.gets.strip
  if line.match(/^operational/)
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant clear operation mode. Dashboard server down or not in Remote Mode')
  end
end
close_popupmessage() click to toggle source
# File lib/dashboard.rb, line 184
def close_popupmessage
  @sock.write ("close popup\n")
  @logger.debug @sock.gets.strip
end
close_safety_popup() click to toggle source
# File lib/dashboard.rb, line 315
def close_safety_popup
  @sock.write("close safety popup\n")
  line = @sock.gets.strip
  if line.match(/^closing/)
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant close safety popup. Dashboard server down or not in Remote Mode')
  end
end
connect() click to toggle source
# File lib/dashboard.rb, line 58
def connect
  return if @sock
  @sock = Socket.new Socket::AF_INET, Socket::SOCK_STREAM
  @sock.setsockopt Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1
  @sock = TCPSocket.new(@hostname, @port)
  @conn_state = ConnectionState::CONNECTED
  @logger.info @sock.gets.strip
  self
end
connected?() click to toggle source
# File lib/dashboard.rb, line 68
def connected?
  @conn_state != ConnectionState::DISCONNECTED
end
disconnect() click to toggle source
# File lib/dashboard.rb, line 72
def disconnect
  if @sock
    @sock.close
    @sock = nil
    @conn_state = ConnectionState::DISCONNECTED
    @logger.info "Connection closed " + @hostname + ":" + @port.to_s
  end
end
get_loaded_program() click to toggle source
# File lib/dashboard.rb, line 162
def get_loaded_program
  begin
    @sock.write ("get loaded program\n")
    line = @sock.gets.strip
  rescue
    raise UR::Dash::Reconnect.new('Loaded program can not be got. Dashboard server down or not in Remote Mode')
  end
  @logger.debug line
  if line.match(/^Loaded program:\s(.+)/)
    $1.strip
  elsif line.match(/^No program loaded/)
    nil
  else
    raise UR::Dash::Reconnect.new('Loaded program can not be got. Dashboard server down or not in Remote Mode')
  end
end
get_operational_mode() click to toggle source
# File lib/dashboard.rb, line 354
def get_operational_mode
  @sock.write("get operational mode\n")
  line = @sock.gets.strip
  if line == "MANUAL" || line == "AUTOMATIC"
    @logger.debug line
    line
  elsif line == "NONE"
    @logger.warn'No password set, so no modes variable is available'
    nil
  elsif line.match(/^could not understand/)
    @logger.warn'Could not execute get_operational_mode: Please upgrade to current version'
    nil
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant get operational mode. Dashboard server down or not in Remote Mode')
  end
end
get_polyscope_version() click to toggle source
# File lib/dashboard.rb, line 219
def get_polyscope_version
  @sock.write("PolyscopeVersion\n")
  line = @sock.gets.strip
  @logger.debug line
  line
end
get_program_state() click to toggle source
# File lib/dashboard.rb, line 212
def get_program_state
  @sock.write("programState\n")
  line = @sock.gets.strip
  @logger.debug line
  line
end
get_robot_model() click to toggle source
# File lib/dashboard.rb, line 402
def get_robot_model
  @sock.write("get robot model\n")
  line = @sock.gets.strip
  if line.match(/^could not understand/)
    @logger.warn'Could not execute get_robot_model: Please upgrade to current version'
    nil
  elsif line.match(/^UR/)
    @logger.debug line
    line
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant get robot model. Dashboard server down maybe down or not in Remote Mode')
  end
end
get_robotmode() click to toggle source
# File lib/dashboard.rb, line 155
def get_robotmode
  @sock.write("robotmode\n")
  line = @sock.gets.strip
  @logger.debug line
  result = $1.strip if line.match(/^Robotmode:\s(.+)/)
end
get_safety_mode() click to toggle source
# File lib/dashboard.rb, line 296
def get_safety_mode
  @sock.write("safetymode\n")
  line = @sock.gets.strip
  @logger.debug line
  result = $1.strip if line.match(/^Safetymode:\s(.+)/)
end
get_serial_number() click to toggle source
# File lib/dashboard.rb, line 387
def get_serial_number
  @sock.write("get serial number\n")
  line = @sock.gets.strip
  if line.match(/^could not understand/)
    @logger.warn'Could not execute get_serial_number: Please upgrade to current version'
    nil
  elsif line.match(/^\d+$/)
    @logger.debug line
    line
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant get serial number. Dashboard server down maybe down or not in Remote Mode')
  end
end
is_in_remote_control() click to toggle source
# File lib/dashboard.rb, line 372
def is_in_remote_control
  @sock.write("is in remote control\n")
  line = @sock.gets.strip
  if line.match(/^could not understand/)
    @logger.warn'Could not execute is_in_remote_control: Please upgrade to current version'
    nil
  elsif line == 'true' || line == 'false'
    @logger.debug line
    line == 'true'
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant determine if robot is in remote control mode. Dashboard server down maybe down')
  end
end
is_program_saved?() click to toggle source
# File lib/dashboard.rb, line 200
def is_program_saved?
  @sock.write("isProgramSaved\n")
  line = @sock.gets.strip
  if line == "True"
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant determine if program is saved. Dashboard server down or not in Remote Mode')
  end
end
load_installation() click to toggle source
# File lib/dashboard.rb, line 327
def load_installation
  @sock.write("load installation\n")
  line = @sock.gets.strip
  if line.match(/^Loading/)
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant load installation. Dashboard server down or not in Remote Mode')
  end
end
load_program(programname) click to toggle source
# File lib/dashboard.rb, line 81
def load_program (programname)
  @logger.debug "loadprogram"
  send = "load " + programname + ".urp\n"
  @sock.write send
  line = @sock.gets.strip
  if line.match(/^L/)
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Dashboard server down or not in Remote Mode')
  end
end
open_popupmessage(message) click to toggle source
# File lib/dashboard.rb, line 179
def open_popupmessage(message)
  @sock.write ("popup " + message.to_s + "\n")
  @logger.debug @sock.gets.strip
end
pause_program() click to toggle source
# File lib/dashboard.rb, line 119
def pause_program
  @sock.write("pause\n")
  line = @sock.gets.strip
  if line == "Pausing program"
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Dashboard server down or not in Remote Mode')
  end
end
power_off() click to toggle source
# File lib/dashboard.rb, line 272
def power_off
  @sock.write("power off\n")
  line = @sock.gets.strip
  if line.match(/^Powering/)
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant power off. Dashboard server down or not in Remote Mode')
  end
end
power_on() click to toggle source
# File lib/dashboard.rb, line 260
def power_on
  @sock.write("power on\n")
  line = @sock.gets.strip
  if line.match(/^Powering/)
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant power on. Dashboard server down or not in Remote Mode')
  end
end
restart_safety() click to toggle source
# File lib/dashboard.rb, line 339
def restart_safety
  @sock.write("restart safety\n")
  line = @sock.gets.strip
  if line.match(/^Brake/)
    @logger.debug line
    true
  elsif line.match(/^could not understand/)
    @logger.warn'Could not execute restart_safety: Please upgrade to current version'
    nil
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant restart safety. Dashboard server down or not in Remote Mode')
  end
end
running?() click to toggle source
# File lib/dashboard.rb, line 143
def running?
  @sock.write("running\n")
  line = @sock.gets.strip
  if line == "Program running: True"
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Dashboard server down or not in Remote Mode')
  end
end
set_operation_mode_auto() click to toggle source
# File lib/dashboard.rb, line 237
def set_operation_mode_auto
  @sock.write("set operational mode automatic\n")
  line = @sock.gets.strip
  if line.match(/^S/)
    @logger.debug line
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant set operation mode automatic. Dashboard server down or not in Remote Mode')
  end
end
set_operation_mode_manual() click to toggle source
# File lib/dashboard.rb, line 226
def set_operation_mode_manual
  @sock.write("set operational mode manual\n")
  line = @sock.gets.strip
  if line.match(/^S/)
    @logger.debug line
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant set operation mode manual. Dashboard server down or not in Remote Mode')
  end
end
shutdown() click to toggle source
# File lib/dashboard.rb, line 131
def shutdown
  @sock.write("shutdown\n")
  line = @sock.gets.strip
  if line == "Shutting down"
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Dashboard server down or not in Remote Mode')
  end
end
start_program() click to toggle source
# File lib/dashboard.rb, line 95
def start_program
  @sock.write("play\n")
  line = @sock.gets.strip
  if line == "Starting program"
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Dashboard server down or not in Remote Mode')
  end
end
stop_program() click to toggle source
# File lib/dashboard.rb, line 107
def stop_program
  @sock.write("stop\n")
  line = @sock.gets.strip
  if line == "Stopped"
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Dashboard server down or not in Remote Mode')
  end
end
unlock_protective_stop() click to toggle source
# File lib/dashboard.rb, line 303
def unlock_protective_stop
  @sock.write("unlock protective stop\n")
  line = @sock.gets.strip
  if line.match(/^Protective/)
    @logger.debug line
    true
  else
    @logger.error line
    raise UR::Dash::Reconnect.new('Cant unlock protective stop. Dashboard server down or not in Remote Mode')
  end
end