На самом деле я немного наврал в теме и предлагаемый подход не является таким уж и новым с точки зрения компьютерных технологий, но при этом почему-то не получил должного развития в области встраиваемых систем.
Название предлагаемого подхода - Remote Procedure Call (
Его смысл заключается в том, что мы можем вызывать функции одного адресного пространства (микроконтроллера) из другого адресного пространства (компьютера).
Это означает, что фактически вам не нужно задумываться о протоколе обмена между компьютером и роботом, вы просто пишете функции и помечаете их как "удаленно вызываемые".
Мы реализовали такую функциональность для Ардуино.
Более подробная инструкция по использованию
Готовый пакет:
Пример. У вас есть робот который должен управляться с компьютера, и пользоваться датчиком температуры.
Вы написали в Ардуино примерно такой код:
- Код: Выделить всё • Развернуть
void Move(int vl, int vr)
{
// Set left (vl) and right (vr) wheel velocity
}
double Temperature()
{
// Read temperature sensor
}
Для того, чтобы сделать функции вызываемыми с компьютера вам надо добавить в скетч вот такой код:
- Код: Выделить всё • Развернуть
void Move(int vl, int vr);
double Temperature();
После этого нажать волшебную кнопку RPC и для вас будет создан файл для C# в котором будет создан специальный класс, предназначенный для удаленного вызова помеченных процедур.