예제 #1
0
        public static void Main(string[] args)
        {
            //Create instance of RCL class which handles functions from rcl.h
            //RCL implements IDisposable so the using statement makes sure rcl_shutdown will be called after usages
            using (RCL rcl = new RCL()) {
                //Initialise RCL with default allocator
                rcl.Init(args);

                //Create an executor that will task our node
                Executor demoExecutor = new SingleThreadedExecutor();
                //Let the executor task all nodes with the given timespan
                demoExecutor.Spin(new TimeSpan(0, 0, 0, 0, 10));
                //Create a Node
                using (Node testNode = new Node("BasicNodeExample")) {
                    //Add node to executor
                    demoExecutor.AddNode(testNode);

                    //Now we're creating a publisher with the Dummy message
                    //TODO show alternative to Node.CreatePublisher<T>
                    using (Publisher <cs_msgs.msg.Dummy> testPublisher = testNode.CreatePublisher <cs_msgs.msg.Dummy> ("TestTopic")) {
                        //Create a message
                        using (cs_msgs.msg.Dummy testMsg = new cs_msgs.msg.Dummy()) {
                            //Fill the message fields
                            testMsg.thisafloat32 = 0.4f;
                            //Fill a string
                            testMsg.thisisastring = "TestString";
                            //Fill an array
                            testMsg.thisafloat32array = (new float[] { 1.3f, 100000.4f });
                            //Use a nested type
                            testMsg.thisisatime.sec = 100;
                            //And now publish the message
                            testPublisher.Publish(testMsg);
                            //Free unmanaged memory
                        }
                    }
                }
                //Remember to stop the executor - you could start it again afterwards
                demoExecutor.Cancel();
            }
            //rcl_shutdown gets called automatically
        }
예제 #2
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Init RCL");

            using (RCL rcl = new RCL()) {
                rcl.Init(args);


                Console.WriteLine("Creating node");
                using (Node test_node = new Node("test_node")) {
                    Console.WriteLine("Creating test publisher");
                    using (Publisher <cs_msgs.msg.Dummy> test_pub = new Publisher <cs_msgs.msg.Dummy> (test_node, "TestTopic", rmw_qos_profile_t.rmw_qos_profile_sensor_data)) {
                        Console.WriteLine("Creating test subscription");
                        Subscription <cs_msgs.msg.Dummy> test_subscription = test_node.CreateSubscription <cs_msgs.msg.Dummy> ("TestTopic", rmw_qos_profile_t.rmw_qos_profile_sensor_data);
                        test_subscription.MessageRecieved += (object sender, MessageRecievedEventArgs <cs_msgs.msg.Dummy> e) => {
                            Console.WriteLine("Recieved message on test topic: ");
                            foreach (var item in e.Message.GetType().GetProperties())
                            {
                                Console.Write(item.Name + "      :" + item.GetValue(e.Message));
                                Console.WriteLine();
                            }
                            Console.Write("Float32 Array: ");
                            foreach (var arritem in e.Message.thisafloat32array)
                            {
                                Console.Write(arritem + " ,");
                            }
                            Console.WriteLine();

                            Console.Write("Double Array: ");
                            foreach (var arritem in e.Message.thisisfloat64array)
                            {
                                Console.Write(arritem + " ,");
                            }
                            Console.WriteLine();

                            Console.Write("int8 Array: ");
                            foreach (var arritem in e.Message.thisisaint8array)
                            {
                                Console.Write(arritem + " ,");
                            }
                            Console.WriteLine();

                            Console.Write("string Array: ");
                            foreach (var arritem in e.Message.thisisastringarray)
                            {
                                Console.WriteLine(arritem + " ,");
                            }
                            Console.WriteLine();
                            Console.Write("fixed Array: ");
                            foreach (var arritem in e.Message.thisisafixedint16array)
                            {
                                Console.WriteLine(arritem + " ,");
                            }
                            Console.WriteLine();
                            Console.WriteLine("Seconds: " + e.Message.thisisatime.sec);
                        };
                        Console.WriteLine("Creating executor");
                        Executor executor = new SingleThreadedExecutor();
                        executor.AddNode(test_node);
                        Console.WriteLine("Spinning");
                        executor.Spin(new TimeSpan(0, 0, 0, 0, 10));
                        Console.WriteLine("Creating new test_msgs.Dummy");
                        using (cs_msgs.msg.Dummy test_msg = new cs_msgs.msg.Dummy()) {
                            test_msg.thisiauint8            = 10;
                            test_msg.thisisabool            = 1;
                            test_msg.thisisaint16           = 15;
                            test_msg.thisisfloat64          = 10.0f;
                            test_msg.thisisastring          = "test_test_test";
                            test_msg.thisisanotherstring    = "test2";
                            test_msg.thisafloat32array      = new float[] { 10.0f, 1.1f };
                            test_msg.thisisafixedint16array = new short[] { 10, 100, 5 };
                            test_msg.thisisastringarray     = (new string[] {
                                "test1",
                                "test2",
                                "test3"
                            });
                            test_msg.thisisaint8array   = (new byte[] { 100, 102, 200 });
                            test_msg.thisisfloat64array = new double[] { 10.4, 100.1, 100.10 };
                            test_msg.thisisatime.sec    = 10;

                            Console.WriteLine("Test seconds: " + test_msg.thisisatime.sec);
                            Console.WriteLine("Test_2 seconds: " + test_msg.Data.thisisatime.sec);
                            Console.WriteLine("Publishing message");
                            if (test_pub.Publish(test_msg))
                            {
                                Console.WriteLine("Publish was successfull");
                            }
                        }

                        /*Console.WriteLine ("####################################################");
                         * Console.WriteLine ("Creating service");
                         * Service<test_msgs.srv.DummySrv_Request,test_msgs.srv.DummySrv_Response> test_service = test_node.CreateService<test_msgs.srv.DummySrv_Request,test_msgs.srv.DummySrv_Response> ("TestService");
                         * test_service.RequestRecieved += (object sender, ServiceRecievedRequestEventArgs<test_msgs.srv.DummySrv_Request,test_msgs.srv.DummySrv_Response> e) => {
                         *      Console.WriteLine ("Recieved new request");
                         *      using(test_msgs.srv.DummySrv_Response response = new test_msgs.srv.DummySrv_Response())
                         *      {
                         *              response.sum = e.Request.a + e.Request.b;
                         *              e.SendResponseFunc(response);
                         *      }
                         *
                         * };
                         * Client<test_msgs.srv.DummySrv_Request,test_msgs.srv.DummySrv_Response> test_client = test_node.CreateClient<test_msgs.srv.DummySrv_Request,test_msgs.srv.DummySrv_Response> ("TestService");
                         * test_client.RecievedResponse += (object sender, ClientRecievedResponseEventArgs<test_msgs.srv.DummySrv_Response> e) => {
                         *      Console.WriteLine ("Client recived response : sum:  " + e.Response.sum);
                         * };
                         * using (test_msgs.srv.DummySrv_Request testRequest = new test_msgs.srv.DummySrv_Request ()) {
                         *      testRequest.a = 10;
                         *      testRequest.b = 100;
                         *      test_client.SendRequest (testRequest);
                         * }*/
                        Console.WriteLine("Press any key to exit");
                        Console.ReadKey();
                        executor.Cancel();
                    }
                }
            }
        }