private async Task WebSocketLoop(HttpContext context, WebSocket webSocket) { //Int32 bufferSize = Marshal.SizeOf<RawSensor>(); using IMemoryOwner <byte> buffer = MemoryPool <byte> .Shared.Rent(1024 * 4); ValueWebSocketReceiveResult request = await webSocket.ReceiveAsync(buffer.Memory, CancellationToken.None); while (webSocket.State == WebSocketState.Open) { try { switch (request.MessageType) { case WebSocketMessageType.Text: string inComeString = System.Text.Encoding.UTF8.GetString(buffer.Memory.Span); RawSensor inComeDocument = JsonConvert.DeserializeObject <RawSensor>(inComeString); _sensor.Create(new Sensor(inComeDocument)); break; default: break; } } catch (Exception e) { System.Diagnostics.Debug.WriteLine($"{e.Message}\r\n{e.StackTrace}"); } request = await webSocket.ReceiveAsync(buffer.Memory, CancellationToken.None); } System.Diagnostics.Debug.WriteLine("Client disconnected"); }
/// <summary> /// Initialize the brick and setup the serial port /// </summary> private Brick() { sensors = new SensorCollection(this); motors = new MotorCollection(this); foreach (SensorPort sensorPort in Enum.GetValues(typeof(SensorPort))) { //create new sensors sensors[sensorPort] = new RawSensor(sensorPort); } foreach (MotorPort motorPort in Enum.GetValues(typeof(MotorPort))) { motors[motorPort] = new Motor(motorPort); } handlerCancellationTokenSource = new CancellationTokenSource(); }
TtlSensor CreateTtlSensor(SensorType sensorType, String name, Channel channel, float sampleRate, bool queueData) { TtlSensor sensor; switch (sensorType) { //case SensorType.Brain: // sensor = new BrainSensor(new BrainSensor.Processor(), name, channel, sampleRate, queueData); // break; case SensorType.Bvp: sensor = new BvpSensor(new BvpSensor.Processor(), name, channel, sampleRate, queueData); break; case SensorType.Gsr: sensor = new GsrSensor(new GsrSensor.Processor(), name, channel, sampleRate, queueData); break; case SensorType.Heart: sensor = new HeartSensor(new HeartSensor.Processor(), name, channel, sampleRate, queueData); break; case SensorType.Muscle: sensor = new MuscleSensor(new MuscleSensor.Processor(), name, channel, sampleRate, queueData); break; case SensorType.Strain: sensor = new StrainSensor(new StrainSensor.Processor(), name, channel, sampleRate, queueData); break; case SensorType.Temperature: sensor = new TempSensor(new TempSensor.Processor(), name, channel, sampleRate, queueData); break; case SensorType.Raw: sensor = new RawSensor(new RawSensor.Processor(), name, channel, sampleRate, queueData); break; default: sensor = null; Debug.Assert(false); break; } return sensor; }