/// <summary> /// Receives data from the TRobot's Sharp sensors. Range for Sharp sensor is (200 - 1500 mm). /// </summary> /// <returns>Distance in mm from the TRobot's Sharp sensors. The key for measured distance is "distance1", "distance2", "distance3" for three Sharp sensors.</returns> public Data ReceiveData() { Data data = new Data(); data.SelectedDeviceType = SelectedDevice.Sharp; try { String[] distances = arduino.GetSharpsData(); for (int i = 1; i <= distances.Length; i++) { Int16 hexToDecimal = Convert.ToInt16(distances[i - 1], 16); double distance = (60.495 * Math.Pow(hexToDecimal * 0.0049, -1.1904) * 10); if (distance >= 200 && distance <= 1500) { data.Dictionary.Add(key + i, distance); } else { data.Dictionary.Add(key + i, 0); } } } catch (Exception e) { Logger.Log(e); } return data; }
/// <summary> /// Receives data from the TRobot's batteries. /// </summary> /// <returns>Charge of Trobot's batteries in percents. The key for charge value is "charge".</returns> public Data ReceiveData() { Data data = new Data(); data.SelectedDeviceType = SelectedDevice.Battery; try { String response = roboteQ.GetBatteryVoltage(); int chargeInPercets = (int)(Double.Parse(response)-uMin)*100/(uMax-uMin); if (chargeInPercets < 0) { data.Dictionary.Add(key, 0); } else if (chargeInPercets > 100) { data.Dictionary.Add(key, 100); } else { data.Dictionary.Add(key, chargeInPercets); } } catch (Exception e) { Logger.Log(e); } return data; }
public Data ReceiveData() { Data response = new Data(); response.SelectedDeviceType = SelectedDevice.Null; return response; }
/// <summary> /// Loads data for selected device. /// </summary> /// <param name="request">Request with selected device type.</param> /// <returns>Data with received values for selected device type.</returns> public Data LoadData(Data request) { IDataReceiver dataReceiver = dataReceiverFactory.GetDataReceiver(request.SelectedDeviceType); Data response = dataReceiver.ReceiveData(); return response; }
/// <summary> /// Receives data from the TRobot's Mobot sensor. Range for Mobot sensor is (50 - 3500 mm). /// </summary> /// <returns>Distance in mm from the TRobot's Mobot sensors. The key for measured distance is "distance"</returns> public Data ReceiveData() { Data data = new Data(); data.SelectedDeviceType = SelectedDevice.Mobot; try { String distance = arduino.GetMobotData(); data.Dictionary.Add(key, double.Parse(distance)); } catch (Exception e) { Logger.Log(e); } return data; }
/// <summary> /// Receives chipset's temperature from the TRobot's thermometer. /// </summary> /// <returns>Temperature of chipset in degrees C. The key for temperature value is "temperature".</returns> public Data ReceiveData() { Data data = new Data(); data.SelectedDeviceType = SelectedDevice.Temperature; try { int degreesC = int.Parse(roboteQ.GetTemperature()); data.Dictionary.Add(key, degreesC); } catch (Exception e) { Logger.Log(e); } return data; }
/// <summary> /// Receives data from the TRobot's encoders. Range for encoders is around (0 - 3.06 km/h). /// </summary> /// <returns>Velocity of Trobot in km/h. The key for measured velocity is "speed".</returns> public Data ReceiveData() { Data data = new Data(); data.SelectedDeviceType = SelectedDevice.Encoder; try { String[] response = roboteQ.GetSpeed(); double velocity = ((double.Parse(response[0]) + Double.Parse(response[1])) / 2) * (wheelCircuitInKm / hoursInMinute); data.Dictionary.Add(key, velocity); } catch (Exception e) { //Logger.Log(e); } return data; }
/// <summary> /// Receives data from the TRobot's Hokuyo sensor. Range for Hokuyo sensor is around (20 - 4000 mm). /// Scan area is 240 degrees semicircle. Sensor outputs the distace measured at 682 points. /// </summary> /// <returns>Distance in 682 points in mm from the TRobot's Hokuyo sensor. The key for measured distance is "distance0", "distance1", ..., "distance681".</returns> public Data ReceiveData() { Data data = new Data(); data.SelectedDeviceType = SelectedDevice.Hokuyo; try { int[] distanceValuesFromHokuyo = hokuyo.GetData(); int numberOfDistanceValues = distanceValuesFromHokuyo.Count(); String currentKey; for (int i = 0; i < numberOfDistanceValues; i++) { currentKey = key + i; data.Dictionary.Add(currentKey, distanceValuesFromHokuyo[i]); } } catch (Exception e) { Logger.Log(e); } return data; }
/// <summary> /// Sends data to selected device. /// </summary> /// <param name="data">Data with selected device type and values to send to selected device.</param> public void SendData(Data data) { IDataProvider dataProvider = new EncoderDataProvider(data, devicesManager.RoboteQ); dataProvider.ProvideData(); }
/// <summary> /// Constructs a EncoderDataProvider instance. /// </summary> /// <param name="driversData">Data object with information about left and right wheel power. It must be in the Dictionary wiht keys: "leftWheelPower" and "rightWheelPower".</param> /// <param name="roboteQ">Singleton istance of RoboteQ supporter.</param> public EncoderDataProvider(Data driversData, Roboteq roboteQ) { this.driversData = driversData; this.roboteQ = roboteQ; }