Усовершенствование Microsoft TypeScript может помочь вам в разработке сложных систем на основе Интернета вещей.
DeviceScript — передовая инновация от Microsoft Research. Он расширяет возможности TypeScript для работы с небольшими устройствами Интернета вещей (IoT) с ограниченными ресурсами.
Его основная цель — дать вам возможность писать код на TypeScript и компилировать его в собственный байт-код, оптимизированный для развертывания в средах с ограниченными ресурсами.
Консольный вывод в DeviceScript
Microsoft DeviceScript предлагает удобную консоль. Он поддерживает вывод сообщений и регистрацию данных датчиков, а также служит в качестве ценный инструмент для проверки ошибок.
В вашем распоряжении ряд функций для регистрации сообщений с различными уровнями ведения журнала:
консоль.отлаживать("отлаживать")
консоль.бревно("бревно")
консоль.предупреждать("предупреждать")
консоль.ошибка("ошибка")
Вывод консоли хорошо виден в окне терминала DeviceScript. Это может помочь получить ценную информацию о выполнении вашего кода и помочь в процессе отладки.
Кроме того, DeviceScript упрощает регистрацию данных датчика, предоставляя console.data Функция, которая автоматически добавляет метку времени к зарегистрированным данным.
Рассмотрим следующий пример:
константа температура = 20;
константа влажность = 60;
консоль.данные({температура, влажность});
Чтобы получить доступ к зарегистрированным данным, вы можете перейти к DeviceScript — вывод данных в Visual Studio Code или загрузите его из меню просмотра.
Мощное форматирование строк
При использовании console.log() в DeviceScript, у вас есть множество вариантов форматирования строк для улучшенного вывода. Рассмотрим следующие иллюстративные примеры:
позволять х = 0;
позволять у = 4;
консоль.бревно("Привет, мир");
консоль.бревно(«Значение X равно», Икс, "пока Y есть", у);
консоль.бревно("Х=", Икс, "Y=", у);
консоль.бревно(`Х=${х} Y=${г}`);
консоль.бревно("Х=" + х + "Y=" + у);
Компилятор DeviceScript автоматически вставляет пробелы, что делает вывод более разборчивым. Например, второй и третий примеры дадут Значение X равно 7, а Y равно 12. и Х=7 У=12, соответственно.
При записи в регистры вы также можете использовать конкатенацию и литералы шаблонов. Рассмотрим следующий фрагмент кода:
константа экран = новый д.с. Экран Персонажа();
позволять х = 7;
экран.сообщение.записать(«Ценность X равна» + х);
экран.сообщение.записать(`Х равно ${х}`);
Используя конкатенацию или литералы шаблонов, вы можете без особых усилий создавать динамические строки для удовлетворения разнообразных требований.
Кроме того, DeviceScript предлагает ds.формат() функция расширенного форматирования строк. Вы можете использовать эту функцию вместе с console.log() или при настройке строковых регистров.
Укажите заполнители для аргументов, используя формат {0}, {1}, {2}, и так далее. Вы также можете указать точность, добавив вторую цифру.
Обратите внимание на следующий пример:
константа экран = новый д.с. Экран Персонажа();
позволять х = 7;
позволять у = 12;
консоль.log (ds.format(«X равно {0}, а Y равно {1}», х, у));
консоль.log (ds.format("Х = {04}", Икс));
screen.message.write (ds.format("X приблизительно равно {0}", Икс));
Имейте в виду, что указание точности с помощью второй цифры может не давать безупречных результатов во всех сценариях.
Клиенты: обеспечение взаимодействия с датчиками и исполнительными механизмами
Экосистема DeviceScript абстрагирует взаимодействие с датчиками, исполнительными механизмами и другими аппаратными компонентами через сервисы Jacdac.
Эта структура рассматривает датчики как серверы, а ваши сценарии подключают клиентов к этим серверам для облегчения взаимодействия. Чтобы проиллюстрировать эту концепцию, рассмотрим сценарий контроллера домашней системы отопления.
Система обогрева включает в себя реле, регулирующее работу печи, датчик температуры и поворотный энкодер для регулировки желаемой температуры. В DeviceScript вы определяете клиентов, также называемых ролями, для каждой требуемой службы.
Взгляните на следующий фрагмент кода:
Импортировать { Температура, реле } от"@devicescript/ядро";
константа термометр = новый Температура();
константа термометр2 = новый Температура();
константа реле = новый Реле();
Путем создания экземпляров необходимых клиентов службы, таких как термометр, термометр2, и реле, вы устанавливаете бесшовную связь с соответствующими серверами.
Аппаратные серверы DeviceScript
Для взаимодействия с любым аппаратным компонентом в DeviceScript используются сервисные клиенты. Однако для эффективного программирования этих аппаратных компонентов необходимо инициализировать сервисные серверы на базовом оборудовании.
DeviceScript предлагает широкий выбор серверов в @devicescript/серверы модуля, тем самым упрощая этот процесс.
Например, кнопка Пуск Функция позволяет развернуть сервер кнопок на определенном выводе и получить соответствующий клиент. Обратите внимание на следующий пример:
Импортировать {гпио} от"@devicescript/ядро";
Импортировать { кнопка Пуск } от"@devicescript/серверы";
константа кнопкаA = startButton({ приколоть: гпио(2),});
Включив этот фрагмент кода в свой сценарий, вы получаете возможность взаимодействовать с выводом 2 (специфический для оборудования идентификатор) через кнопка А клиент. Затем вы можете подписаться на такие события, как нажатия кнопок, и выполнять определенные действия в приложении IoT.
Расширение возможностей разработки IoT с помощью DeviceScript
DeviceScript позволяет использовать TypeScript для небольших устройств IoT, оптимизируя код для ограниченных сред. Его консольный вывод упрощает регистрацию и визуализацию данных. Абстрагируя взаимодействие с оборудованием с помощью сервисов Jacdec, он оптимизирует связь с датчиками и исполнительными механизмами.
Интегрированный с Visual Studio Code, DeviceScript предлагает комплексную среду для разработки, что делает его ценным инструментом для эффективных и безопасных решений IoT. С помощью DeviceScript и Visual Studio Code вы можете уверенно создавать IoT-решения, которые не только эффективны, но и поддерживают высокий уровень безопасности на протяжении всего процесса разработки.