Code Monkey home page Code Monkey logo

serialmanager2's Introduction

Serial Manager 2

Возможности

  • Подключение:

    • USB
    • Bluetooth
    • WebSocket
  • Действия при получении команды:

    • Показ уведомлений в виде "плавающего" окна
    • Запуск приложения
    • Эмуляция нажатия клавиш клавиатуры
    • Выполнение консольных (shell) команд
    • Отправка данных на контроллер

Arduino → Serial Manager

Формат отправляемой команды: <key:value>

Пример простого скетча для ардуино:

int counter = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println("<test:" + String(counter) + ">");
  counter++;
  delay(3000);
}

Serial Manager → Arduino

Запуск и завершение соединения

При включенной опции Отправлять состояния соединения, на контроллер, при каждом успешном соединении, будет отправлено сообщение kg.serial.manager.connection_established.

При завершении работы сервиса, на все подключенные контроллеры будет отправлено сообщение kg.serial.manager.connection_lost.

Датчик света

При включенной опции Отправлять данные датчика освещённости на контроллер будут отправляться:

Сообщения датчика освещённости отправляются не чаще одного раза в 3 секунды и только при значительном изменении освещения, т.е. при смене значения {mode}.

Состояние экрана

При включенной опции Отправлять состояние экрана на контроллер будут отправляться:

  • screen:on при включении экрана
  • screen:off при выключении экрана

Действие команды Отправить данные

На контроллер будет отправлена строка указанная в опциях команды. К строке будет применено форматирвание.

Serial Manager → Android

Broadcast Intent'ы:

  • При получении команды:
    • Action: kg.serial.manager.command_received
    • Extras: key, value
  • При запуске программы:
    • kg.serial.manager.app_started
  • При запуске сервиса:
    • kg.serial.manager.started
  • При остановке сервиса:
    • kg.serial.manager.stopped

Android → Serial Manager

Чтобы отправить данные на контроллер из Вашего приложения, необходимо создать Intent со следующими параметрами:

  • Action: kg.serial.manager.send
  • Extras:
    • data - сообщение, которое необходимо отправить на контроллер
    • id - идентификатор конкретной операции, необязательный параметр.

Пример (Java):

Intent intent = new Intent("kg.serial.manager.send");
intent.putExtra("id", "1234");
intent.putExtra("data", "message_for_controller");
sendBroadcast(intent);

В случае, если был указан параметр id, то после обработки команды и попытки отправить данные на контроллер, Serial Manager создаст следующий Broadcast Intent:

  • Action: kg.serial.manager.send.complete
  • Extras: id

Форматирование строк

Можно использовать следующие значения:

  • %key - будет заменено на ключ текущей команды;
  • %value - будет заменено на значение текущее команды;
  • hex2dec(x), dec2hex(x), bin2dec(x), dec2bin(x) - конвертирование x из одной системы счисления в другую;
  • %{...} - вместо ... нужно подставить математическое выражение (формулу). Описание доступных операторов и выражений.

Например, от контроллера приходят данные о температуре в Фаренгейтах, а нам нужно перевести в градусы Цельсия. Для этого нужно написать:

%{round((%value - 32) * (5 / 9), 1)} ºC

По формуле выше, мы перевели градусы из Ф в С и округлили полученное значение до десятых (до одного знака после запятой). Т.е. если от контроллера пришла цифра 89, то мы на выходе получим 31.7 ºC. При этом текст до и после %{...} остаётся без изменений.

Форматирование строк применяется:

  • при действии команды Отправить данные;
  • в уведомлении при распознавании команды;
  • в создаваемом Intent'е при распознавании команды.

Интерфейс

Для удаления команды - свайп влево.

Команды можно перемещать вверх и вниз по списку. Для перемещения - долгий tap на команде, затем (не отпуская) двигайте вверх или вниз.

Библиотеки

Альтернативы

serialmanager2's People

Contributors

delletenebre avatar mazahaker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

serialmanager2's Issues

Not working on Android 8, possibly Android 7

It works nice on my nexus 2013 running android 6, but on my nexus 6p running android 8; it's having issues.
On android 7, the app crashes when the screen turns off and back on. It also didn't detect any data coming from bluetooth. If you run the app on android 6, then it's good. Please fix it for android 8.
It is a very useful app. Thanks.

Integrated Key Emulation issue in Android 12

Hello,
I have been using this extremely useful app for years on my Nexus 7 2013 with Android 7 (Lineage OS)
After a recent update to a new rooted tablet with Android 12, I have the problem that the "Emulate Key" action im SerialManager2 (SM2) unfortunately no longer works. The connection between Arduino and SM2 works smoothly and the commands also arrive, which can be seen in the log.
As a temporary solution, I now use the detour via Tasker, which means that I do not set "Emulate Key" in SM2 but "Run Application" and then select a "Tasker shortcut" in which a predefined keyboard key is emulated. In principle, the whole thing works, but it is quite slow and sluggish. I suspect that SerialManager2 may be using a routine to emulate the keys that is no longer supported in Android 12.
Is there any chance that something will be improved at this point?
Thanks for the feedback!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.