>1>1>1>1 Обработка данных от сенсоров. Обработчики данных с сенсоров protected override void Start() { base.Start(); _drivePort.EnableDrive(true); _drivePort.SetDriveSpeed(1,

Презентация:



Advertisements
Похожие презентации
Параллельная работа сокетов в C#. Потоки в C# using System; using System.Threading; public class ThreadExample { public static void ThreadProc() { for.
Advertisements

Функции с переменным числом аргументов private static int Sum(int a, int b) { return a + b; } static void Main() { int sum = Sum(1, 2); } 1 Функции.
1 A + B Операнд 1Операнд 2 Оператор Что такое выражение (expression) ? Что такое инструкция (statement) ? Операторы int max = (a > b) ? a : b;
Test 3 Вопрос 1. 01:package test; 02: public class Test { 03: public static void main(String [] args) { 04: Test test = new Test(); 05: System.out.println(test.toString());}
Test 4 Вопрос 1. public class TestOutput { public static void main(String[] args) throws IOException { PrintStream out = new PrintStream( new BufferedOutputStream(
Test 10 Вопрос 1. public class Test implements Iterator { // 1 private List list = new ArrayList (); // 2 public void addList(T... ts) { Collections.addAll(list,
Test 17 Вопрос 1. public class TKO { public static void main(String[] args) { String s = "-"; Integer x = 343; long L343 = 343L; if (x.equals(L343)) s.
Test 13 Вопрос 1. public class StringTest { public static void main(String[] arg){ test(new String[] { null });} static void test(Object[] o){System.out.print(1);}
Murano Software Inc. AJAX & ASP.NET Коренков Максим.
Расширение стандартных механизмов ASP.NET 4.0 Андрей Веселов.
ЛЕКЦИЯ 4 ОПЕРАТОРЫ.
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Test 9 Вопрос 1. public class A { private String runNow() { return "High"; } static class B extends A { public String runNow() { return "Low"; } } public.
Test15 Вопрос 1. class AClass { } public class Test { public static void main (String... args) { ArrayList a = new ArrayList (); AClass aaaClass = new.
Лекция 9 Раздел 8.1 Windows Phone Темы раздела 3.
Рекурсивные структуры данных Списки, двоичные деревья.
Test 12 Вопрос 1. public class Cast { public static void main (String[] args){ byte b = 128; int i = b; System.out.println(i); } } a)Во время выполнения.
Максим Павловский
Windows ® Azure Platform. Роль Экземпляр роли Монитор диагностики Локальное хранилище.
Test21 Вопрос 1. public class Test { void a1(Object... i){ System.out.println("[Object... i]"); } void a1(Integer... i){ System.out.println("[Integer...
Транксрипт:

>1>1>1>1 Обработка данных от сенсоров

Обработчики данных с сенсоров protected override void Start() { base.Start(); _drivePort.EnableDrive(true); _drivePort.SetDriveSpeed(1, 0); Activate(Arbiter.ReceiveWithIterator(false, _dateTimePort, UpdateSensorData)); TaskQueue.EnqueueTimer(TimeSpan.FromMilliseconds(60), _dateTimePort); }

UpdateSensorData IEnumerator UpdateSensorData(DateTime dateTime) { var resultPort = new CompletionPort(); PostOnTaskCompletion(resultPort, UpdateColorSensor); PostOnTaskCompletion(resultPort, UpdateBrightnessSensor); PostOnTaskCompletion(resultPort, UpdateLRF); PostOnTaskCompletion(resultPort, UpdateWebCamImage); Activate(Arbiter.MultipleItemReceive(false, resultPort, 4, allComplete => { Activate(Arbiter.ReceiveWithIterator(false, _dateTimePort, UpdateSensorData)); TaskQueue.EnqueueTimer(TimeSpan.FromMilliseconds(60), _dateTimePort); })); yield break; }

Activate(Arbiter.MultipleItemReceive(false, resultPort, 4, allComplete – запускает новую обработку данных, после того, как была выполнена предыдущая обработка и получены четыре сообщения. PostOnTaskCompletion запускает на выполнение итератор, переданный ему в параметре, устанавливает порт, на который должен отправляться результат запуска итератора. Код, приведённый ниже запускает итератор UpdateSensorData каждые 60 миллисекунд: Activate(Arbiter.ReceiveWithIterator(false, _dateTimePort, UpdateSensorData)); EnqueueTimer – ставит в очередь на регистрацию таймер, который будет отправлять элемент DateTime на заданный порт (_dateTimePort): TaskQueue.EnqueueTimer(TimeSpan.FromMilliseconds(60), _dateTimePort);

UpdateSonar IEnumerator UpdateSonar() { var sensorOrFault = _simulatedSonarServicePort.Get(); yield return sensorOrFault.Choice(); if (!HasError(sensorOrFault)) { sonar.SonarState sensorState = (sonar.SonarState)sensorOrFault; if (sensorState.DistanceMeasurements != null) Console.WriteLine("Sonar: {0}", sensorState.DistanceMeasurements[0]); } yield break; }

Команды управления двигателями _drivePort.DriveDistance(-0.25, _driveSpeed); _drivePort.RotateDegrees(degrees, _rotateSpeed); _drivePort.EnableDrive(true); _drivePort.SetDriveSpeed(0, 0);