static int Main(string[] args) { bool shouldShowHelp = false; string robot_info_file = null; var options = new OptionSet { { "robot-info-file=", n => robot_info_file = n }, { "h|help", "show this message and exit", h => shouldShowHelp = h != null } }; List <string> extra; try { // parse the command line extra = options.Parse(args); } catch (OptionException e) { // output some error message Console.Write("MotomanHSCRobotRaconteurDriver: "); Console.WriteLine(e.Message); Console.WriteLine("Try `MotomanHSCRobotRaconteurDriver --help' for more information."); return(1); } if (shouldShowHelp) { Console.WriteLine("Usage: MotomanHSCRobotRaconteurDriver [Options+]"); Console.WriteLine(); Console.WriteLine("Options:"); options.WriteOptionDescriptions(Console.Out); return(0); } if (robot_info_file == null) { Console.WriteLine("error: robot-info-file must be specified"); return(1); } var robot_info = RobotInfoParser.LoadRobotInfoYamlWithIdentifierLocks(robot_info_file); using (robot_info.Item2) { using (var robot = new MotomanHSCRobot(robot_info.Item1)) { robot._start_robot(); using (var node_setup = new ServerNodeSetup("Motoman_robot", 58651, args)) { RobotRaconteurNode.s.RegisterService("robot", "com.robotraconteur.robotics.robot", robot); Console.WriteLine("Press enter to exit"); Console.ReadKey(); } } } return(0); }
static int Main(string[] args) { bool shouldShowHelp = false; string robot_info_file = null; bool wait_signal = false; string robot_name = null; var options = new OptionSet { { "robot-info-file=", n => robot_info_file = n }, { "robot-name=", "override the robot device name", n => robot_name = n }, { "h|help", "show this message and exit", h => shouldShowHelp = h != null }, { "wait-signal", "wait for POSIX sigint or sigkill to exit", n => wait_signal = n != null } }; List <string> extra; try { // parse the command line extra = options.Parse(args); } catch (OptionException e) { // output some error message Console.Write("ABBRobotRaconteurDriver: "); Console.WriteLine(e.Message); Console.WriteLine("Try `ABBRobotRaconteurDriver --help' for more information."); return(1); } if (shouldShowHelp) { Console.WriteLine("Usage: ABBRobotRaconteurDriver [Options+]"); Console.WriteLine(); Console.WriteLine("Options:"); options.WriteOptionDescriptions(Console.Out); return(0); } if (robot_info_file == null) { Console.WriteLine("error: robot-info-file must be specified"); return(1); } var robot_info = RobotInfoParser.LoadRobotInfoYamlWithIdentifierLocks(robot_info_file, robot_name); using (robot_info.Item2) { using (var robot = new ABBRobot(robot_info.Item1)) { robot._start_robot(); using (var node_setup = new ServerNodeSetup("ABB_robot", 58651, args)) { var service_ctx = RobotRaconteurNode.s.RegisterService("robot", "com.robotraconteur.robotics.robot", robot); service_ctx.SetServiceAttributes(RobotRaconteur.Companion.Util.AttributesUtil.GetDefaultServiceAtributesFromDeviceInfo(robot_info.Item1.device_info)); if (!wait_signal) { Console.WriteLine("Press enter to exit"); Console.ReadKey(); } else { UnixSignal[] signals = new UnixSignal[] { new UnixSignal(Mono.Unix.Native.Signum.SIGINT), new UnixSignal(Mono.Unix.Native.Signum.SIGTERM), }; Console.WriteLine("Press Ctrl-C to exit"); // block until a SIGINT or SIGTERM signal is generated. int which = UnixSignal.WaitAny(signals, -1); Console.WriteLine("Got a {0} signal, exiting", signals[which].Signum); } } } } return(0); }