Exemple #1
0
 private void CheckReceivedReady(UArmEventMessage message)
 {
     if (message.Id == Protocol.EventIdReady)
     {
         ReceivedReady?.Invoke(this, EventArgs.Empty);
     }
 }
Exemple #2
0
        private void CheckGroveUltrasonicSensorEvent(UArmEventMessage message)
        {
            int moduleType;
            int distance;

            if (message.Id == Protocol.EventIdGroveModuleDataReceived &&
                message.Args.Length > 1 &&
                int.TryParse(message.Args[0].Substring(1), out moduleType) &&
                moduleType == (int)GroveModuleTypes.Ultrasonic &&
                int.TryParse(message.Args[1].Substring(1), out distance)
                )
            {
                ReceivedGroveUltrasonicSensorData?.Invoke(this, new GroveUltrasonicDataEventArgs(distance));
            }
        }
Exemple #3
0
        private void CheckPowerConnectionChanged(UArmEventMessage message)
        {
            int powerState;

            if (message.Id == Protocol.EventIdPowerConnection &&
                message.Args.Length > 0 &&
                int.TryParse(message.Args[0].Substring(1), out powerState)
                )
            {
                PowerConnectionChanged?.Invoke(
                    this,
                    new PowerConnectionChangedEventArgs(powerState != 0)
                    );
            }
        }
        private void OnLineReceived(string line)
        {
            string[] data = line.Split(' ');

            //begin with "@": treat as event message
            int eventId = 0;

            if (data.Length > 0 &&
                data[0].Length > 1 &&
                data[0][0] == '@' &&
                int.TryParse(data[0].Substring(1), out eventId)
                )
            {
                var args = new string[data.Length - 1];
                Array.Copy(data, 1, args, 0, args.Length);
                var eventMessage = new UArmEventMessage(eventId, args);
                ReceivedEvent?.Invoke(this, new UArmEventMessageEventArgs(eventMessage));

                return;
            }

            //begin with "$": treas as response
            int id = -1;

            if (data.Length > 1 &&
                data[0].Length > 1 &&
                data[0][0] == '$' &&
                int.TryParse(data[0].Substring(1), out id))
            {
                var args = new string[data.Length - 1];
                Array.Copy(data, 1, args, 0, args.Length);
                var response = new UArmResponse(id, args);

                //Terminate waiting process if pending exists
                if (_pendingCommandIds.ContainsKey(id))
                {
                    _responses[id] = response;
                    _pendingCommandIds[id].Cancel();
                }

                ReceivedResponse?.Invoke(this, new UArmResponseEventArgs(response));

                return;
            }


            //Unknown data
        }
Exemple #5
0
        private void CheckLimitedSwitchStateChanged(UArmEventMessage message)
        {
            int switchNumber, switchState;

            if (message.Id == Protocol.EventIdLimitedSwitch &&
                message.Args.Length > 1 &&
                int.TryParse(message.Args[0].Substring(1), out switchNumber) &&
                int.TryParse(message.Args[1].Substring(1), out switchState)
                )
            {
                LimitedSwitchStateChanged?.Invoke(
                    this,
                    new LimitedSwitchEventArgs(switchNumber, switchState != 0)
                    );
            }
        }
Exemple #6
0
        private void CheckReceivedButtonAction(UArmEventMessage message)
        {
            int buttonType, buttonActionType;

            if (message.Id == Protocol.EventIdButton &&
                message.Args.Length > 1 &&
                int.TryParse(message.Args[0].Substring(1), out buttonType) &&
                int.TryParse(message.Args[1].Substring(1), out buttonActionType)
                )
            {
                ReceivedButtonAction?.Invoke(
                    this,
                    new ButtonActionEventArgs((ButtonTypes)buttonType, (ButtonActionTypes)buttonActionType)
                    );
            }
        }
Exemple #7
0
        private void CheckGroveGestureSensorEvent(UArmEventMessage message)
        {
            int moduleType;
            int gestureCode;

            if (message.Id == Protocol.EventIdGroveModuleDataReceived &&
                message.Args.Length > 1 &&
                int.TryParse(message.Args[0].Substring(1), out moduleType) &&
                moduleType == (int)GroveModuleTypes.GestureSensor &&
                int.TryParse(message.Args[1].Substring(1), out gestureCode)
                )
            {
                ReceivedGroveGestureSensorData?.Invoke(
                    this, new GroveGestureSensorDataEventArgs((GroveGestureSensorStates)gestureCode)
                    );
            }
        }
Exemple #8
0
        private void CheckGroveColorSensorEvent(UArmEventMessage message)
        {
            int  moduleType;
            byte r, g, b;

            if (message.Id == Protocol.EventIdGroveModuleDataReceived &&
                message.Args.Length > 3 &&
                int.TryParse(message.Args[0].Substring(1), out moduleType) &&
                moduleType == (int)GroveModuleTypes.ColorSensor &&
                byte.TryParse(message.Args[1].Substring(1), out r) &&
                byte.TryParse(message.Args[2].Substring(1), out g) &&
                byte.TryParse(message.Args[3].Substring(1), out b)
                )
            {
                ReceivedGroveColorSensorData?.Invoke(this, new GroveColorSensorDataEventArgs(r, g, b));
            }
        }
Exemple #9
0
        private void CheckGroveTemperatureAndHumiditySensorEvent(UArmEventMessage message)
        {
            int    moduleType;
            double temperature, humidity;

            if (message.Id == Protocol.EventIdGroveModuleDataReceived &&
                message.Args.Length > 2 &&
                int.TryParse(message.Args[0].Substring(1), out moduleType) &&
                moduleType == (int)GroveModuleTypes.TemperatureAndHumiditySensor &&
                double.TryParse(message.Args[1].Substring(1), out temperature) &&
                double.TryParse(message.Args[2].Substring(1), out humidity)
                )
            {
                ReceivedGroveTemperatureAndHumiditySensorData?.Invoke(
                    this, new GroveTempAndHumiditySensorDataEventArgs(temperature, humidity)
                    );
            }
        }
Exemple #10
0
        private void CheckReceivedPositionFeedback(UArmEventMessage message)
        {
            float x, y, z, handAngle;

            if (message.Id == Protocol.EventIdTimedFeedback &&
                message.Args.Length > 3 &&
                float.TryParse(message.Args[0].Substring(1), out x) &&
                float.TryParse(message.Args[1].Substring(1), out y) &&
                float.TryParse(message.Args[2].Substring(1), out z) &&
                float.TryParse(message.Args[3].Substring(1), out handAngle)
                )
            {
                ReceivedPositionFeedback?.Invoke(
                    this,
                    new PositionFeedbackEventArgs(new Position(x, y, z), handAngle)
                    );
            }
        }
Exemple #11
0
 public UArmEventMessageEventArgs(UArmEventMessage eventMessage)
 {
     EventMessage = eventMessage;
 }