private void CheckReceivedReady(UArmEventMessage message) { if (message.Id == Protocol.EventIdReady) { ReceivedReady?.Invoke(this, EventArgs.Empty); } }
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)); } }
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 }
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) ); } }
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) ); } }
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) ); } }
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)); } }
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) ); } }
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) ); } }
public UArmEventMessageEventArgs(UArmEventMessage eventMessage) { EventMessage = eventMessage; }