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");
        }
예제 #2
0
        /// <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();
        }
예제 #3
0
        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;
        }