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."); Console.WriteLine(hdr); 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)); Console.WriteLine("Pressed down"); } } else if (key.Key == ConsoleKey.W) { lock (client) { client.putEvent(new BufferEvent("BTN_FIRE", "up", -1)); Console.WriteLine("Pressed up"); } } else if (key.Key == ConsoleKey.E) { axis -= 0.2f; Console.WriteLine("Pressed left"); } else if (key.Key == ConsoleKey.R) { axis += 0.2f; Console.WriteLine("Pressed right"); } } Console.WriteLine(); }
public void putEvent <T>(string type, T val, int sample) { Type cls = typeof(T); string typeOfVal = cls.FullName; if (cls.IsArray) { Type elc = cls.GetElementType(); if (!elc.IsPrimitive) { return; } if (typeOfVal == "System.String[]") { string[] temp = (string[])(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } if (typeOfVal == "System.Byte[]") { byte[] temp = (byte[])(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } if (typeOfVal == "System.Int16[]") { short[] temp = (short[])(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } if (typeOfVal == "System.Int32[]") { int[] temp = (int[])(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } if (typeOfVal == "System.Int64[]") { long[] temp = (long[])(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } if (typeOfVal == "System.Single[]") { float[] temp = (float[])(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } if (typeOfVal == "System.Double[]") { double[] temp = (double[])(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } } else { if (typeOfVal == "System.String") { string temp = (string)(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } if (typeOfVal == "System.Byte") { byte temp = (byte)(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } if (typeOfVal == "System.Int16") { short temp = (short)(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } if (typeOfVal == "System.Int32") { int temp = (int)(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } if (typeOfVal == "System.Int64") { long temp = (long)(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } if (typeOfVal == "System.Single") { float temp = (float)(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } if (typeOfVal == "System.Double") { double temp = (double)(object)val; BufferEvent ev = new BufferEvent(type, temp, sample); bufferClient.putEvent(ev); } } }
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) { System.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 { System.Console.Write("Connecting to " + hostname + ":" + port + "..."); C.connect(hostname, port); System.Console.WriteLine("done"); System.Console.Write("Getting Header..."); if (C.isConnected()) { hdr = C.getHeader(); } System.Console.WriteLine("done"); } catch { //(IOException e) hdr = null; } if (hdr == null) { System.Console.WriteLine("Invalid Header... waiting"); System.Threading.Thread.Sleep(1000); } } System.Console.WriteLine("#channels....: " + hdr.nChans); System.Console.WriteLine("#samples.....: " + hdr.nSamples); System.Console.WriteLine("#events......: " + hdr.nEvents); System.Console.WriteLine("Sampling Freq: " + hdr.fSample); System.Console.WriteLine("data type....: " + hdr.dataType); for (int n = 0; n < hdr.nChans; n++) { if (hdr.labels[n] != null) { System.Console.WriteLine("Ch. " + n + ": " + hdr.labels[n]); } } // Now do the echo-server int nEvents = hdr.nEvents; endExpt = false; while (!endExpt) { SamplesEventsCount sec = C.waitForEvents(nEvents, timeout); // Block until there are new events 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 System.Console.WriteLine("Got " + evs.Length + " events"); for (int ei = 0; ei < evs.Length; ei++) { BufferEvent evt = evs[ei]; String evttype = evt.getType().toString(); // N.B. to*S*tring, not upper case! // 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")) // N.B. use equals, not == to compare string contents! { if (evttype.Equals("exit")) // check for a finish event { endExpt = true; } // Print the event to the console System.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 { System.Console.WriteLine("Timeout waiting for events"); } } System.Console.WriteLine("Normal Exit"); C.disconnect(); return(0); }