PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Софт (http://pccar.ru/forumdisplay.php?f=172)
-   -   Serial Manager - автоматизация/управление Android с помощью Arduino (http://pccar.ru/showthread.php?t=24120)

armlive 15.07.2016 10:17

Цитата:

Сообщение от Alekssandr (Сообщение 364662)
DelleTenebre Привет! Яву начал изучать недавно.

Подскажи пожалуйста как отправить данные на Ваше приложение, пишу приложение под андроид которая будет работать в связке с SerialManager. Почему не срабатывают команды на включение и отключение светодиода на ардуино, из моего приложения, хотя с виджета всё работает. Походу чтото делаю не так.

Обработчик кнопок работает проверял через Toast.

PHP код:

    public static final String ACTION_SERVIS "serial.manager.send";
    public static final 
String EXTRA_DATA "data:";

    public 
void don(View view) {
        
Intent intent = new Intent();
        
intent.setAction(ACTION_SERVIS);
        
intent.putExtra(EXTRA_DATA,"on");
        
sendBroadcast(intent);
    }

    public 
void doff(View view) {
        
Intent intent = new Intent();
        
intent.setAction(ACTION_SERVIS);
        
intent.putExtra(EXTRA_DATA,"off");
        
sendBroadcast(intent);
    } 


С приемником kg.delletenebre.serial.NEW_DATA разобрался всё работает отлично.

Вот ты извращенец, зачем посредников используешь. сразу в порт учись отправлять

Alekssandr 15.07.2016 12:55

Цитата:

Сообщение от armlive (Сообщение 364686)
Вот ты извращенец, зачем посредников используешь. сразу в порт учись отправлять

=) я не хочу потерять возможности SerialManager, просто делаю удобную оболочку для настройки аудиопроцессора tda7719.

slon25 16.07.2016 11:20

Что нужно до установить чтобы на нексусе работали команды из раздела эмуляция клавиатуры рут???

DelleTenebre 28.07.2016 18:38

C лёгкого пинка ali_vlad, я начал эксперименты с GPIO. В версии 1.6.2 готов модуль считывания состояния 1 и 0. Под шумок добавил возможность "GPIO-кнопка" - можно получать данные не 1 и 0, а click и hold (удержание).

----

Обновлено 11.09.2016

Чтобы распознавать команды с GPIO нужно выбрать Тип команды GPIO, в появившееся поле Номер GPIO, как ни странно, номер GPIO (Скриншот).

Например, у geekbox landingship есть пин с маркировкой GPIO3_A3 - не знаю стандартное это обозначение или нет, но необходимый номер высчитывается по формуле (тут можно ещё почитать):
Код:

GPIO[X]_[Y][Z] = 32*[X] + 8*[Y] + [Z] (for Y: A=0, B=1, C=2, D=3)
В результате имеем номер 99. В поле Номер GPIO пишем 99, в поле значение одно из следующих: 1, 0, click или hold.

mark949 28.07.2016 19:28

В правильном направлении движетесь товарищ!
Считаю это необходимо в нашем деле...

DelleTenebre 29.07.2016 20:48

mark949, спасибо.

В 1.6.3 добавил действие установки состояния GPIO: low, high, invert. Формат такой: gpioX:low, gpioX:high, gpioX:invert. Где X номер GPIO. Если GPIO уже был инициализирован и имеет режим IN, будет сообщение об ошибке (в целях безопасности). Команда invert, как следует из названия, инвертирует состояние, т.е. если было 0, то станет 1; если было 1 - станет 0; если порт не был настроен, то будет выбрано состояние 0.

Немного исправил уведомления - теперь они должны исчезать как и положено.

Приношу свои извинения всем кто активно пользовался виджетами приёма данных - они у вас немножко (почти полностью) сломаются. Но в качестве компенсации вы получаете возможность пользоваться математическими выражениями и функциями описанными по этой ссылке, а так же hex2dec(), dec2hex(), bin2dec(), dec2bin(), выводить значение ключа с помощью %key, а полученного от контроллеров значения через %value. Все эти плюшки работают и в уведомлениях.

Например, чтобы перевести полученное значение в hex, в поле Текст пишем: dec2hex(%value)

Для работы с мат. выражениями необходимо всю формулу обернуть в %{}.

Например, от контроллера приходят данные о температуре в Фаренгейтах, а нам нужно перевести в градусы Цельсия: %{round((%value - 32) * (5 / 9), 1)} ºC
По формуле выше, мы перевели градусы и округлили до десятых (до одного знака после запятой). Т.е. если от контроллера пришла цифра 89, то мы на выходе получим 31.7 ºC. При этом текст до и после %{} остаётся без изменений.

ali_vlad 29.07.2016 23:03

Вопрос по GPIO.
Может я чего не так делаю
Добавляю новое действие, категория GPIO, определять ключ/значение автоматически. Замыкаю ножку GPIO на землю и тишина.

DelleTenebre 29.07.2016 23:25

ali_vlad, для нового gpio автоматически не получится получить ключ и значение. Алгоритм я сделал такой: при добавлении новой команды, если ключ соответствует шаблону gpioX (где X цифра), то инициализируется пин gpio с указанным номером в состояние in. Только после этого SM начинает его "слушать" и можно получить ключ/значение автоматически (хотя ключ уже есть). При удалении команд проверяется - если такой же номер GPIO не встречается ни в одной из команд, то пин GPIO отключается (через /sys/class/gpio/unexport).

Насколько я понял из документаций к разным платам с GPIO, их может быть сколько угодно с почти любыми номерами и лучше заранее не "слушать" всё подряд, так как неизвестно какие из них и для чего мог настроить пользователь.

ali_vlad 29.07.2016 23:33

Цитата:

Сообщение от DelleTenebre (Сообщение 365989)
ali_vlad, для нового gpio автоматически не получится получить ключ и значение. Алгоритм я сделал такой: при добавлении новой команды, если ключ соответствует шаблону gpioX (где X цифра), то инициализируется пин gpio с указанным номером в состояние in. Только после этого SM начинает его "слушать" и можно получить ключ/значение автоматически (хотя ключ уже есть). При удалении команд проверяется - если такой же номер GPIO не встречается ни в одной из команд, то пин GPIO отключается (через /sys/class/gpio/unexport).

У меня они называются /sys/class/gpio/gpiochip***. Это ничего?

DelleTenebre 29.07.2016 23:47

Не, это не те номера. /sys/class/gpio/gpiochip насколько я понимаю просто номера контроллеров GPIO, и хранят информацию и том за какие пины отвечают.

Если у Вас Odroid-XU4/3, то исходя из этой первой таблицы, например для 13 пина:

13 XE.INT13 GPX1.5 (#21)

прицепив провод на обозначенный на плате 13 пин, в SM надо писать gpio21. Как бы "логично" это не выглядело :) Я пока с этими номерами разобрался, плату чуть в окно не выкинул


Часовой пояс GMT +4, время: 09:16.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot