public static void Main(string[] args)
        {
            BufferClientClock client = new BufferClientClock();
            Header hdr = null;

            while (hdr == null)
            {
                try
                {
                    client.connect("localhost", 1972);
                    if (client.isConnected())
                    {
                        hdr = client.getHeader();
                    }
                }
                catch
                {
                    hdr = null;
                }

                if (hdr == null)
                {
                    Console.WriteLine("Invalid Header... waiting");
                    Thread.Sleep(1000);
                }
            }
            Console.WriteLine("Connected, press ESC to quit.");

            float axis = 0;

            bool running = true;
            new Thread(() =>
                {
                    while (running)
                    {
                        lock (client)
                        {
                            client.putEvent(new BufferEvent("AXIS_X", axis, -1));

                        }
                        Thread.Sleep(100);
                    }
                }).Start();

            while (running)
            {
                var key = Console.ReadKey();
                if (key.Key == ConsoleKey.Escape)
                {
                    running = false;
                }
                else if (key.Key == ConsoleKey.Q)
                {
                    lock (client)
                    {
                        client.putEvent(new BufferEvent("BTN_FIRE", "down", -1));
                    }
                }
                else if (key.Key == ConsoleKey.W)
                {
                    lock (client)
                    {
                        client.putEvent(new BufferEvent("BTN_FIRE", "up", -1));
                    }
                }
                else if (key.Key == ConsoleKey.E)
                {
                    axis -= 0.2f;
                }
                else if (key.Key == ConsoleKey.R)
                {
                    axis += 0.2f;
                }
            }

            Console.WriteLine();
        }
Esempio n. 2
0
        public static int Main(string[] args)
        {
            string hostname = "localhost";
            int port = 1972;
            int timeout = 5000;

            if (args.Length >= 1)
            {
                hostname = args[0];
            }
            if (args.Length >= 2)
            {
                try
                {
                    port = Convert.ToInt32(args[1]);
                }
                catch
                { //  (NumberFormatException e)
                    port = 0;
                }
                if (port <= 0)
                {
                    Console.WriteLine("Second parameter (" + args[1] + ") is not a valid port number.");
                    return 1;
                }
            }
            if (args.Length >= 3)
            {
                try
                {
                    port = Convert.ToInt32(args[2]);
                }
                catch
                { //  (NumberFormatException e)
                    timeout = 5000;
                }
            }

            BufferClientClock C = new BufferClientClock();

            Header hdr = null;
            while (hdr == null)
            {
                try
                {
                    Console.Write("Connecting to " + hostname + ":" + port + "...");
                    C.connect(hostname, port);
                    Console.WriteLine("done");
                    Console.Write("Getting Header...");
                    if (C.isConnected())
                    {
                        hdr = C.getHeader();
                    }
                    Console.WriteLine("done");
                }
                catch
                { //(IOException e)
                    hdr = null;
                }
                if (hdr == null)
                {
                    Console.WriteLine("Invalid Header... waiting");
                    Thread.Sleep(1000);
                }
            }
            Console.WriteLine("#channels....: " + hdr.nChans);
            Console.WriteLine("#samples.....: " + hdr.nSamples);
            Console.WriteLine("#events......: " + hdr.nEvents);
            Console.WriteLine("Sampling Freq: " + hdr.fSample);
            Console.WriteLine("data type....: " + hdr.dataType);
            for (int n = 0; n < hdr.nChans; n++)
            {
                if (hdr.labels[n] != null)
                {
                    Console.WriteLine("Ch. " + n + ": " + hdr.labels[n]);
                }
            }

            // Now do the echo-server
            int nEvents = hdr.nEvents;
            endExpt = false;
            while (!endExpt)
            {
                     // Block until there are new events
                SamplesEventsCount sec = C.waitForEvents(nEvents, timeout);
                if (sec.nEvents > nEvents)
                {
                    // get the new events
                    BufferEvent[] evs = C.getEvents(nEvents, sec.nEvents - 1);
                    //float[][] data = C.getFloatData(0,sec.nSamples-1); // Example of how to get data also
                    nEvents = sec.nEvents;// update record of which events we've seen
                    // filter for ones we want
                    Console.WriteLine("Got " + evs.Length + " events");
                    for (int ei = 0; ei < evs.Length; ei++)
                    {
                        BufferEvent evt = evs[ei];
                        string evttype = evt.getType().ToString();
                        // only process if it's an event of a type we care about
                        // In our case, don't echo our own echo events....
                        if (!evttype.Equals("echo"))
                        {
                            if (evttype =="exit")
                            { // check for a finish event
                                endExpt = true;
                            }
                            // Print the event to the console
                            Console.WriteLine(ei + ") t:" + evt.getType().toString() + " v:" + evt.getValue().toString() + " s:" + evt.sample);
                            // Now create the echo event, with auto-completed sample number
                            // N.B. -1 for sample means auto-compute based on the real-time-clock
                            C.putEvent(new BufferEvent("echo", evt.getValue().toString(), -1));
                        }
                    }
                }
                else
                { // timed out without new events
                    Console.WriteLine("Timeout waiting for events");
                }
            }
            Console.WriteLine("Normal Exit");
            C.disconnect();
            return 0;
        }