PDA

Просмотр полной версии : Serial Manager - автоматизация/управление Android с помощью Arduino


Страницы : [1] 2 3

DelleTenebre
18.04.2016, 22:01
Serial Manager v1.6.8 (обновлён 11.09.2016)

Github (https://github.com/delletenebre/SerialManager)
Яндекс.Диск (https://yadi.sk/d/I3iDSjOUr244c)



Serial Manager 2 v2.2.2 (обновлён 18.06.2017)

Google Play (https://play.google.com/store/apps/details?id=kg.delletenebre.serialmanager2)
Github + Документация (https://github.com/delletenebre/SerialManager2)



Уже реализовано / Планы на будущее:

Подключение по USB | v1.0
Виджеты для отображения данных | v1.2
Интеграция с Tasker | v1.2
Настройки data bits, stop bits, parity для usb-подключения | v1.3
Виджеты для отображения данных - интеграция с Remote Inputs Manager | v1.3
Виджеты для отправки данных | v1.4
Ручной выбор устройства для подключения | v1.5
Bluetooth соединение | v1.5
Команда <ключ:значение> - действие отправки команды | v1.6.0
Более удобный выбор иконок и цвета для виджетов
Категория Run Shell с правами su | v1.6.0
Категория Эмуляция клавиатуры [ Root ] | v1.6.0
Уведомления поверх остальных окон (для распознанной команды) | v1.6.6
Отправление сообщений на контроллер с помощью Tasker, Automate и т.д. | v1.6.0 [ как настроить (http://pccar.ru/showpost.php?p=362233&postcount=109) ]
Считывание состояния GPIO [ Root ] | v1.6.2 [ как настроить (http://pccar.ru/showpost.php?p=365899&postcount=176) ]
Установка состояния GPIO: low, high, invert [ Root ] | v1.6.3 [ как настроить (http://pccar.ru/showpost.php?p=365984&postcount=178) ]
Формулы и доп. функции для виджетов и уведомлений | v1.6.3 [ как настроить (http://pccar.ru/showpost.php?p=365984&postcount=178) ]
Работа через WebSocket | v1.6.5 [ как настроить (http://pccar.ru/showpost.php?p=366315&postcount=194) ]
Распознавание нажатий клавиш клавиатуры [ Root ] | v1.6.7 [ как настроить (http://pccar.ru/showpost.php?p=368258&postcount=229) ]
Работа напрямую через последовательный порт (/dev/tty*) [ Root ] | v1.6.8 [ как настроить (http://pccar.ru/showpost.php?p=369080&postcount=238) ]
Работа по I2C (/dev/i2c-*) [ Root ] | v1.6.8 [ как настроить (http://pccar.ru/showpost.php?p=369080&postcount=238) ]


Примеры скетчей для Arduino (https://duino.ru/arduino.html):

sketch_sample.ino (https://github.com/delletenebre/SerialManager/blob/master/arduino/sketch_sample.ino) - самый простой, начните с него
sketch_receive_from_android.ino (https://github.com/delletenebre/SerialManager/blob/master/arduino/sketch_receive_from_android.ino) - приём данных от SerialManager
sketch_i2c_sample.ino (https://github.com/delletenebre/SerialManager/blob/master/arduino/sketch_i2c_sample.ino) - пример соединения по шине I2C


Fake Serial Manager v1.0.0 (https://yadi.sk/d/I3iDSjOUr244c) - некоторые, например, GPS-приёмники или контроллер от YAM1966 (http://pccar.ru/member.php?u=22607) могут определяться как Serial-устройство и SerialManger забирает порт на себя. FakeSerialManager просто "забирает" окошко "запускать приложение при подключении устройства". У программы нет Activity и ярлыка.

Памятка При добавлении новой команды <ключ:значение>, поля Ключ и Значение могут быть автоматически заполнены:

включите опцию Определить ключ/значение автоматически;
нажмите кнопку на внешнем устройстве (чтобы в serial пришла команда <click:button1> например);
поля Ключ и Значение автоматически будут заполнены.


Памятка Описание к эмулируемым клавишам клавиатуры можно посмотреть здесь (http://developer.android.com/intl/ru/reference/android/view/KeyEvent.html#constants).

Памятка Если в настройках команды поле "Значение" оставить пустым, то команда будет распознана только по ключу (т.е. вторая часть команды ("значение") может быть любая).


https://cloud.githubusercontent.com/assets/3936845/14628267/0f187f52-061e-11e6-99bd-32a11287e663.png (https://cloud.githubusercontent.com/assets/3936845/14065232/ca2985c6-f443-11e5-8cf0-37bf12f44809.png) https://cloud.githubusercontent.com/assets/3936845/14628266/0eeeeaa2-061e-11e6-8ba9-ddcdcd18af6f.png (https://cloud.githubusercontent.com/assets/3936845/14065235/ca402d76-f443-11e5-9339-dc4e9bea6fff.png) https://cloud.githubusercontent.com/assets/3936845/14768555/4964f62a-0a67-11e6-998c-8fd2c06fd36d.png (https://cloud.githubusercontent.com/assets/3936845/14768535/eb8f24bc-0a66-11e6-8786-48165221b6b7.png) https://cloud.githubusercontent.com/assets/3936845/14768554/496358d8-0a67-11e6-8fc0-1eb2f97c5564.png (https://cloud.githubusercontent.com/assets/3936845/14768534/eb8eb59a-0a66-11e6-8664-4158df2e586a.png)


Примерный алгоритм работы такой:

USB & Bluetooth
При получении информации в формате <ключ:значение> будет исполнена заранее настроенная (на данный ключ) команда. Если ключ не был настроен в программе или была включена опция Сквозная команда, то создаётся Broadcast Intent, который могут получить сторонние программы.

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

При блокировке экрана (ACTION_SCREEN_OFF), через 2 секунды и если экран остаётся выключенным, фоновый сервис завершит работу.
При разблокировке экрана (ACTION_USER_PRESENT), через 2 секунды и если экран остаётся включенным, программа автоматически подключается к Arduino.


USB
Запуск/остановка сервиса, считывающено информацию с последовательного порта, производится при получении ACTION_USB_DEVICE_ATTACHED / ACTION_USB_DEVICE_DETACHED.

Bluetooth
Сервис запускается/завершает работу при включении/отключении Bluetooth на устройстве (BluetoothAdapter.STATE_ON / BluetoothAdapter.STATE_TURNING_OFF).





Интеграция с Tasker (и ему подобных):

При отсутствии настроенного <ключ:значение> или при включенной опции Сквозная команда, Serial Manager создаёт Broadcast Intent со следующими параметрами:


Action: kg.delletenebre.serial.NEW_DATA
Extras: key, value


Виджеты отображающие данные

Используя встроенные виджеты Serial Manager Receive Вы сможете, например, выводить данные с подключенных к Arduino датчиков. (https://duino.ru/Datchiki.html)

https://cloud.githubusercontent.com/assets/3936845/14628385/4275e35c-061f-11e6-85cf-ce96057d970f.png (https://cloud.githubusercontent.com/assets/3936845/14065233/ca29fd76-f443-11e5-9352-43e9c6050e1b.png) https://cloud.githubusercontent.com/assets/3936845/14628384/4274d2f0-061f-11e6-8a5e-814262473a7e.png (https://cloud.githubusercontent.com/assets/3936845/14065234/ca2b695e-f443-11e5-85b1-f1dceb48b5a2.png)

По умолчанию в виджетах используется шрифт Font Awesome и Вы можете совместно с текстом использовать иконки. Для вывода иконки необходимо использовать следующий формат \uXXXX, где XXXX код Unicode. Например для вывода иконки Android:

https://cloud.githubusercontent.com/assets/3936845/14628386/42aea340-061f-11e6-8195-39c12adabc15.png (https://fortawesome.github.io/Font-Awesome/icons/) https://cloud.githubusercontent.com/assets/3936845/14628388/431a5928-061f-11e6-8f5c-cf01dff052e4.png (https://cloud.githubusercontent.com/assets/3936845/14065227/ca0ad8b0-f443-11e5-8667-00c10b2c5280.png) https://cloud.githubusercontent.com/assets/3936845/14628387/4309671c-061f-11e6-879c-37b13c2219d1.png (https://cloud.githubusercontent.com/assets/3936845/14065228/ca0b2d60-f443-11e5-86b8-9e8c5692c0ea.png)

Можно использовать любой шрифт, для этого в настройках виджета необходимо включить опцию Использовать свой шрифт и указать путь к ttf файлу шрифта (предварительно скопированного во внутреннюю память устройства).

Для вывода текста по вертикали используется управляющий символ перевода на новую строку \n

https://cloud.githubusercontent.com/assets/3936845/14628381/423fd56e-061f-11e6-8b1e-51b54d2b137e.png (https://cloud.githubusercontent.com/assets/3936845/14065230/ca0e1e4e-f443-11e5-82cd-27a1007e1334.png) https://cloud.githubusercontent.com/assets/3936845/14628380/423f191c-061f-11e6-86f5-09dc0b681424.png (https://cloud.githubusercontent.com/assets/3936845/14065229/ca0b7eb4-f443-11e5-9a56-0499ea4b3e47.png)

Виджет отправки данных

Виджет Serial Manager Send позволяет отправлять данные на Arduino.

При включении опции Виджет-переключатель, Вы сможете последоватьльно отправлять разные данные, используя один и тот же виджет. Как пример - переключатель on/off. Демонстрационный скетч sketch_receive_from_android.ino (https://github.com/delletenebre/SerialManager/blob/master/arduino/sketch_receive_from_android.ino) имеет следующую логику: при считывании из последовательного порта on подаётся питание на пин 8, при получении off убирается питание. Подключив светодиод можно получить наглядную индикацию.

Добавьте новый виджет Serial Manager Send и настройте следующим образом:

Виджет-переключатель: ☑
Отправляемые данные: on|off
Текст / Иконка: \uf186|\uf185
Цвет шрифта: #9e9e9e|yellow
Размер шрифта: 64

Подключите Arduino к устройству Android и нажимайте на виджет. При отправленной команде on виджет будет иметь жёлтое солнце, при отправленной команде off - серый полумесяц.

https://cloud.githubusercontent.com/assets/3936845/14628379/423e2f3e-061f-11e6-8c84-00dea836a333.png (https://cloud.githubusercontent.com/assets/3936845/14588703/284bfe3c-04f1-11e6-8cea-b2ff694b7a6e.png) https://cloud.githubusercontent.com/assets/3936845/14628382/42401556-061f-11e6-927e-1025edfbc1cd.png (https://cloud.githubusercontent.com/assets/3936845/14588704/284cca9c-04f1-11e6-9c34-3a403b496d93.png) https://cloud.githubusercontent.com/assets/3936845/14628383/426c738a-061f-11e6-843a-397810e0538d.png (https://cloud.githubusercontent.com/assets/3936845/14588705/28735e0a-04f1-11e6-9f46-20e38107ead8.png)

Вы можете настроить сколько угодно переключаемых команд, для этого в поле Отправляемые данные добаляйте команды разделённые вертикальной чертой (pipe): |. Например pie|eclair|honey|marshmallow; данные будут отправляться следующим образом:

нажатие 1: pie
нажатие 2: eclair
нажатие 3: honey
нажатие 4: marshmallow
нажатие 5: pie
нажатие 6: eclair
нажатие 7: honey
...

Таким же образом можно настроить поля: Текст / Иконка, Цвет шрифта, Размер шрифта, Цвет фона.

DelleTenebre
18.04.2016, 22:21
Интеграция c Zooper Widget Pro (https://play.google.com/store/apps/details?id=org.zooper.zwpro) и Tasker (https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm)


С Arduino приходят следующие данные (прим. 20, 30, 40 - данные температурного датчика):
<InDoor:20>
<OutDoor:30>
<Engine:40>

Вы хотите их вывести в Zooper Widget Pro.
Для этого в Tasker'е:
1.0 Создаём новый Profile: + > Event > System > Intent Received
1.1 В поле Action пишем kg.delletenebre.serial.NEW_DATA
1.2 Сохраняемся (нажимаем назад). При выборе задачи нажимаем на New Task
2.0 Задаём любое имя новой задачи, например, ZooperTemperatureData
2.1 Нажимаем + > Task > If
2.2 В поля Condition:
%key [Equals] InDoor
Сохраняем
2.3 Нажимаем + > Plugin > Zooper Widget Pro
2.4 Нажимаем на карандаш справа от Configuration
2.5 В поле ZW Переменная пишем indoortemp
В поле ZW Текст пишем %value
Нажимаем Сохранить
Сохраняемся (нажимаем назад)
2.6 Нажимаем + > Task > Else
2.7 Нажимаем + напротив If
2.8 В появившиеся поля пишем
%key [Equals] OutDoor
Сохраняем
2.9 Повторяем пункты 2.3, 2.4
2.10 В поле ZW Переменная пишем outdoortemp
В поле ZW Текст пишем %value
Нажимаем Сохранить
Сохраняемся (нажимаем назад)
2.11 Повторяем 2.6 - 2.10 для <Engine:40>. Соответственно в условии: %key [Equals] Engine
В ZW Переменная пишем enginetemp
2.12 Нажимаем + > Task > End If
2.13 Нажимаем назад до тех пор пока не выйдем на главный экран Android'а

3.0 Добавляем виджет Zooper желаемого размера.
3.1 Выбираем желаемый вид (пустой или встроенный шаблон)
3.2 Заходим в Макет
3.3 Вверху нажимаем (+) ADD
3.4 Выбираем модуль Текст или Текст с форматированием
3.5 В категории Текст выбираем пункт Отредактировать вручную
3.6 В верхнем (почти неприметном) поле пишем #Tindoortemp#
Сохраняемся (кнопка OK)

3.? Для остальных аналогично с пункта 3.3, можно добавить в новые виджеты или для этого же виджета создать два модуля Текст или Текст с форматированием. Соответственно в пункте 3.6 будут значения #Toutdoortemp# и #Tenginetemp#

djdonatas
20.04.2016, 23:58
Круто! А есть (будет) какой-то вариант получить данные с двух источников (устройств), например с двух ардуин или с V4 контроллера Юры +по блютусу (когда будет) с ардуины?

DelleTenebre
21.04.2016, 09:29
вариант получить данные с двух источников
Хорошая идея, попробую реализовать USB + Bluetooth :)

ali_vlad
24.04.2016, 10:12
У меня такое предложение: добавить реакции на команду в ком-порте и добавить в "Категория" "Управление питанием" - "Сон" и "Выключение".
Ещё хотелка: перехват и отслеживание уровня яркости с отправкой команд в ком-порт.

kotya
24.04.2016, 11:49
подскажите,есть подобное на windows?

DelleTenebre
24.04.2016, 19:42
Выпуск 1.5 - многое изменил/оптимизировал, надеюсь к лучшему :) Есть небольшой минус, при обновлении скорее всего удалятся настроенные виджеты, а их настройки останутся мусором лежать в папке программы. Поэтому лучше или их удалить предварительно, или удалить программу и накатить по новой.

djdonatas, добавил возможность соединения по USB и Bluetooth одновременно.

ali_vlad, Сон теперь должен работать по "Эмуляция клавиатуры" > POWER. Выключение пока не реализовано, есть два варианта (c root'ом и без) буду пробовать (оставлю тут чтобы не потерять):
Intent i = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
i.putExtra("android.intent.extra.KEY_CONFIRM", true);
startActivity(i);

Runtime.getRuntime().exec(new String[]{ "su", "-c", "reboot -p" });


Ещё хотелка: перехват и отслеживание уровня яркости с отправкой команд в ком-порт.
Уточните, пожалуйста, Вы хотите отправлять уровень яркости с android'a к arduino или от arduino к android.

kotya, для Windows подобного подсказать не смогу, никогда не встречал.

ali_vlad
24.04.2016, 21:35
По поводу управления питанием: некоторые андроид-боксы не реагируют на клавиатурные кнопки "сон" и "power", только физической кнопкой на самой плате андроида.
По поводу перехвата яркости. В андроид-боксах есть бегунок изменения яркости, как в телефонах, но он естественно ничего не меняет, а менять яркость только на внешнем контроллере с пульта. Так вот суть моего предложения в следующем: прога при загрузке считыаает уровень яркости в системе и отсылает команду в ком-порт. Далее прога отслеживает состояние уровня яркости, и, если он изменяется, то отсылает соответствующую команду в ком-порт. На том конце ардуина или контроллер YAM уже обрабатывает поступившую команду, ну и занимается её выполнением. Как-то так...

djdonatas
24.04.2016, 21:37
Воу воу! Очень круто, я б купил! Когда, конечно дойдут руки настроить все =)
Может тогда к "протоколам" и например http добавить с простеньким api?
Тогда, по идеи, вообще количество и тип "источников" будет неограниченно. Да и те-же, допустим, 5 ардуин смогут скидывать свою инфу на шестую, которая будет сервером и будет отдавать уже оформленные данные. Сервер может и локальным быть и внешним.
зы: а сотрудничество с Юрой и его v4 контроллером продолжается? будет реализована отправка данных с виджета в контроллер и в шину?

oleg707
24.04.2016, 21:57
По поводу управления питанием: некоторые андроид-боксы не реагируют на клавиатурные кнопки "сон" и "power", только физической кнопкой на самой плате андроида.
По поводу перехвата яркости. В андроид-боксах есть бегунок изменения яркости, как в телефонах, но он естественно ничего не меняет, а менять яркость только на внешнем контроллере с пульта. Так вот суть моего предложения в следующем: прога при загрузке считыаает уровень яркости в системе и отсылает команду в ком-порт. Далее прога отслеживает состояние уровня яркости, и, если он изменяется, то отсылает соответствующую команду в ком-порт. На том конце ардуина или контроллер YAM уже обрабатывает поступившую команду, ну и занимается её выполнением. Как-то так...

по поводу яркости не проще ли датчик освещенности в контроллере поставить? тупо +1 нога

ali_vlad
24.04.2016, 22:24
Датчик освещенности, конечно, удобная фича, но...
Не, конечно, можно поставить датчик освещенности, настроить трансляцию ик-команд с одного приемника на народный контроллер, андроид-бокс, усилок и еще на что-нибудь... Но поймите меня правильно, мне хочется регулировать яркость с экрана. Не у всех же уксус в качестве ГУ. Если это сложно, то вопросов нет.

DelleTenebre
24.04.2016, 23:06
Может тогда к "протоколам" и например http добавить с простеньким api?
Вполне себе хорошая идея, можно и добавить, приму на заметку, но в скором времени не обещаю реализовать :)

а сотрудничество с Юрой и его v4 контроллером продолжается? будет реализована отправка данных с виджета в контроллер и в шину?
Всё что просили, я сделал. Приём работает. На счёт отправки разговора не было, но он должен работать. Если не ошибаюсь, ali_vlad тестировал, была проблема со скоростью отправки/обработки. У меня контроллера нет, и тестировать, к сожалению, не могу.

ali_vlad, с яркостью проблем нет, всё стало понятно. Единственное, уточните формат: типа brightness:255 или <brightness:128> или ещё как? Хоть b59.

Со сном и выключением не очень понятно. Про выключение я правильно понял (http://pccar.ru/showpost.php?p=359126&postcount=9)? Так же (программно) надо и в сон уводить? Или нужно отправлять команду в порт, а дальше какой-либо контроллер физически будет отключать?

ali_vlad
24.04.2016, 23:36
Вполне себе хорошая идея, можно и добавить, приму на заметку, но в скором времени не обещаю реализовать :)


Всё что просили, я сделал. Приём работает. На счёт отправки разговора не было, но он должен работать. Если не ошибаюсь, ali_vlad тестировал, была проблема со скоростью отправки/обработки. У меня контроллера нет, и тестировать, к сожалению, не могу.

ali_vlad, с яркостью проблем нет, всё стало понятно. Единственное, уточните формат: типа brightness:255 или <brightness:128> или ещё как? Хоть b59.

Со сном и выключением не очень понятно. Про выключение я правильно понял (http://pccar.ru/showpost.php?p=359126&postcount=9)? Так же (программно) надо и в сон уводить? Или нужно отправлять команду в порт, а дальше какой-либо контроллер физически будет отключать?
С яркостью, скорее всего, настраиваемая команда для отправки в ком-порт, типа той, что Вы указали. А с питанием - надо пинками загонять аппарат в сон и отключку :big: Наверно это решается программно.
Вот допилю рамку под монитор и займусь тестированием в плотную.

vasilij_c
26.04.2016, 22:46
... Но поймите меня правильно, мне хочется регулировать яркость с экрана. ..
странное желание. я наоборот, прицепил в ардуинке фоторезистор - чтобы в экран пальцами не тыкать. но, у каждого свои задумки...
...
а менять яркость только на внешнем контроллере с пульта.. ..
а таскером яркость меняется?

DelleTenebre из пожеланий: добавить в меню "категоря" Run Shell с правами su

MPPM
27.04.2016, 00:10
Здравствуйте уважаемый DelleTenebre, огромное спасибо за такое приложение, просто супер.Не переставайте его развивать очень актуально. У меня вопросик:

Добавьте новый виджет Serial Manager Send и настройте следующим образом:
Виджет-переключатель: ☑
Отправляемые данные: on|off
Текст / Иконка: \uf186|\uf185
Цвет шрифта: #9e9e9e|yellow
Размер шрифта: 64

Как я понял uf186 это Unicod, искал в Google но так и не нашел таблицу, а которую нашел та не совпадает с вашими символами. Я так понимаю в Android и Windows они разные. Вы не могли бы подсказать где её взять?
А вообще пожелание к проекту, что бы можно было выбирать любую пользовательскую картинку с фоном или без.
Еще раз огромное спасибо за приложение.

yuriy m
27.04.2016, 00:17
Класс . нормальная работа ! Это то ,что нужно... Но почему с ардуино леонардо не работает... Может я туплю (ночь на дворе)...:blush: С Remote Inputs Manager / Remote steering wheel control работает. А с Вашей тишина, хотя в настройках USB видит :sad2: Команды идут в формате
Serial.print("<click:");
Serial.print(data1);
Serial.print(">");
Что не так делаю ?
И заодно вопросик ,на сколько сложно сделать поддержку 2 ардуин по USB одновременно ?

MPPM
27.04.2016, 00:24
Класс . нормальная работа ! Это то ,что нужно... Но почему с ардуино леонардо не работает... Может я туплю (ночь на дворе)... С Remote Inputs Manager / Remote steering wheel control работает. А с Вашей тишина, хотя в настройках USB видит Команды идут в формате
Serial.print("<click:");
Serial.print(data1);
Serial.print(">");
Что не так делаю ?


Надо удалить Remote Inputs Manager или убрать из автозагрузки. Затем вынуть и вставить Ардуино, в настройках для леонардо поставить обязательно галку DTR.

Serg-Zmuh
27.04.2016, 08:56
то что надо RIM удалить это-то понятно ....
тут еще дело в другом...
оно у меня тоже не работает с Leonardo :( ,возможно дело в скетче ,там надо по-другому выводить ,я не шарю...
проблема появилась в версиях 1.4 и 1.5 ,а до этого все норм было.
В 1.2 версии все выводит норм на Лео, попробуй пока использовать версии 1.2 или 1.3
С DelleTenebre я отписываюсь о тестировании его версий ,он в курсе .... :)
я думаю он допилит сие творение ....
а прога действительно классная ,появилась в нужное время ! Молодца ! -что тут еще скажешь )

DelleTenebre
27.04.2016, 09:41
Как я понял uf186 это Unicod, искал в Google но так и не нашел таблицу, а которую нашел та не совпадает с вашими символами. Я так понимаю в Android и Windows они разные. Вы не могли бы подсказать где её взять?
По умолчанию в виджетах используется шрифт Font Awesome и Вы можете совместно с текстом использовать иконки. Для вывода иконки необходимо использовать следующий формат \uXXXX, где XXXX код Unicode
Таблицу можно посмотреть тут (https://fortawesome.github.io/Font-Awesome/icons/) кликая на нужную иконку Вы увидите:

https://cloud.githubusercontent.com/assets/3936845/14628386/42aea340-061f-11e6-8195-39c12adabc15.png


А вообще пожелание к проекту, что бы можно было выбирать любую пользовательскую картинку с фоном или без.
Буду иметь в виду.
--------

С Remote Inputs Manager / Remote steering wheel control работает. А с Вашей тишина, хотя в настройках USB видит
Надеюсь Вы не выбрали "Запускать по умолчанию" RIM при подключении устройства, а то SerialManager не получит прав на доступ к arduino. Либо
Надо удалить Remote Inputs Manager или убрать из автозагрузки.

--------

У меня так же возникла проблема при выводе данных с температурного датчика, было в скетче как и у Вас примерно:
Serial.print("<temp0:");
Serial.print(temp,1);
Serial.print(">");

SerialManager получал данные в виде:
<temp0:
35.3>
Т.е. две разные строчки, которые не являются командой для распознавания. Затем я изменил в скетче:
Serial.print("<temp0:" + String(temp) + ">");
И всё заработало как надо. В принципе, для решения этой проблемы есть один очень не элегантный вариант, который был в версиях 1.2 и 1.3, т.е. считываем строку, если она не является командой (например "<temp0:"), то запоминаем её, затем ждём второе считывание команды, и если она так же не является командой, то соединяем её с запомненной строкой ("<temp0:" + "35.3>") и пытаемся распознать. Скорее всего добавлю этот вариант как отключаемую опцию.

Serg-Zmuh, у Вас вообще странные вещи происходят:

04-26 12:27:23.955 D/Receive USB(8237): <Vo
04-26 12:27:23.958 D/Receive USB(8237): ltag
04-26 12:27:23.963 D/Receive USB(8237): e:21
04-26 12:27:23.967 D/Receive USB(8237): .11>
04-26 12:27:24.068 D/Receive USB(8237): <In
04-26 12:27:24.085 D/Receive USB(8237): Door
04-26 12:27:24.087 D/Receive USB(8237): :0>

Мне кажется тут проблема в скорости передачи данных (либо Android слишком быстро считывает, либо Arduino слишком медленно отдаёт), хотя хз, буду дальше экспериментировать.

--------

на сколько сложно сделать поддержку 2 ардуин по USB одновременно ?
Теоретически возможно, но для меня, пока что, сложно. В отдалённой перспективе попробую добавить, но обещать не буду :)

MPPM
27.04.2016, 09:46
Не знаю как выводить данные - не пробовал, но кнопки версия 1.5 от Леонардо отлавливает на ура. А выводить данные вроде как надо ставить задержку в скетче не менее 1 сек.

MPPM
27.04.2016, 09:55
DelleTenebre огромное спасибо за таблицу. А на счет передачи данных, сегодня проверю.

YAM1966
27.04.2016, 10:03
Как мне кажется лучше сделать окончанием команды cr или lf или символ '>'. Пока не получено, накапливать просто в буфер. А по окончании уже анализировать...
Тогда и не будет проблем с разрывом. А разрывы будут всегда, ведь передача по USB пакетная.

Serg-Zmuh
27.04.2016, 10:03
Не знаю как выводить данные - не пробова, но кнопки версия 1.5 от Леонардо отлавливает на ура. А выводить данные вроде как надо ставить задержку в скетчи не менее 1 сек.

хммм... думаешь задержка ?
попробую седня в скетче задержки увеличить

P.S. видите ли такое дело ...я понимаю что тяжело универсальную прогу сделать,
с учетом что еще и прошивки у всех разные ...
вот у мня в машине щаз 4.4 кастом от РАСман с Leonardo,на столе обкатываю 5.1 ,тоже кастом ,но с репликой UNO r3 - это чтоб потом в машину перенести :rolleyes2:

Serg-Zmuh
27.04.2016, 10:17
Как мне кажется лучше сделать окончанием команды cr или lf. Пока не получено, накапливать просто в буфер. А по окончании уже анализировать...
Тогда и не будет проблем с разрывом. А разрывы будут всегда, ведь передача по USB пакетная.

кстати да, я на будущее планирую вот такой (http://ru.aliexpress.com/item/100-NEW-MPX4250AP-SENSOR-ABS-PRESS-36-3-PSI-MAX/1016720595.html) датчик на измерение boost'a турбы через ардуино выводить ...
а там скорость считывания думаю будет играть главную роль :blush:

MPPM
27.04.2016, 11:34
Только что пробовал прием данных. Принимал от кнопок.Результат если нажимаеш 1 раз в секунду то отлавливает, если чаще то нет. Вывод - задержка в скетче. Для буста конечно многовато.Надо просить у DelleTenebre что бы исправил.

DelleTenebre
27.04.2016, 11:37
Как мне кажется лучше сделать окончанием команды cr или lf. Пока не получено, накапливать просто в буфер. А по окончании уже анализировать...
Так и попробую сделать.

yuriy m
27.04.2016, 11:45
Я ж говорю утро вечера мудренее :rolleyes2: Подключилось.


Теоретически возможно, но для меня, пока что, сложно. В отдалённой перспективе попробую добавить, но обещать не буду :)

Если получится,это будет ООчень хорошо , за ранние спасибо.
Теперь по тестам... при выходе со сна и передергивания OTG почти всегда пишет "USB device not supported " Нужно пару раз передернуть... Как победить ?

Еще заметил периодически отваливается связь и всплывает сообщение "USB device not supported "

vasilij_c
27.04.2016, 12:17
Serial.print("<temp0:");
Serial.print(temp,1);
Serial.print(">");

SerialManager получал данные в виде:
<temp0:
35.3>
Т.е. две разные строчки, которые не являются командой для распознавания. Затем я изменил в скетче:
Serial.print("<temp0:" + String(temp) + ">");..

у меня такая конструкция нормально работает:

mySerial.print("<data:");
mySerial.print(i++);
mySerial.println(">");

скорость 9600. может дело в println?

Serg-Zmuh
27.04.2016, 14:13
DelleTenebre

У мня все завелось на Leonardo :tease:
проверил на обоих уксусах и наверсии 4.4 и 5.1 !
залил последний твой скетч с поправками и гуд
а вот на UNO r3 пока что индейская народная изба (фигвам) :whistle:
видать там точно что-то со скоростью передачи данных не так....

P.S. буду тестить ездить ,так как отвалы иногда происходят ,приходится отг передергивать

MPPM
27.04.2016, 18:26
+1 Тоже где-то через часов 10 отвалился. Переставил в настройках USB-устройство для подключения с автоматического на Arduino. Буду дальше тестить на отвалы.

yuriy m
27.04.2016, 21:08
+1 Тоже где-то через часов 10 отвалился. Переставил в настройках USB-устройство для подключения с автоматического на Arduino. Буду дальше тестить на отвалы.

Тут еще косяк в андроиде есть... Если в хабе несколько устройств ,то периодически меняются адреса ... Я пока сильно не разбирался ,но не так как в винде или даже монтирование в линуксе. Как то здесь все урезано:sad2: Допустим втыкаем флешку ,определяется как USB2002 если просто флешку передернуть ,то уже USB2003 и т.д. пока OTG не передернуть , а если в в хабе много чего стоит ,такая херня начинается... Здесь по ходу едро ковырять надо...:blush:

DelleTenebre
28.04.2016, 14:05
SerialManager-1.6-beta-1 (https://yadi.sk/d/I3iDSjOUr244c) в настройках можно включить пункт "Распознавать команду по новой строке" (отдельно для BT и USB). Это реализация идеи YAM1966 (http://pccar.ru/showpost.php?p=359278&postcount=24). Если заработает - благодарности ему. Кому не лень - тестируем :)

Serg-Zmuh
28.04.2016, 15:03
SerialManager-1.6-beta-1 (https://yadi.sk/d/I3iDSjOUr244c) в настройках можно включить пункт "Распознавать команду по новой строке" (отдельно для BT и USB). Это реализация идеи YAM1966 (http://pccar.ru/showpost.php?p=359278&postcount=24). Если заработает - благодарности ему. Кому не лень - тестируем :)

Во! нормуль - затестим :pleasantry:

MPPM
28.04.2016, 15:52
Сообщение от MPPM Посмотреть сообщение
+1 Тоже где-то через часов 10 отвалился. Переставил в настройках USB-устройство для подключения с автоматического на Arduino. Буду дальше тестить на отвалы.
Такая же петрушка, примерно через 10 часов отвалился, пришлось передергивать хаб. Уважаемый DelleTenebre возможно ли как-то решить эту проблему???

P. S. Не знаю, возможно поможет поковырять код организации USB в приложение PPP Widget - это приложение для 3G свистка подключаемого к планшету у которого нет 3G. Сам пользуюсь, стабильная работа в хабе без отвалов.

DelleTenebre
28.04.2016, 17:09
где-то через часов 10 отвалился
Знать бы в чём природа этого явления... В машине тоже столкнулся с этой проблемой (Nexus 7 2013 (android 5.1.1)), дома никак не получается воспроизвести :( Есть какая-либо закономерность? Просто оставлял включёным (через хаб) в Nexus 7 2012 (android 6.0) - нормально всё за ~14 часов.

PPP Widget - код обфусцирован.

P.S. Если кто столкнётся с отваливанием и последующем сообщением "USB device not supported", пожалуйста, попробуйте остановить SerialManager и запустить опять. Если подключится - значит глюк программный.

MPPM
28.04.2016, 17:33
OK!!!

ali_vlad
28.04.2016, 20:04
Эмуляция нажатия POWER это выключение?

DelleTenebre
28.04.2016, 21:33
Эмуляция нажатия POWER это выключение?
Эмуляция короткого нажатия на кнопку питания, обычно сон/выход из сна.

ali_vlad
28.04.2016, 22:24
Количество эмулируемых клавиш/действий приятно удивило, только не всё понял :)
В одной программе видел возможность запускать приложения не с главного экрана, а с другого, имеющегося. Если не ошибаюсь, запуск activity приложения.
Есть ли возможность реализации этого? Если нет, то никто не обидится. :)

DelleTenebre
28.04.2016, 23:27
Тут (http://developer.android.com/intl/ru/reference/android/view/KeyEvent.html#constants) к некоторым клавишам есть описание на английском

Если не ошибаюсь, я видел запуск Activity у Secure Settings (плагин к Tasker) или у самого таскера.

Serg-Zmuh
29.04.2016, 03:38
SerialManager-1.6-beta-1 (https://yadi.sk/d/I3iDSjOUr244c) в настройках можно включить пункт "Распознавать команду по новой строке" (отдельно для BT и USB). Это реализация идеи YAM1966 (http://pccar.ru/showpost.php?p=359278&postcount=24). Если заработает - благодарности ему. Кому не лень - тестируем :)

на UNO R3 завелось наконец-то! :yes4:
именно с включенной новой опцией !
этож замечательно - прогресс прогрессирует !!!

Alekssandr
01.05.2016, 05:52
DelleTenebre Программа выше всяких похвал!

Былоб не плохо увидить в будущем возможность создавать что-то вроде папок в списке ключей. Чисто для удобства. :)

DelleTenebre
01.05.2016, 22:01
SerialManager-1.6-beta-2 (https://yadi.sk/d/I3iDSjOUr244c), добавлено:
Отправка уровня яркости (2 варианта, в настройках) Суть проблемы (http://pccar.ru/showpost.php?p=359133&postcount=10) и ещё (http://pccar.ru/showpost.php?p=359139&postcount=13)
Чудесным образом работает подключение нескольких ардуин по USB (спасибо lti1 (http://pccar.ru/private.php?do=showpm&pmid=290692) за подсказку)
Команда <ключ:значение> - действие отправки команды
Run Shell с правами su
Управление системой: выключение, перезагрузка, установка яркости экрана.
Ну и по мелочам там чуток оптимизировал :)

ali_vlad
01.05.2016, 23:38
SerialManager-1.6-beta-2 (https://yadi.sk/d/I3iDSjOUr244c), добавлено:
Отправка уровня яркости (2 варианта, в настройках) Суть проблемы (http://pccar.ru/showpost.php?p=359133&postcount=10) и ещё (http://pccar.ru/showpost.php?p=359139&postcount=13)
Чудесным образом работает подключение нескольких ардуин по USB (спасибо lti1 (http://pccar.ru/private.php?do=showpm&pmid=290692) за подсказку)
Команда <ключ:значение> - действие отправки команды
Run Shell с правами su
Управление системой: выключение, перезагрузка, установка яркости экрана.
Ну и по мелочам там чуток оптимизировал :)
Сударь, Вы кудесник 80-го уровня! Респект и уважуха!!!

DelleTenebre
02.05.2016, 18:01
В SerialManager-1.6-beta-3 (https://yadi.sk/d/I3iDSjOUr244c) исправил косяк с установкой яркости + яркость можно отсылать и как 0..255 и 0%..100%. Так же теперь, если в настройках команды оставить поле "Значение" пустым, то команда будет распознана только по ключу (т.е. вторая часть команды ("значение") может быть любая).

YAM1966
02.05.2016, 21:03
В SerialManager-1.6-beta-3 (https://yadi.sk/d/I3iDSjOUr244c) исправил косяк с установкой яркости + яркость можно отсылать и как 0..255 и 0%..100%. Так же теперь, если в настройках команды оставить поле "Значение" пустым, то команда будет распознана только по ключу (т.е. вторая часть команды ("значение") может быть любая).

За это премного благодарен! :yes2:
Еще бы как-то настройки экспортировать/импортировать... :blush:

nikopol70
04.05.2016, 10:07
читаю тему не первый раз... вроде все понятно что зачем...
но не могу понять электросхемы - ее нету и не могу в голове ее сложить

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

papant
04.05.2016, 10:12
читаю тему не первый раз... вроде все понятно что зачем...
но не могу понять электросхемы - ее нету и не могу в голове ее сложить

может кто то набросать простой пример - что как и для чего использовать....
что-то не понял про какую электросхему речь? Берешь ардуину, по ЮСБ цепляешь к планшету, балуешься )

nikopol70
04.05.2016, 10:28
что-то не понял про какую электросхему речь? Берешь ардуину, по ЮСБ цепляешь к планшету, балуешься )

а к ардуине что цеплять? кнопки? - по какой схеме?
датчики и т.д.? какие и как....

Serg-Zmuh
04.05.2016, 11:13
а к ардуине что цеплять? кнопки? - по какой схеме?
датчики и т.д.? какие и как....

начни читать отсюда (http://www.pccar.ru/showthread.php?t=21272)

все пошло от той темы ,там и схемы есть ....
там в общем все применимо к проге DelleTenebre :yes4:

nikopol70
04.05.2016, 12:25
начни читать отсюда (http://www.pccar.ru/showthread.php?t=21272)

все пошло от той темы ,там и схемы есть ....
там в общем все применимо к проге DelleTenebre :yes4:

а данная програмка в купе с ардуино может вывести данные на экран планшета с магнитолы? частота FM и тд... короче все что написано на дисплее магнитолы:be:

oleg707
04.05.2016, 12:35
а данная програмка в купе с ардуино может вывести данные на экран планшета с магнитолы? частота FM и тд... короче все что написано на дисплее магнитолы:be:

я думаю может. надо только, чтобы магнитола отдала эти данные ардуине по кан-шине или по i2c, а это уже отдельная история

nikopol70
04.05.2016, 12:37
я думаю может. надо только, чтобы магнитола отдала эти данные ардуине по i2c, а это уже отдельная история

а подробнее? или где почитать что и как?:shok:

lti1
04.05.2016, 12:45
а подробнее? или где почитать что и как?:shok:
Например здесь: CITROEN-ARDUINO (http://pccar.ru/showthread.php?t=23275)

nikopol70
04.05.2016, 19:36
начал разбираться с нуля, залил тестовый скетч, ардуина леонардо

прицепил светодиод на пин 8 (digital как я понял) вторым концом естественно на землю

создал виджет по инструкции с первого поста...
менеджер мою леонардо увидел
тапаю по виджету - диод не горит

перецепил диод на А8 - горит все время постоянно... не выключаясь:tease:

что я делаю не так

YAM1966
04.05.2016, 19:43
начал разбираться с нуля, залил тестовый скетч, ардуина леонардо
........
что я делаю не так

Начались крики ардуинщиков :spiteful:
А сначала самому проверить проходит ли команда в ардуину?
Обычную терминальную программу под винду или андроид еще не отменяли.

nikopol70
04.05.2016, 19:47
Начались крики ардуинщиков :spiteful:
А сначала самому проверить проходит ли команда в ардуину?
Обычную терминальную программу под винду или андроид еще не отменяли.

команду принимает....
я не кричу... :blink2:, пытаюсь разобраться... не всем дано с пол пинка, кому то нужно больше :rolleyes2:

YAM1966
04.05.2016, 20:04
команду принимает....
я не кричу... :blink2:, пытаюсь разобраться... не всем дано с пол пинка, кому то нужно больше :rolleyes2:

Ну, если пытаетесь разобраться это хорошо, но тема-то не об этом.
Для разбирательств есть хороший ресурс (http://arduino.ru/Reference).

yuriy m
04.05.2016, 21:21
Чудесным образом работает подключение нескольких ардуин по USB (спасибо lti1 (http://pccar.ru/private.php?do=showpm&pmid=290692) за подсказку)


И действительно работает! Ай да молодцы ! под мое железо этого и не хватало ... Спасибо.

yuriy m
04.05.2016, 21:23
Еще бы как-то настройки экспортировать/импортировать... :blush:

поддерживаю :smile2:

И еще пожелание ,раз задача управлять ардуиной... Может типо создать виджета или вкладки с ползунками ,отсылать данные в ардуино, один из смыслов управление звуком (перед зад и т.д.) Возможно ли ?
А , и еще вопрос... Пока руки не дошли... Как передовать данные на две ардуины по usb ? Как идефецировать на какую отправлена команда ? Какой формат должен быть ?

DelleTenebre
05.05.2016, 14:53
Может типо создать виджета или вкладки с ползунками ,отсылать данные в ардуино, один из смыслов управление звуком (перед зад и т.д.) Возможно ли ?
ХЗ, буду пробовать.

Как передовать данные на две ардуины по usb ? Как идефецировать на какую отправлена команда ? Какой формат должен быть ?
Сейчас передаёт в обё, соответственно обрабатывать нужно в скетче (т.е. ардуина сама должна определить что команда для неё предназначена), формат на Ваш вкус.

YAM1966
05.05.2016, 15:17
Ну, раз пошла такая пьянка, то стоит задуматься и о возможности создания своих экранов с нужными элементами управления и своими сценариями работы.
Т.е., например один для настройки параметров усилителя, второй для управления приемником, третий для, скажем системы кругового обзора и т.д...
Тогда каждый сможет под себя сделать только нужные ему элементы управления оборудованием в авто.

Что-то меня уже понесло.... :rolleyes2:

yuriy m
05.05.2016, 16:30
Что-то меня уже понесло.... :rolleyes2:
Присоединяюсь:big:

ali_vlad
05.05.2016, 17:42
Ну, раз пошла такая пьянка, то стоит задуматься и о возможности создания своих экранов с нужными элементами управления и своими сценариями работы.
Т.е., например один для настройки параметров усилителя, второй для управления приемником, третий для, скажем системы кругового обзора и т.д...
Тогда каждый сможет под себя сделать только нужные ему элементы управления оборудованием в авто.

Что-то меня уже понесло.... :rolleyes2:

Это уже фронтэнд получится:big:
У одной китайской балалайки подглядел такую фишку: в настройках выбирается программа навигации, воспроизведения аудио, видео, диагностики. На морде тыкается физическая кнопка и запускается уже нужная программа.
Что-то меня тоже понесло... Это уже для совсем ленивых:big:

YAM1966
05.05.2016, 17:49
Это уже фронтэнд получится:big:
....

Ну, в принципе так реализовано построение своих менюшек на головах с WINCE.
43651

И, кстати, этот файл и является собственно файлом всех настроек для программы.
Программу убил, восстановил, перенес, настройки сохранились.

lti1
05.05.2016, 18:13
Это уже фронтэнд получится:big:
У одной китайской балалайки подглядел такую фишку: в настройках выбирается программа навигации, воспроизведения аудио, видео, диагностики. На морде тыкается физическая кнопка и запускается уже нужная программа.
Что-то меня тоже понесло... Это уже для совсем ленивых:big:
Уважаемый DelleTenebre (http://pccar.ru/member.php?u=26571) уже добавил такой функционал в свое приложение Serial Manager (http://pccar.ru/showthread.php?t=24120).

ali_vlad
05.05.2016, 18:30
Уважаемый DelleTenebre (http://pccar.ru/member.php?u=26571) уже добавил такой функционал в свое приложение Serial Manager (http://pccar.ru/showthread.php?t=24120).

Я, как бэ, в курсе про эту возможность. Я немного о другом, о фронтэнде, по поводу которого здесь раскатали варежки😆

DelleTenebre
07.05.2016, 19:26
SerialManager-1.6-beta-4 (https://yadi.sk/d/I3iDSjOUr244c), добавил:
Импорт/Экспорт команд;
Сортировку команд (перетаскивание выше/ниже)

При первом запуске будет предложено импортировать настроенные команды. Очень теоретически тут возможны проблемы, но этим стоит пожертвовать :)
После импорта старых команд Вы не увидите у них строчки с действием - это нормально, просто придётся тыркнуть на каждую из них и строчка восстановится.

Так как переделал формат хранения возможно отвалились какие-либо функции. Найдёте - пишите :)

P.S. "Сохранить команды" - сохраняет backup команд в корень памяти, файл serial_manager_backup.json

MPPM
11.05.2016, 00:02
По поводу фронтэнда. Есть такая мысль, на базе ардуино, двух-трех сервоприводов и датчика температуры сделать климат контроль с отображением на планшете.Тем самым выкинуть крутилки освободив место под планшет.Но для этого нужна достойная визуализация.Тема очень даже актуальна для автомобилей без климата, да я думаю что и есть автомобили в которых климат на планшете будит смотреться достойней чем родной.Ну, а думаю подружить родной климат с ардуино это уже дело техники.

oleg707
11.05.2016, 00:14
По поводу фронтэнда. Есть такая мысль, на базе ардуино, двух-трех сервоприводов и датчика температуры сделать климат контроль с отображением на планшете.Тем самым выкинуть крутилки освободив место под планшет.Но для этого нужна достойная визуализация.Тема очень даже актуальна для автомобилей без климата, да я думаю что и есть автомобили в которых климат на планшете будит смотреться достойней чем родной.Ну, а думаю подружить родной климат с ардуино это уже дело техники.

есть один момент.... когда ЭТО откажется работать в -40, а тебе жену рожать везти надо - тут и ценишь простоту и надёжность крутёлок.

yuriy m
11.05.2016, 00:19
есть один момент.... когда ЭТО откажется работать в -40, а тебе жену рожать везти надо - тут и ценишь простоту и надёжность крутёлок.

Ну.... У меня климат контроль в машине и не одной крутелки ,все работает по заводу.
Кто-ж мешает написать софт в ардуино по дефолту (положение заслонок,скорость вентилятора и т.д.),а после загрузки планшета ,заливаются сохраненные настройки. Так надежность ограничена ардуиной + железо...
ЗЫ. вот именно для разной дополнительной фигни я и леплю свой проект...

MPPM
11.05.2016, 22:29
есть один момент.... когда ЭТО откажется работать в -40, а тебе жену рожать везти надо - тут и ценишь простоту и надёжность крутёлок.
Ну, это дело каждого кто хочет делает, кто не хочет не делает.

armlive
12.05.2016, 12:01
Ну, это дело каждого кто хочет делает, кто не хочет не делает.
Верно

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

настройки сохранятся должны в контроллере, так надежней.

yuriy m
12.05.2016, 13:15
настройки сохранятся должны в контроллере, так надежней.
Да можно и в контроллере, главное ,что система почти не зависит от головы.. Ну это для тех кто сильно переживает за надежность...

maxymike
13.05.2016, 13:44
Все работает на nano, спасибо. Не разотрете по-поводу таскера поподробней?Как запускать разные таски с кнопок руля? Я создаю профиль-события-система-intent received-дйствие( kg.delletenebre.serial.NEW_DATA),но строки Extras куда вбивать? Иначе отлавливается всего один таск по приходу интента?

maxymike
13.05.2016, 14:20
А,извините,нашел ярлыки тасков в приложении. Ну теперь вообще шоколад

oleg707
13.05.2016, 16:56
а что в ардуину лить? может прошивку в шапку закинуть?

YAM1966
13.05.2016, 18:05
а что в ардуину лить? может прошивку в шапку закинуть?
Как-бы кто что захочет, то и зальет... Ардуина или любая другая железяка с виртуальным COM портом должна просто выдавать <ключ:значение>...
Ну или принимать их для возможности управления с планшета.

Sergey 4_4
19.05.2016, 20:54
Ув.DelleTenebre. Использую контроллер от YAM1966,он в программе настройки добавил возможность выводить имя/номер источника с помощью виджета Serial Manager. Не могли бы вы добавить в приложение возможность вывода имени/номера источника в шторку уведомлений? Например так как в Smart Keyboard выводиться инфа о текущем языке.

DelleTenebre
20.05.2016, 21:09
Sergey 4_4, ок, добавлю. Но сейчас совсем нет времени, поэтому если не хотите ждать можно попробовать Overlays (https://play.google.com/store/apps/details?id=com.applay.overlay). Я через неё виджет с температурой в шторку уведомлений запихнул.

Sergey 4_4
20.05.2016, 22:36
Sergey 4_4, ок, добавлю. Но сейчас совсем нет времени, поэтому если не хотите ждать можно попробовать Overlays (https://play.google.com/store/apps/details?id=com.applay.overlay). Я через неё виджет с температурой в шторку уведомлений запихнул.Да подожду конечно! С помощью Overlays вывожу тоже,но на экран,а как виджет в шторку запихнуть?

papant
23.05.2016, 07:00
Друзья!
Кто-нибудь разобрался с выполнением Таскером задач? У меня та же ситуация как у Maxymike:
Все работает на nano, спасибо. Не разотрете по-поводу таскера поподробней?Как запускать разные таски с кнопок руля? Я создаю профиль-события-система-intent received-дйствие( kg.delletenebre.serial.NEW_DATA),но строки Extras куда вбивать? Иначе отлавливается всего один таск по приходу интента?
Нельзя ли поподробнее (желательно со скринами) что и как сделать в Таскере? Тоже не понял куда девать Extras

Все, разобрался - надо было выбрать "приложение" и в появившемся окне выбрать "ярлык" и указать на Таскер

maxymike
24.05.2016, 03:22
Но у меня все равно таски через ярлык очень глючно работают. Это только у меня?

papant
24.05.2016, 13:12
Но у меня все равно таски через ярлык очень глючно работают. Это только у меня?
В чем глюк? У меня вроде работают

DelleTenebre
24.05.2016, 17:45
С помощью Overlays вывожу тоже,но на экран,а как виджет в шторку запихнуть?
Не элегантно конечно, но более-менее мне подходит - во вложении пару скриншотов. Для этого при настройке виджета укажите в пункте "Расположение текста" > "Вверху слева" (или по центру, или справа). И задайте прозрачный фон. Так же можете подобрать размер шрифта.

Но у меня все равно таски через ярлык очень глючно работают. Это только у меня?
Если можно поподробнее. Должно без всяких проблем работать (но возможна задержка до 1 секунды).

Нельзя ли поподробнее (желательно со скринами) что и как сделать в Таскере? Тоже не понял куда девать Extras
На всякий случай: во втором сообщении темы (http://pccar.ru/showpost.php?p=358757&postcount=2) есть скриншоты (Пункт 2.2). Т.е. при настройке самой задачи (Task) Вы можете использовать переменные %key и %value.

Alekssandr
26.05.2016, 16:01
DelleTenebre Спасибо огромное за такое классное приложение!

И у меня есть две не большие просьбы.
1) Есть ли возможность добавить в категорию "Плеер", функции "Воспроизведения" и "Пауза" по отдельности?

В категории "Эмуляция клавиатуры [ROOT], есть функция "MEDIA_STOP" в принципе её было бы достаточно. Но она работает не на все приложения, допустим если слушать музыку с приложения "вконтакте" она на неё не реагирует.

2) И не плохо бы получить возможность отправлять на ардуино информацию отключен или включён экран планшета.

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


==Ситуация, для чего нужно по отдельности "Воспроизведения" и "Пауза"==
Допустим: планшет спит музыка не играет, по блютус пришли команды, ваше приложение обработало, нажать кнопку "POWER" и нажать кнопку "Воспроизведения/Пауза". Планшет проснулся, музыка заиграла. Отправим опять эти-же команды. Планшет заснул музыка остановилась, всё классно, всё работает:)

Но, когда планшет не спит и мы поставили музыку на паузу сами. Выключили зажигание и пришла команда нажать кнопку "POWER" и нажать кнопку "Воспроизведения/Пауза", то у нас планшет засыпает, но включает воспроизведение музыки (т.е. ардуино запутался)

==Ситуация, для чего нужно определение состояния дисплея планшета на ардуино==
Допустим: планшет спит, приходит команда на нажатие кнопки "POWER" планшет проснулся, опять пришла команда, планшет заснул и так по кругу. Всё классно, всё работает:)

Но, когда планшет не спит и мы затушили экран экран сами (я бывает его отключаю когда еду далеко и ночью), куда то доехали выключили зажигание и пришла команда нажать кнопку "POWER", экран засветился а зажигание отключено (т.е. ардуино запутался)

Думаю достаточно подробно объяснил для чего будут полезны эти функции, если они будут то это будет, ну просто бомба) Так как логику включений, отключений и т.п. можно будет запрограммировать исходя из этих данных на ардуино.

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

Sergey 4_4
27.05.2016, 20:09
Не элегантно конечно, но более-менее мне подходит - во вложении пару скриншотов. Для этого при настройке виджета укажите в пункте "Расположение текста" > "Вверху слева" (или по центру, или справа). И задайте прозрачный фон. Так же можете подобрать размер шрифта.Так примерно и предполагал,спасибо. Но мне немного не подходит,так как оболочка у меня на сценах Таскера организована. И при появлении сцены,она виджет будет закрывать. А шторку уведомлений видно всегда,поэтому подожду Вашего решения со шторкой.

Serg-Zmuh
30.05.2016, 11:14
вот такой вопрос назрел в процессе тестов....
у мня происходят частенько отвал или не запуск проги ,не пойму ....
для того чтоб заработало надо передернуть OTG-хаб (при этом флешка читается в хабе)
у мну только вывод с ардуино темп-ры 3-х датчиков.

Вопрос у кого какая прошивка на Нехусе 2013 ,у мну стоит от РАС-ROM
может из-за прошивки

пробовал в программе настройки по разному делать и с остановкой сервиса
по гашению экрана и без - один фиг отвалы-зависоны есть
а если при этом еще и видеоклипы крутятся МХ-плеером ,то через некоторое время начинает лагать .... (это зависит от того сколько раз было включений-выключений к хабу), как-будто бы память забивается чтоли...., останавливаешь сервис сериалменеджер становится норм все ,но порой приходится перезагружать планшет
у мну у одного так ? просто интересно ... ищу истину :)

DelleTenebre
31.05.2016, 21:01
Serg-Zmuh, у меня похожая ситуация (Nexus 7 2013 WiFi, CM12) - раз в 2-3 дня отваливается. Но разница в том, что перестаёт работать и easycap (подключен через реле замыкающее питание). Я грешил на хаб, теперь хз. Самое странное, что дома ни как не удаётся воспроизвести "отваливание".

Sergey 4_4
31.05.2016, 23:30
Serg-Zmuh, у меня похожая ситуация (Nexus 7 2013 WiFi, CM12) - раз в 2-3 дня отваливается. Но разница в том, что перестаёт работать и easycap (подключен через реле замыкающее питание). Я грешил на хаб, теперь хз. Самое странное, что дома ни как не удаётся воспроизвести "отваливание".Имею похожую проблему и с прогой и с easycap,думаю проблема в хабе. У меня Длинк серый.Где-то читал,что как-то меняется нумерация портов,соответственно воткнутых в эти порты устройств.Может поэтому приложение перестаёт принимать настроенные команды?

yuriy m
31.05.2016, 23:43
Имею похожую проблему и с прогой и с easycap,думаю проблема в хабе. У меня Длинк серый.Где-то читал,что как-то меняется нумерация портов,соответственно воткнутых в эти порты устройств.Может поэтому приложение перестаёт принимать настроенные команды?

Теплее:smile2: мой пост 33 , ИХМО нужно с андрюшей разбираться...

Sergey 4_4
01.06.2016, 00:15
Теплее:smile2: мой пост 33 , ИХМО нужно с андрюшей разбираться...Андрюша он такой разбираешься с одним,тут же другой нарисовывается:wink2:А пост не Ваш был, что-то Rage2 писал про эксперементы с установкой хаба в другой хаб,сейчас не помню в какой теме было.

MPPM
01.06.2016, 09:29
По поводу отвалом, как я писал раньше у меня такая же ситуация. Но дело мне кажется не в хабе. У меня carpc собран на базе платы banana pi - там 4 usb порта, так вот когда ардуино воткнут напрямую в usb то отвалы происходят гораздо чаще - через 5-10 часов, а если подключаю через хаб то через 3-5 дней.

Serg-Zmuh
01.06.2016, 11:18
а я на свой хаб тож грешил ,но у мня не Длинк .... ,и я уже собирался длинк покупать
надо обождать ....
DelleTenebre вопрос такой ,не работает по блютусу что-то ,умня НС-05 модуль,
в настройках прога его видит и конектится ,но данные не выводит почему-то :(
в remoteInputManager'e работало норм по блютус
хотя стоп....:huh2: ,это умня связка ардуино УНО+НС-05 норм работало,
а сейчас ЛЕонардо в машине ,а сней я так и не смог блютус модуль подружить ,поэтому плюнул и ардуино УНО купил (https://duino.ru/arduino-uno-ch340g.html) ....
блин и че делать ...

lti1
01.06.2016, 18:37
а я на свой хаб тож грешил ,но у мня не Длинк .... ,и я уже собирался длинк покупать
надо обождать ....
DelleTenebre вопрос такой ,не работает по блютусу что-то ,умня НС-05 модуль,
в настройках прога его видит и конектится ,но данные не выводит почему-то :(
в remoteInputManager'e работало норм по блютус
хотя стоп....:huh2: ,это умня связка ардуино УНО+НС-05 норм работало,
а сейчас ЛЕонардо в машине ,а сней я так и не смог блютус модуль подружить ,поэтому плюнул и ардуино УНО купил (https://duino.ru/arduino-uno-ch340g.html) ....
блин и че делать ...
Для передачи по BT использовали Serial1 (http://arduino.ru/forum/programmirovanie/kak-obespechit-vyvod-na-com-port-v-arduino-leonardo)?

yuriy m
01.06.2016, 21:51
а я на свой хаб тож грешил ,но у мня не Длинк .... ,и я уже собирался длинк покупать
надо обождать ....
DelleTenebre вопрос такой ,не работает по блютусу что-то ,умня НС-05 модуль,
в настройках прога его видит и конектится ,но данные не выводит почему-то :(
в remoteInputManager'e работало норм по блютус
хотя стоп....:huh2: ,это умня связка ардуино УНО+НС-05 норм работало,
а сейчас ЛЕонардо в машине ,а сней я так и не смог блютус модуль подружить ,поэтому плюнул и ардуино УНО купил (https://duino.ru/arduino-uno-ch340g.html) ....
блин и че делать ...
В скетче леонардо ,нужно номер сом порта другой указать...

А пост не Ваш был, что-то Rage2 писал про эксперементы с установкой хаба в другой хаб,сейчас не помню в какой теме было.
Всмысле ? В этой теме 33 мой. Да и не только в этой ... Я сам с этим столкнулся и проблема не в хабе , на винде вообще все ок. Проблема именно в андрюше... но нема пока времени этим заниматься...

DelleTenebre
01.06.2016, 23:50
Итак, самым научно обоснованным методом "тыка" была найдена как минимум одна проблема с (не)подключением: если, при загрузке Android, в хабе несколько устройств, и Arduino не последняя в списке, то инициализировать подключение никак не получится (только физически переподключить). Немного шире данный баг Android'а освещён тут (https://code.google.com/p/android/issues/detail?id=159897) и здесь (https://code.google.com/p/android/issues/detail?id=159529). Для решения этой проблемы нет ничего лучше, чем новая опция в настройках Переподключать USB-хаб [ Root ] в разделе Usb соединение.

! ВАЖНО ! У кого установлена 1.6-beta-4 и выше - перед обновлением сделайте резервную копию команд.

Скачать можно с Яндекс.Диска (https://yadi.sk/d/I3iDSjOUr244c), версия SerialManager-1.6-beta-6.

Sergey 4_4, пока что в качестве экперимента, добавлен новый раздел в настойки команды: Notification (забыл перевести, в следующий раз). Описывать что там к чему пока что лень, поэкспериментируйте так :), будут вопросы пишите.

Serg-Zmuh, для bluetooth, как уже подсказали выше нужно использовать Serial1 вместо Serial, если подключение RX и TX было в пины TX и RX на самой arduino. Также можно использовать SoftwareSerial (https://www.arduino.cc/en/Reference/SoftwareSerial) (пример как подключать (http://www.instructables.com/id/Using-Arduino-Leonardo-as-mouse-and-keyboard-contr/)).

Serg-Zmuh
02.06.2016, 09:45
Для передачи по BT использовали Serial1 (http://arduino.ru/forum/programmirovanie/kak-obespechit-vyvod-na-com-port-v-arduino-leonardo)?

это наверно ключевой вопрос :blink2:
нубский вопрос можно?
это надо в скетч вносить изменения ...так
а где именно ,не подскажете :

#include <OneWire.h>
#include <DallasTemperature.h>
char incomingByte;
int analogInput = 0;
float vout = 0.0;
float vin = 0.0;
float R1 = 100000.0;
float R2 = 10000.0;
int value = 0;
OneWire OW_tempa(9);
OneWire OW_tempb(10);
OneWire OW_tempc(11);
DallasTemperature tempa(&OW_tempa);
DallasTemperature tempb(&OW_tempb);
DallasTemperature tempc(&OW_tempc);
DeviceAddress tempaAddress, tempbAddress, tempcAddress;
void setup(void){
Serial.begin(9600);
pinMode(analogInput,INPUT);
tempa.begin();
tempb.begin();
tempc.begin();
}
void loop(void){
value = analogRead(analogInput);
vout = (value*5.0)/1024.0;
vin = vout/(R2/(R1+R2));
if(vin<0.09){
vin = 0.0;
}
tempa.requestTemperatures();
delay(700);
Serial.print("<InDoor:");
if ( !tempa.getAddress(tempaAddress,0)){
Serial.print("0");
}else{
Serial.print(tempa.getTempCByIndex(0),1);
}
Serial.println(">");
tempb.requestTemperatures();
delay(700);
Serial.print("<OutDoor:");
if ( !tempb.getAddress(tempbAddress,0)){
Serial.print("0");
}else{
Serial.print(tempb.getTempCByIndex(0),1);
}
Serial.println(">");
tempc.requestTemperatures();
delay(700);
Serial.print("<Engine:");
if ( !tempc.getAddress(tempcAddress,0)){
Serial.print("0");
}else{
Serial.print(tempc.getTempCByIndex(0),1);
}
Serial.println(">");
delay(700);
Serial.print("<Voltage:");
Serial.print(vin,2);
Serial.println(">");
}


я на начальной такскать стадии ,и в этом ток начинаю разбираться не пинайте сильно :dntknw:

lti1
02.06.2016, 11:11
Serg-Zmuh, всё просто, нужно заменить все Serial.begin, Serial.print и Serial.println на Serial1.begin, Serial1.print и Serial1.println.

Sergey 4_4
02.06.2016, 18:30
Итак, самым научно обоснованным методом "тыка" была найдена как минимум одна проблема с (не)подключением: если, при загрузке Android, в хабе несколько устройств, и Arduino не последняя в списке, то инициализировать подключение никак не получится (только физически переподключить). Немного шире данный баг Android'а освещён тут (https://code.google.com/p/android/issues/detail?id=159897) и здесь (https://code.google.com/p/android/issues/detail?id=159529). Для решения этой проблемы нет ничего лучше, чем новая опция в настройках Переподключать USB-хаб [ Root ] в разделе Usb соединение.

! ВАЖНО ! У кого установлена 1.6-beta-4 и выше - перед обновлением сделайте резервную копию команд.

Скачать можно с Яндекс.Диска (https://yadi.sk/d/I3iDSjOUr244c), версия SerialManager-1.6-beta-6.

Sergey 4_4, пока что в качестве экперимента, добавлен новый раздел в настойки команды: Notification (забыл перевести, в следующий раз). Описывать что там к чему пока что лень, поэкспериментируйте так :), будут вопросы пишите..Сегодня установил SerialManager-1.6-beta-6,команды вроде настраиваются,но работать не хотят. Приложение почему-то не просит предоставить Root права при попытке что-то из настроенного запустить. Почему? У меня контроллер от YAM1966

Alekssandr
02.06.2016, 18:35
DelleTenebre

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

Если подключено по USB то всё нормально, даже при закрытом приложении команды обрабатываются.

Побывал на версии 1.5 версии 1.6 beta4 и beta6

Sergey 4_4
02.06.2016, 18:39
DelleTenebre

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

Если подключено по USB то всё нормально, даже при закрытом приложении команды обрабатываются.Блин у меня то чё не работает? Может галку где поставит нуно?

Alekssandr
02.06.2016, 19:14
Блин у меня то чё не работает? Может галку где поставит нуно?

Если с arduino отправляешь новую команду с новой строки Serial.println то в настройках поставь галку "Распознавать команду по новой строке" иначе не будет работать.

Sergey 4_4
02.06.2016, 20:16
Если с arduino отправляешь новую команду с новой строки Serial.println то в настройках поставь галку "Распознавать команду по новой строке" иначе не будет работать.У меня не arduino,а контроллер от YAM1966. При настройке ключ/значение команды определяются,настраиваю действие выхожу из приложения. Настроеное действие не работает. На старой верси 1.6-beta-1 всё норм было,кроме отваливаний. Ещё после настройки выдавался запрос от SU, права предоставлял всё работало. Сейчас нет запроса.

DelleTenebre
02.06.2016, 22:50
С bluetooth воспроизвёл проблему, исправлю.

Sergey 4_4, я так понял при открытой программе всплывающие сообщения с командами появляются, но в дальнейшем не отрабатывает настроенное действие? Если так, то можете уточнить какая именно категория не отрабатывает. Я пробовал запуск приложений, эмуляцию клавиатуры и управление звуком, вроде всё нормально. Проверьте на всякий случай SU, может там случайно запретили доступ.

Sergey 4_4
02.06.2016, 22:58
С bluetooth воспроизвёл проблему, исправлю.
Sergey 4_4, я так понял при открытой программе всплывающие сообщения с командами появляются, но в дальнейшем не отрабатывает настроенное действие? Если так, то можете уточнить какая именно категория не отрабатывает. Я пробовал запуск приложений, эмуляцию клавиатуры и управление звуком, вроде всё нормально.Да именно так. Не отрабатывается ни запуск приложений,ни эмуляция клавиатуры. Причём в поле где отображается ключ/значение просто вот такой <>. В предыдущей версии было < ключ/значение>

DelleTenebre
04.06.2016, 22:44
В версии SerialManager-1.6-beta-7 (https://yadi.sk/d/I3iDSjOUr244c):

Исправлено подключение по bluetooth
Удалена опция в настроках Восстанавливать соединение при потере связи. Теперь соединение по bluetooth имеет эту опцию всегда включенной
Добавлена настройка Автоматически включать bluetooth. Позволяет включать bluetooth, если он был выключен на момент запуска сервиса
В категорию Медиа добавлены: Воспроизведение, Пауза, Остановить
Добавлена опция Отправлять состояние экрана включен/выключен. Формат: {screen:on} {screen:off}. Скорее всего будет удалена в следующей версии так как: см. след пункт
Добавлена возможность отправлять команды на контроллер из Tasker (и ему подобных).
Для Tasker'а задача (task) следующая:

[+] -> System -> Send Intent
В настройках Send Intent:
Поле Action: serial.manager.send
Поле Extra: data:ВашаКомандаВЛюбомФорматеМожноПростоЦифру
Для Extra главное data: (data и символ двоеточие. После двоеточия идёт команда, которую надо отправить)


Для Automate (https://play.google.com/store/apps/details?id=com.llamalab.automate):

Apps -> Broadcast send
В настройках Broadcast send:
Поле Action: serial.manager.send
Поле Extras: {"data":"ваша команда"}

vasilij_c
05.06.2016, 12:06
Добавлена возможность отправлять команды на контроллер из Tasker (и ему подобных..
отличная новость! давно ждал!
про баги отписал в личку.

Alekssandr
05.06.2016, 19:39
DelleTenebre
Отличное обновление! С очень полезными функциями!

MPPM
06.06.2016, 01:32
Все эти обновления как бы хорошо.Но самая главная проблема с отвалом так и не решена.И есть еще одна проблема слишком долгое реагирование на команду от ардуино.Если у меня одного такое то поправьте. У меня андроид включен постоянно (круглосуточно), заметил закономерность когда активно посылает команды, то команда обрабатывается каждый раз хоть и вяло, но по прошествии пару часов возможны пропуски до 5 отправок, а то и больше.

vasilij_c
06.06.2016, 22:39
....Но самая главная проблема с отвалом так и не решена..
есть такая проблема, у меня отваливается часто (не нексус), приходится "передергивать" 4 и 5 . полагаю, дело здесь не в хабе -под подозрением драйвер ОТГ.

....
И есть еще одна проблема слишком долгое реагирование на команду от ардуино.....
и такая проблемка есть. задержка на реакцию (эмуляция нажатия клавиш) около 0.5 сек, что для моего проекта нереально много. насколько понял из экспериментов, задержка связана не с самой программой, а с долгим выполнением shell команды input keyevent XX.
вопрос к DelleTenebre: возможно ли реализовать "нажатие клавиш" другим методом?

YAM1966
06.06.2016, 22:45
Не заметил никаких тормозов в эмуляции нажатия кнопок... Завтра более точно измерю эту задержку.

Есть небольшая задержка...

Видео с управлением через Serial Manager
nzs_4lMOt6A

Видео с управлением через эмуляцию USB клавиатуры
YU8O0T3_nBE

plus88
20.06.2016, 12:47
т.е. получается через эмуляцию HID все таки лучше. Хоть там и есть ограничения по поводу использования только pro micro и leonardo.%)?

ali_vlad
20.06.2016, 15:00
только pro micro и leonardo.%)?


Не правильно. Проц должен быть ######32U4, а список плат с этим процессором гораздо больше.

plus88
20.06.2016, 15:05
Ну может быть я только только познакомился с этими няшками... Не могу вывести показания температуры в виджет :(. Serial Manager поставил. Не пойму какой ключ использовать %)...

groove-max
20.06.2016, 23:36
Скажите, есть небольшой oled дисплей, подключенный к ардуино. Могу ли я вывести на него, например, текущий уровень громкости в процентах или название исполнителя в плеере? Или я могу только передавать команды на планшет?

DelleTenebre
21.06.2016, 06:38
groove-max, В 1.6-beta-7 (http://pccar.ru/showpost.php?p=362233&postcount=109) есть возможность передавать данные в ардуино с помощью tasker'а.

demtro
21.06.2016, 09:22
Не заметил никаких тормозов в эмуляции нажатия кнопок... Завтра более точно измерю эту задержку.

Есть небольшая задержка...

Видео с управлением через Serial Manager
nzs_4lMOt6A

Видео с управлением через эмуляцию USB клавиатуры
YU8O0T3_nBE

Тоже замечал подобное + каждый раз обращается к руту, что дает еще небольшую задержку

DelleTenebre
21.06.2016, 19:48
С задержками, в принципе, есть выход через android.permission.INJECT_EVENTS и установку в системные приложения (или, вроде, сертификат должен быть системный). Но я ещё не проверял этот вариант, ПК помер.

Maniac82
23.06.2016, 08:23
Вот это я как удачно зашел :)
Пошел пробовать. Респект за прогу!

Maniac82
24.06.2016, 05:54
Версия 1.6 бета не работает на Nexus 7 4.4.4. в лане того, что не сохраняются настройки команд. Остается <:> - то есть пустое значение при выходе из настройки!

Sergey 4_4
24.06.2016, 07:51
Версия 1.6 бета не работает на Nexus 7 4.4.4. в лане того, что не сохраняются настройки команд. Остается <:> - то есть пустое значение при выходе из настройки!Попробуйте поставить сначала версию 1.6-1, в ней настроить команды, а после, не удаляя её, поставить 1.6 бета 7,должно помочь.

Maniac82
24.06.2016, 09:47
На MIUI 7 не работает через BT с помощью HC-05 на Leonardo!
Ни одним из способов программа не распознает команды (ни SoftwareSerial ни Serial1)

При этом программа Bluetooth Terminal получает командами обоими способами!
Serial1 через 0 и 1 и SoftwareSerial через назначенные!
Хотя в принципе пофиг - На планшете на Android 4.4.4 подключается обоими способами!

Когда будет рабочая версия с сохраняющимися кнопками? :) Хотфикс просто необходим.

1.6.6 работает!!! А 1.6.7 уже нет. (кнопки не сохраняются)
Sergey 4_4, спасибо за наводку.

Maniac82
24.06.2016, 11:12
Также не работает предложенный способ отправки данных по BT.
Использовал свой способ добытый ранее на просторах интернета и доработанный - кому надо пользуйтесь (в виджете использована команда <led:on>|<led:off>"

#include <string.h>


char command[10];
char data[10];

int Butt; //статус конпки нажата/отпущена
int ButtS=0; //статус была ли уже нажата ил отпущена кнопка

void setup() {

pinMode(7, INPUT); //кнопка на 7 пине
Serial1.begin(9600);
pinMode(13, OUTPUT);
digitalWrite(13,HIGH);
}

void loop() {
Butt=digitalRead(7);

//при нажатиикнопки:
if (Butt==1&ButtS==0) {
Serial1.print("<time:");
Serial1.print(millis());
Serial1.print(">\n");
ButtS=1;}

//При отпускании кнопки:
if (Butt==0&ButtS==1) {
Serial1.print("<click:");
Serial1.print(digitalRead(7));
Serial1.println(">");
ButtS=0;
}


//******************** читаем передачу в сериал1
int i=0;
char buffer[100];
//если есть данные - читаем
if(Serial1.available()){
delay(100);

//загоняем прочитанное в буфер
while( Serial1.available() && i< 99) {
buffer[i++] = Serial1.read();
}
//закрываем массив
buffer[i++]='\0';
}

//если буфер наполнен
if(i>0){

//разбераем его на части отделенные двоеточием
sscanf(buffer, "<%[^:]:%[^>]", &command, &data);
//выполняем команды
if (strcmp(command, "led")==0 & strcmp(data, "on")==0) {Serial1.println("<ON>"); digitalWrite(13, HIGH);}
if (strcmp(command, "led")==0 & strcmp(data, "off")==0) {Serial1.println("<OFF>"); digitalWrite(13, LOW);}

//пишем какую команду получили
Serial1.print("<");
Serial1.print(command);
Serial1.print(":");
Serial1.print(data);
Serial1.println(">");

command [0] = '\0';
data [0] = '\0';
}
//***************** закончили читать передачу в сериал 1

}

Maniac82
24.06.2016, 11:24
А ак можно посмотреть нормальным способом все иконки? или свою запихать?
Текст / Иконка: \uf186|\uf185

DelleTenebre
24.06.2016, 16:11
А ак можно посмотреть нормальным способом все иконки? или свою запихать?
Текст / Иконка: \uf186|\uf185

Тут описал как посмотреть: http://pccar.ru/showpost.php?p=359273&postcount=21
В планах доделать выбор в самом приложении, но это не приоритетная задача. Свой шрифт можете с помощью icomoon app (https://icomoon.io/app) или fontello (http://fontello.com) собрать. Код иконок смотреть в сервисе где собирали, и не забудьте подключить получившийся шрифт (нужен только *.ttf) в настройках виджета (последний пункт).

Сохранение команд постараюсь исправить, но воспроизвести такое поведение пока что не удаётся.

Narkus
24.06.2016, 17:54
Добрый день всем, подскажите пожалуйста, возможно ли с помощью данного приложения перехватывать с СОМ порта значения с фоторезистора, подключенного к аналоговому порту и программно изменять системную яркость в андроиде? Перечитал всю тему, так и не понял :( Подключение ардуино как тут (http://compcar.ru/forum/showthread.php?t=4690&p=40780&viewfull=1#post40780) Задача снимать данные уровня освещенности и менять яркость экрана программно, не врезаясь в цепи подсветки.

lti1
24.06.2016, 18:38
Добрый день всем, подскажите пожалуйста, возможно ли с помощью данного приложения перехватывать с СОМ порта значения с фоторезистора, подключенного к аналоговому порту и программно изменять системную яркость в андроиде? Перечитал всю тему, так и не понял :( Подключение ардуино как тут (http://compcar.ru/forum/showthread.php?t=4690&p=40780&viewfull=1#post40780) Задача снимать данные уровня освещенности и менять яркость экрана программно, не врезаясь в цепи подсветки.
Измените скетч под свои нужды, примерно так:
int sens = 0;
void setup()
{
Serial.begin(115200);
}

void loop()
{
sens = analogRead(0);
Serial.print("<brightness:");
Serial.print(sens);
Serial.print("%>");
delay(3000);
}
В настройках приложения добавьте действие с клюем brightness, категория Управление системой, функция Установить яркость экрана.

Maniac82
24.06.2016, 19:28
Сохранение команд постараюсь исправить, но воспроизвести такое поведение пока что не удаётся.

Дык смотреть надо чем версия 1.6.7 от версии 1.6.6 в плане сохранения команд отличается и всё ;-)

DelleTenebre
24.06.2016, 21:12
Дык смотреть надо чем версия 1.6.7 от версии 1.6.6 в плане сохранения команд отличается и всё ;-)
В том то и дело что ничем - начиная примерно с 4-ой беты, ничего не менялось :big:
Прикол был в автовызове метода onActivityResult() из-за стоявшем в манифесте свойства android:launchMode="singleTask" у активити с настойками команды. Причём такое поведение не воспроизводилось ни на 5.1.1, ни на 6.0.1, только <=4.4 :be:

Прошло ровно 2 месяца с последней "стабильной" версии, и я уже задолбался дописывать -beta-x, поэтому выпуск 1.6.0 (https://yadi.sk/d/I3iDSjOUr244c)с хотфиксом сохранения команд.

vasilij_c
24.06.2016, 23:53
Попробуйте поставить сначала версию 1.6-1, в ней настроить команды, а после, не удаляя её, поставить 1.6 бета 7,должно помочь.

можно пользовать версию 1.6-5.(там функций побольше) меню->сохранить команды. в версии 1.6-7 - меню->восстановить команды
в версии 1.6-6 уже было <:>

vasilij_c
24.06.2016, 23:59
.. выпуск 1.6.0 (https://yadi.sk/d/I3iDSjOUr244c)с хотфиксом сохранения команд.

спасибо, затестим :good:

vasilij_c
25.06.2016, 00:16
DelleTenebre в версии 1.6.0 есть такая функция ".. возможность отправлять команды на контроллер из Tasker " ?

Maniac82
25.06.2016, 06:30
Прошло ровно 2 месяца с последней "стабильной" версии, и я уже задолбался дописывать -beta-x, поэтому выпуск 1.6.0 (https://yadi.sk/d/I3iDSjOUr244c)с хотфиксом сохранения команд.

А есть ли возможность делать импорт/экспорт виджетов?

Maniac82
25.06.2016, 06:40
можно пользовать версию 1.6-5.(там функций побольше) меню->сохранить команды. в версии 1.6-7 - меню->восстановить команды
в версии 1.6-6 уже было <:>

У мня версия 1.6-6 еще нормально работала :)

DelleTenebre
25.06.2016, 09:11
DelleTenebre в версии 1.6.0 есть такая функция ".. возможность отправлять команды на контроллер из Tasker " ?
Да, конечно.

В целом с этими -beta-X, я всех запутал наверное :big: Последнии версии были ..., 1.6-beta-6, 1.6-beta-7, теперь уже не бета 1.6.0.

А есть ли возможность делать импорт/экспорт виджетов?
К сожалению, нет. Они должны сохраняться, если при установке не удаляете предыдущую версию.

DelleTenebre
26.06.2016, 11:43
В 1.6.1 (https://yadi.sk/d/I3iDSjOUr244c) была добавлена виртуальная клавиатура, которая должна максимально уменьшить задержку при эмуляции нажатий клавиш. Этот способ будет работать только на ядрах с поддержкой uinput. Проверить можно, посмотрев есть ли файл /dev/uinput. Так же, при запуске сервиса и включенной опции "Отладочная информация", должно появляться сообщение "Виртуальная клавиатура создана" и в logcat запись "Virtual keyboard (uinput) id: X".
Если же поддержки uinput в системе нет, то будет использован старый тормознутый способ с "input keyevent X".

Maniac82
26.06.2016, 12:02
В 1.6.1 (https://yadi.sk/d/I3iDSjOUr244c)
Если же поддержки uinput в системе нет, то будет использован старый тормознутый способ с "input keyevent X".

Хочу полностью уйти от USB подключения Ардуины.
Есть ли возможность эмулировать долгое нажатие клавиши?
В частности у меня было настроено alt+tab - очень привык. При этом alt зажимается и жмется таб, таб, таб пока зажата alt. Очень удобно с кнопки с руля переключать приложения.

P.s. Нашел в клавиатуре альт-таб. Надо затестить :)

DelleTenebre
26.06.2016, 16:11
Хочу полностью уйти от USB подключения Ардуины.
Есть ли возможность эмулировать долгое нажатие клавиши?
С новым способом (uinput) это возможно. На счёт alt+tab тоже думал что логичнее сделать как Вы описали, но оставил до следующего раза. На данный момент просто переключение между двумя приложениями.

vasilij_c
26.06.2016, 18:00
В 1.6.1 (https://yadi.sk/d/I3iDSjOUr244c) была добавлена виртуальная клавиатура, которая должна максимально уменьшить задержку при эмуляции нажатий клавиш....

в ходе тестов выяснилась такая штука: если использовать плату Леонардо, то возможно использовать и HID клавиатуру + программу SerialManager.
подключение по USB, на Леонардо - Keyboard.begin(); Serial.begin(9600); в программе SerialMaager - скорость порта 9600.
протестировано на версии 1.6.0

Maniac82
26.06.2016, 19:05
С новым способом (uinput) это возможно. На счёт alt+tab тоже думал что логичнее сделать как Вы описали, но оставил до следующего раза. На данный момент просто переключение между двумя приложениями.

Я думаю если это возможно, то надо добавить ;-)
Там не через keyboard.press, keyboard.release организовано всё?

DelleTenebre
26.06.2016, 20:36
Я думаю если это возможно, то надо добавить ;-)
Там не через keyboard.press, keyboard.release организовано всё?
Добавлю конечно, в следующем или ближайшем релизе.

Организовано через

sendevent @device @type @code @value

через c++, для скорости :moto: Там, в общем, схема похожая: отправляем команду что нажали клавишу (или несколько), затем отправляем что отпустили одну или несколько.

Maniac82
27.06.2016, 07:43
При получении команды и показывания уведомления оно не исчезает никогда!
:)

DelleTenebre
27.06.2016, 14:58
Maniac82, да, их ещё пилить и пилить, они в стадии альфы :happy:

slon25
27.06.2016, 21:16
Не могу ни как настроить на нексус 7 2013 и контроллер от ЮРЫ. Как в терминале проверить его работу?

Sergey 4_4
27.06.2016, 21:59
Не могу ни как настроить на нексус 7 2013 и контроллер от ЮРЫ. Как в терминале проверить его работу?Какую из версий не можете настроить?У меня тоже контроллер от ЮРЫ,немного костыльно ,но всё таки удалось настроить,выше писал как.

slon25
27.06.2016, 22:56
Какую из версий не можете настроить?У меня тоже контроллер от ЮРЫ,немного костыльно ,но всё таки удалось настроить,выше писал как.

Пробывал все версии ни одна не работает. От контролера не приходит значение и ключ. Выставляю вручную press и значение тоже ни чего. Права рут предоставлены. команда в терминале cat /dev/ttyACM0 не работает permission defined. Поставил последнюю версию появился порт uinput, но команда cat не проходит. Права на этот порт программа устанавливает 666. Андроид 6.0.1. предпоследняя версия

YAM1966
27.06.2016, 23:10
Все там приходит. Для начала появляется ли ttyACMx в /dev ?
Поставили ли галку Распознавать команду по новой... в настройках Serial Manager?

djdonatas
28.06.2016, 01:48
При помощи SerialManager и v4 контроллера Юры удалось организовать управление климатконтролем в лексусе прямо с рабочего стола. (пока в тестовом режиме это делается с телефона, но все отлично работает)
Теперь очень хотелось бы иметь возможность загружать свои иконки,т.к. ничего подходящего в шрифтах не найдено %)
еще хотелось бы иметь простейшие операции со строками, типа hex2str, substr и тд. а то некоторые данные,например приходят в хексе, или например в фарингейтах,а выводить их желательно в цельсиях...
а, и еще до кучи экспорт/импорт виджетов.
Спасибо за проделанную работу!
http://s13.radikal.ru/i186/1606/24/58ef9a507c0b.png

Narkus
28.06.2016, 12:12
Измените скетч под свои нужды, примерно так:
int sens = 0;
void setup()
{
Serial.begin(115200);
}

void loop()
{
sens = analogRead(0);
Serial.print("<brightness:");
Serial.print(sens);
Serial.print("%>");
delay(3000);
}
В настройках приложения добавьте действие с клюем brightness, категория Управление системой, функция Установить яркость экрана.

А не подскажете настройки приложения? Ардуино отправляет значения brightness от 740 (темнота) до 1000 (яркий свет).

p_osipov
28.06.2016, 14:21
1. правильнее Serial.println("%>")
2. Т.к. яркость в этом скетче задается в %, то как-то так:
Serial.print((int)(sens-740)/(1000-740));

lti1
28.06.2016, 16:12
Тогда уж лучше так:
int sens = 0;
void setup()
{
Serial.begin(115200);
}

void loop()
{
sens = analogRead(0);
String s = "<brightness:" + String((sens-740)/2.6) + "%>";
Serial.print(s);
delay(3000);
}
ln не на что особо не влияет, а вот оформить в целую строку, что бы приходило единым куском без разрывов, не помешает.

DelleTenebre
28.06.2016, 16:37
Теперь очень хотелось бы иметь возможность загружать свои иконки,т.к. ничего подходящего в шрифтах не найдено %)
Это можно: http://pccar.ru/showpost.php?p=363371&postcount=128
Как будет время сделаю более подробную инструкцию как собрать шрифт.

еще хотелось бы иметь простейшие операции со строками, типа hex2str, substr и тд.
В самом начале была такая мысль, но затем я думал что будет использоваться только arduino, а в своём скетче можно обработать как угодно и решил, что это излишество. В свете новых возможностей (контроллер Юры, например), конечно надо будет как-то реализовать.

Narkus
28.06.2016, 17:07
Залил такой код

int sens = 0;
int light = 0;
void setup()
{
Serial.begin(115200);
}

void loop()
{
sens = analogRead(0);

if ((sens > 0) && (sens<740)) light = 0;
if ((sens > 740) && (sens<766)) light = 10;
if ((sens > 766) && (sens<792)) light = 20;
if ((sens > 792) && (sens<818)) light = 30;
if ((sens > 818) && (sens<844)) light = 40;
if ((sens > 844) && (sens<870)) light = 50;
if ((sens > 870) && (sens<896)) light = 60;
if ((sens > 896) && (sens<922)) light = 70;
if ((sens > 922) && (sens<948)) light = 80;
if ((sens > 948) && (sens<974)) light = 90;
if (sens > 974) light = 100;

Serial.print("<brightness:");
Serial.print(light);
Serial.print("%>");
delay(300);
}
Я думаю суперточность при регулировке яркости не нужна, но приложение Serial Manager ооочень меедленно реагирует: между закрытием фоторезистора (полная темнота) и изменением значения, которое приложение выводит, проходит около минуты. При этом системная яркость не регулируется. Приложение UsbTerminal выводит данные как положено быстро.

lti1
28.06.2016, 18:33
Narkus, у Вас данные в приложение отправляются каждые 300 миллисекунд, зачем так часто? По факту данные нужно отправлять если изменения на датчике освещенности превысили какое-то значение, например +-10%.
Попробуйте так:int sens;
int sens_save;
void setup() {
Serial.begin(115200);
}

void loop() {
sens = analogRead(0);
sens = (sens-740)/2.6;
if (abs(sens_save - sens) > 10) {
String s = "<brightness:" + String(sens) + "%>";
Serial.print(s);
sens_save = sens;
}
}

slon25
28.06.2016, 20:23
Все там приходит. Для начала появляется ли ttyACMx в /dev ?
Поставили ли галку Распознавать команду по новой... в настройках Serial Manager?

ttyACM0 в /dev появляется, но после установки serial исчезает . Галка тоже стоит.

Narkus
29.06.2016, 12:15
lti1, спасибо за подсказку, немного изменил код для более простой калибровки под фоторезистор:
int sens = 0;
int sens_save;
void setup() {
Serial.begin(115200);
}

void loop() {
sens = analogRead(0);
sens = map(sens, 740, 1000, 0, 100); // для упрощения калибровки фоторезистора map(sens, нижний порог, верхний порог, 0, 100)
sens = constrain(sens, 0, 100); // числовые показания ограничены диапазоном от 0 до 100
if (abs(sens_save - sens) > 10) {
if (sens<10) sens = 0;
if (sens>85) sens = 100;
String s = "<brightness:" + String(sens) + "%>";
Serial.print(s);
sens_save = sens;
}
}
Ардуино только начинаю изучать, узнаю много нового сейчас :rolleyes2:
Одна загвоздка осталась: мой китайский планшет регулирует яркость таким образом (Arduino nano + Serial Manager) только при выведенном на передний план ползунке регулировки яркости из настроек, в фоне значения меняются, но фактическая яркость неизменна.
И ещё вопрос: только у меня Serial Manager виснет при загрузке планшета с уже подключенной ардуиной?

djdonatas
29.06.2016, 15:55
Еще идея в вишлист на будущее,не знаю, на сколько реализуема и востребована для других, но я столкнулся с тем,что мне бы не помешала:
группы виджетов
создавая несколько виджетов их можно объединить в группу.
Распишу на своем примере, есть 5 виджетов "мощности обдува кондиционера", если не использовать их как "переключатели" - то не видно,какой режим сейчас включен
если использовать по схеме вкл/выкл, то включив "мин",а потом включив "макс" - у нас получается подсвечены и мин и макс.
А в группе же,если 5 виджетов находятся внутри нее, то "включая" один - остальные визуально отключаются. по аналогии, как в дельфи была radiobuttongroup, если кто-то еще помнит %)
На данный момент решений несколько, но все они не очень.
- делать все на одном виджете и "листать" режимы, но если скажем с 3го надо попасть на 2й - надо пролистать весь "круг" до конца и начать сначала, много клацать и печку насиловать приходится %)
- делать без индикации,работает,но не наглядно =\

зы: а так-же есть возможность физически и/или визуально отключать "шестеренку" настроек на виджете? а то пальцы большие,виджеты маленькие, иногда запускаются настройки виджета вместо действия.
Спасибо

YAM1966
29.06.2016, 16:07
Есть такая хрень, как GUI designer (http://www.commandfusion.com/software/guidesigner#downloads)... На сколько я понял получившееся приложение коннектится по IP к порту и передает то, что нажали. Можно запустить листенер и принимать эти сообщения Serial Manager-ом...

djdonatas
29.06.2016, 19:17
Есть такая хрень, как GUI designer (http://www.commandfusion.com/software/guidesigner#downloads)... На сколько я понял получившееся приложение коннектится по IP к порту и передает то, что нажали. Можно запустить листенер и принимать эти сообщения Serial Manager-ом...

насколько я вижу,для работы нужен некий iviewer, который в бесплатном варианте сильно кастрирован? Получается им надо слать команды на локалхост, а вот serial manager надо еще модифицировать,чтобы он слушал на каком-то порту соединения и выдавал уже полученную информацию в serial? Сейчас же он такого не умеет? Или есть уже какая-то софтина, которая форвардит с тцп на сериал? %)

Az0m@
01.07.2016, 23:33
подскажите...а кто нибудь пробывал резистивные кнопки на руле прикрутить с помощью этой проги?

ali_vlad
02.07.2016, 07:52
подскажите...а кто нибудь пробывал резистивные кнопки на руле прикрутить с помощью этой проги?

Э, как бэ нужен сначала адаптер, который обработает нажатие кнопки и выдаст команду. Адаптер может быть как готовый, например от Юры, так и самодельный из ардуины. Главное выдать команду, а эта прога уже обработает команду и совершит какое-то действие: запустит приложение, отобразит уведомление.

Az0m@
03.07.2016, 00:06
Э, как бэ нужен сначала адаптер, который обработает нажатие кнопки и выдаст команду. Адаптер может быть как готовый, например от Юры, так и самодельный из ардуины. Главное выдать команду, а эта прога уже обработает команду и совершит какое-то действие: запустит приложение, отобразит уведомление.
хотел использовать метод из данной описания:
http://pccar.ru/showpost.php?p=248366&postcount=72
но описанный вариант смущает тем что при подключенной арудине не будет работать экранная клава

vasilij_c
03.07.2016, 00:27
.. смущает тем что при подключенной арудине не будет работать экранная клава
давно решена эта проблема. ставишь сторонюю раскладку для клавы (типа такой MultilanguageKeymapRedefiner), в настройках программы включаешь "показывать экранную клавиатуру"

lti1
03.07.2016, 00:33
Az0m@, Экранная клавиатура будет скрываться если если Arduino будет настроено как HID клавиатура, при использовании Serial Manager (http://pccar.ru/showthread.php?t=24120) это не нужно, просто закомментируйте или удалите строку Keyboard.begin(); в скетче.

djdonatas
06.07.2016, 17:13
С пылу с жару, прототип %)
Управление штатным климатом в лехусе.
зы: иконки перепутал и пока только 2 кнопки, но это все дело техники и времени, главное, что все подружилось и заработало %)
v4 контроллер от Юры (http://pccar.ru/showthread.php?t=20460) + Serial Manager от DelleTenebre (http://pccar.ru/showthread.php?t=24120) + таскер + оболочка от меня)

Пока все собирается и тестируется на телефоне, для удобства, потом будет перенесено в андроид устройство, которое стоит в авто.

KXE__xNSG4A

shrimpplus
06.07.2016, 17:48
Az0m@, Экранная клавиатура будет скрываться если если Arduino будет настроено как HID клавиатура
Если в keylouts создать новый файл с vid pid ардуинки и прописать там нужные кнопки, то будет работать любая клавиатура, это так на всякий случай :smile2:

Alekssandr
06.07.2016, 19:20
В чём делал оболочку?

Alekssandr
14.07.2016, 22:37
DelleTenebre Привет! Яву начал изучать недавно.

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

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

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, 00:40
Сам разобрался, в поле:
public static final String EXTRA_DATA = "data:";

data нужно было отправлять без двоеточия =)

Вот так.
public static final String EXTRA_DATA = "data";

armlive
15.07.2016, 10:17
DelleTenebre Привет! Яву начал изучать недавно.

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

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

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
Вот ты извращенец, зачем посредников используешь. сразу в порт учись отправлять

=) я не хочу потерять возможности SerialManager, просто делаю удобную оболочку для настройки аудиопроцессора tda7719 (http://pccar.ru/showthread.php?t=24040).

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

DelleTenebre
28.07.2016, 18:38
C лёгкого пинка ali_vlad (http://pccar.ru/member.php?u=25392), я начал эксперименты с GPIO. В версии 1.6.2 готов модуль считывания состояния 1 и 0. Под шумок добавил возможность "GPIO-кнопка" - можно получать данные не 1 и 0, а click и hold (удержание).

----

Обновлено 11.09.2016

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

Например, у geekbox landingship (http://www.geekbox.tv) есть пин (http://www.cnx-software.com/wp-content/uploads/2015/12/Landingship_Bottom_Large.jpg) с маркировкой GPIO3_A3 - не знаю стандартное это обозначение или нет, но необходимый номер высчитывается по формуле (тут можно ещё почитать (http://forum.geekbox.tv/viewtopic.php?f=14&t=3208&p=5213)):

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.

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

Приношу свои извинения всем кто активно пользовался виджетами приёма данных - они у вас немножко (почти полностью) сломаются. Но в качестве компенсации вы получаете возможность пользоваться математическими выражениями и функциями описанными по этой ссылке (https://github.com/uklimaschewski/EvalEx), а так же 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
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, то исходя из этой первой таблицы (http://odroid.com/dokuwiki/doku.php?id=en:xu3_hardware_gpio), например для 13 пина:

13 XE.INT13 GPX1.5 (#21)

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

ali_vlad
30.07.2016, 00:15
Немного разобрался
На мой взгляд, установка GPIO по умолчанию в 0 - не подходит для кнопок, ибо будет правильнее, если они будут замыкаться на массу.
И первый глюк: Если после создания команды попытаться её отредактировать, то созданная /sys/class/gpio/gpio*** исчезает
Иногда возникает оооочень долгая задержка, секунд так 30.
Как повесить запуск приложения на изменение gpio так и не понял.

indevor
30.07.2016, 01:58
Всем привет. Такая проблема. Подключил датчик ds18b20 по этому коду, через леонардо на тв боксе (свистке) mk908ii (rk3188), прошивка Finless 1.6 (4.2.2):

#include <OneWire.h>
OneWire ds(9);

void setup() {
pinMode(6, OUTPUT); // set pin to input
digitalWrite(6, HIGH);
Serial.begin(9600);
}

void loop() {

byte data[2];
ds.reset();
ds.write(0xCC);
ds.write(0x44);
delay(750);
ds.reset();
ds.write(0xCC);
ds.write(0xBE);
data[0] = ds.read();
data[1] = ds.read();
int Temp = (data[1]<< 8)+data[0];
Temp = Temp>>4;
Serial.print("<Temp:");
Serial.print(Temp);
Serial.println(">");
delay(5000);
}

конфигурация такая: usb свистка - хаб1 - хаб2 - леонардо.
Из железа: контроллера тача на таком же леонардо (хаб1), звук c-media (хаб1) - хаб2 - леонардо(хаб2), мышь(хаб2), клава(хаб2).
При рабочей системе - с большего всё ок. Стоят галки автоопределение и переподключение. Как только перезагружаю систему, всё наглухо виснет и не даёт загрузится (экран, бутлого, просто замирает, потом свисток отрубается, чёрный экран). По светодиодам видно что леонардо стартует и открывает порт где то в середине загрузки потом грузится пару фризов и всё - стоп)

Ещё заметил если убрать и скетча delay(5000); данных видно становится многовато и всплывающее окно не исчезает. (в моём случаи <Temp:xx>)

Пробовал отключать всё кроме тача и леонардо с датчиком.. жутки тормоз и по итого не грузит.
Да. каждый раз, при перезагрузках с 1 хабом устройства разные /dev/usb/001 ..2..3..6. и если убрать автоопределение и вручную указать /dev/usb/001 то при след. перезагрузке эта настройка не сохраниться, так как такого устройства уже не будет. Однако если зайти в терминал и набрать cat /dev/ttyACM0 леонардо будет висеть там постоянно и исправно показывать данные. может как то можно указать этот порт вручную? Или как то в скетч указать что бы контроллер прикидывался строго определенным образом..

Maniac82
30.07.2016, 18:03
mark949, спасибо.

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


Не много не понял про сей момент.
То есть если у меня стоит виджет принимающий команду <temp:cc>, то он перестанет работать совсем? Или его по новой просто надо будет сделать? Или вообще виджеты не будут работать?

DelleTenebre
30.07.2016, 19:07
indevor, на данный момент у меня решения нет. Я пока что не знаю как более менее правильно считывать с /dev/ttyACM0.

Maniac82, виджеты останутся (должны по крайней мере) - сбросится их содержимое и будет нужно настроить вывод текста заново. Ключи сохранятся, только текст сбросится.

indevor
30.07.2016, 22:03
indevor, на данный момент у меня решения нет. Я пока что не знаю как более менее правильно считывать с /dev/ttyACM0.

Спасибо за ответ. Думаю мне нужна просто задержка определения устройств вашей программой. Отложенный запуск.
Вы пишите:
USB
Запуск/остановка сервиса, считывающего информацию с последовательного порта, производится при получении ACTION_USB_DEVICE_ATTACHED / ACTION_USB_DEVICE_DETACHED.
Может Вам известно как в таскере сделать что бы ваш сервис стартовал после полной загрузки ОС. Либо с паузой параллельно загрузке.

DelleTenebre
30.07.2016, 22:28
Может Вам известно как в таскере сделать что бы ваш сервис стартовал после полной загрузки ОС. Либо с паузой параллельно загрузке.
В таскере нет, но я добавлю опции "Автозапуск" и "Задержка автозапуска".

indevor
30.07.2016, 22:38
Отлично, спасибо! Буду ждать релиз.

DelleTenebre
31.07.2016, 00:05
В 1.6.4 (https://yadi.sk/d/I3iDSjOUr244c) добавил опции автозапуска.

indevor
31.07.2016, 01:11
В 1.6.4 (https://yadi.sk/d/I3iDSjOUr244c) добавил опции автозапуска.
Благодарю за оперативность!. То, что нужно. По итогу заработало благодаря паузе в 10 сек. Как то не сразу виджет схватывает ключ или мне кажется при первичной настройке.
И по-моему были проблемы когда в хаб вставлена флешка. видно как она перезагружатся несколько раз, но леонардо не открывает порт, хотя стояло автоопределение. Буду тестить, пробовал по разному поэтому сказать наверняка о багах не могу.

indevor
31.07.2016, 01:53
Вообщем мистика, может что не то натыкал, все работает благодаря паузе со всеми устройствами и двумя хабами.

mark949
02.08.2016, 15:52
Мужики, у меня в последних версиях перестал реагировать на : "Эмуляция клавиатуры [Root]" -> "Эмуляция нажатия Alt+Tab" ,
"Эмуляция нажатия App_Switch" ,
"Эмуляция нажатия Tab"
возможно и еще какие то, но этими я пользовался через iDrive а теперь на экран вывод Serial команды видит и выводит а реакции 0.
Прошу проверить.
Android 5.1.1+root
СПС.

DelleTenebre
03.08.2016, 15:55
mark949, проверил, работает. Возможно uinput каким-либо образом слетел или root-права.

В версию 1.6.5 добавлена возможность взаимодействия по WebSocket. В настройках можно указать порт и запускать ли сервер.

Тестируем следующим образом: подключаем android с SM к одной сети с компьютером (к одному wifi-роутеру, например); заходим в SM, на главной странице, вверху видим строчки:

WebServer: 192.168.1.77:5000
WebSocket: 192.168.1.77:5000/ws

У вас IP-адрес будет другой и порт, какой указали в настройках (по-умолчанию 5000). Открываем на компьютере более-менее свежий браузер и переходим по адресу WebServer, в моём примере 192.168.1.77:5000. Если всё хорошо, то откроется страничка со следующим содержанием:
------------------------------------------------
SerialManager

version: 1.6.5

WebSocket server address: 192.168.1.77:5000/ws

WebSocket test
------------------------------------------------

Переходим по ссылке WebSocket test, нажимаем "Установить соединение". Оправляем команды и счастливым взглядом смотрим в лог.

После изменения любых настроек SM (главных настроек), сервер делает рестарт и WebSocket (в браузере) нужно будет подключить заново.

Описанное выше поведение нужно будет учитывать и при подключении Arduino, т.е. при ошибке соединения, необходимо будет написать алгоритм переподключения.

У меня, на данный момент, нет ни WiFi, ни Ethernet-шилда к arduino, поэтому помочь не смогу.



Изменения коснулись и Категория > Отправить команду, теперь вариантов 4:


КакаяЛибоКоманда
usb:КакаяЛибоКоманда
bluetooth:КакаяЛибоКоманда
websocket:КакаяЛибоКоманда


в первом случае, КакаяЛибоКоманда будет отправлена через usb, bluetooth и websocket.

в остальных случаях, Вы указываете куда нужно отправить КакаяЛибоКоманда.

Это же правило действует в виджетах отправки, да и везде, где отправляем команды (через Tasker, например).

djdonatas
03.08.2016, 20:07
а прием по вебсокету есть ?
Спасибо за проделанную работу!

DelleTenebre
03.08.2016, 20:30
Конечно, работает и приём и передача.

ali_vlad
04.08.2016, 11:31
Так и не понял, как из этой (http://pccar.ru/showpost.php?p=362233&postcount=109) инструкции получить уровень яркости.
Может ещё какие поля надо заполнить?

seaway
08.08.2016, 15:09
Не заметил никаких тормозов в эмуляции нажатия кнопок... Завтра более точно измерю эту задержку.

Есть небольшая задержка...

Видео с управлением через Serial Manager
nzs_4lMOt6A

Видео с управлением через эмуляцию USB клавиатуры
YU8O0T3_nBE

подскажите как реализовать данный переход по папкам ? и можно ли еще нажначить вход в папку с помощью кнопки?
если можно пример скетча .

YAM1966
08.08.2016, 15:32
подскажите как реализовать данный переход по папкам ? и можно ли еще нажначить вход в папку с помощью кнопки?
если можно пример скетча .
Эта проверка реализована на моем контроллере 4-й версии (http://pccar.ru/showthread.php?t=20460).

seaway
08.08.2016, 15:53
Эта проверка реализована на моем контроллере 4-й версии (http://pccar.ru/showthread.php?t=20460).
а на Ардуино сие можно организовать ?

YAM1966
08.08.2016, 16:19
а на Ардуино сие можно организовать ?
Уже все разжевано (http://pccar.ru/showthread.php?p=319975#post319975)....
И не однократно (http://www.pccar.ru/showthread.php?t=20222).

indevor
08.08.2016, 21:38
а на Ардуино сие можно организовать ?
Можно. Гуглится "usb hid keyboard arduino"

ali_vlad
08.08.2016, 22:37
Можно. Гуглится "usb hid keyboard arduino"
Для HID нужны доски с камнем ***23U4, да и зачем извращаться с HID, если есть эта прога. С ней можно вообще любую доску юзать и по serial, и по синезубу, и по USB и по квадратной шине (когда автор реализует).

Vic26
08.08.2016, 22:53
DelleTenebre
Ты не пробовал через /dev/uinput мультитач реализовать?
У меня устройство создается но реакции на эмуляцию нажатий нет. С клавиатурой проблем нет, а вот тач что-то не дается...

indevor
08.08.2016, 23:01
Для HID нужны доски с камнем ***23U4, да и зачем извращаться с HID, если есть эта прога. С ней можно вообще любую доску юзать и по serial, и по синезубу, и по USB и по квадратной шине (когда автор реализует).

Все верно. Что-то не подумал) там же есть "эмуляция клавы".
Любая доска, кнопка к ней, анализируем нажатие отправляем в сериал, софтом читаем и "жмём" то что выставили в софте.

p_osipov
09.08.2016, 01:31
DelleTenebre
Ты не пробовал через /dev/uinput мультитач реализовать?
У меня устройство создается но реакции на эмуляцию нажатий нет. С клавиатурой проблем нет, а вот тач что-то не дается...

В андроиде надо делать хитро - создавать два хендла к uinput. Один раз открыть и описать как клавиатуру, второй - только как тачскрин. У меня иначе не заработало...

Vic26
09.08.2016, 11:39
В андроиде надо делать хитро - создавать два хендла к uinput. Один раз открыть и описать как клавиатуру, второй - только как тачскрин. У меня иначе не заработало...
спасибо, попробую так.
т.е. по сути будет 2 отдельных /dev/input/eventX ?

seaway
09.08.2016, 11:57
Для HID нужны доски с камнем ***23U4, да и зачем извращаться с HID, если есть эта прога. С ней можно вообще любую доску юзать и по serial, и по синезубу, и по USB и по квадратной шине (когда автор реализует).
те это пока еще не реализовано arduino по usb ?

p_osipov
09.08.2016, 12:59
спасибо, попробую так.
т.е. по сути будет 2 отдельных /dev/input/eventX ?
Вот реализация тача. Код правда совершенно не причесан.

DelleTenebre
09.08.2016, 13:26
seaway, реализовано: USB, Bluetooth, WebSocket
Не реализовано: I2C

Vic26
09.08.2016, 13:26
Вот реализация тача. Код правда совершенно не причесан.

:good: спасибо!

seaway
09.08.2016, 14:17
seaway, реализовано: USB, Bluetooth, WebSocket
Не реализовано: I2C

а не могли бы вы ткнуть в мануал , либо я что то не понял ,скачал , установил, подключил arduino к рулевым кнопкам , а что дальше делать не пойму )) , скечь нужно какойто заливать на ардуино ?

ali_vlad
09.08.2016, 14:24
а не могли бы вы ткнуть в мануал , либо я что то не понял ,скачал , установил, подключил arduino к рулевым кнопкам , а что дальше делать не пойму )) , скечь нужно какойто заливать на ардуино ?

В сообщении 201 на странице 21 YAM уже привел 2 примера.
Тут без элементарного знания матчасти ну совсем никак.

seaway
09.08.2016, 15:51
В сообщении 201 на странице 21 YAM уже привел 2 примера.
Тут без элементарного знания матчасти ну совсем никак.
Спасибо это понятно ,скетчи научился писать с горем пополам , я имел ввиду пример с программой SerialManager
как запилить кнопки руля через нее ?

ali_vlad
12.08.2016, 00:11
Спасибо это понятно ,скетчи научился писать с горем пополам , я имел ввиду пример с программой SerialManager
как запилить кнопки руля через нее ?
Кнопки надо пилить через ардуину. Я делал так (http://www.pccar.ru/showthread.php?t=24126), правда подключал к магнитоле и использовал библиотеку. Удали в начале
#include <IRremote.h>
IRsend irsend;
и во всем скетче
irsend.sendNEC(0xЧИСЛО, 32);
И вот тебе готовый скетч, только сначала считай значения кнопок и впиши в соответствующие разделы. Ну и команды придумай свои.

papant
17.08.2016, 02:06
Вопрос уважаемому разработчику: нельзя ли реализовать в следующей версии маленькую прихоть - выдавать в какую-нить переменную значение подключенных устройств? Приложение в шторке пишет "подключено USB устройств:1" - вот это "1" или сколько тут будет найдено устройств как-то отдать в таскер? Дело в том, что у меня при загрузке (если грузить с полностью выключенного состояния) почему-то через раз определяет подключена ли ардуина. я сейчас с этим борюсь так - запрограммировал одну из кнопок на руле на передергивание ОТГ. После передергивания ардуина находится. Хотелось бы процесс автоматизировать - передергивать таскером если "подключено USB устройств:0". А вот после просыпания планшета ардуина находится всегда, поэтому таскером делать передергивание ОТГ при любом раскладе не требуется (ядро Даниэля, по включенному ОТГ инициализируется флаг "идет зарядка" и запускается куча заданий таскера, поэтому и не хочется дергать ОТГ всегда). Спасибо!

Rage2
22.08.2016, 19:46
DelleTenebre, у меня на 6-ке почему то не работает "эмуляция клавиатуры[root]" Рут, разумеется, стоит и разрешен при первом запуске.
Остальные команды (звук, плеер,..) работают.

Еще замучили окна с разрешением доступа к юсб устройству(UsbPermissionActivity), при каждом передергивании отг или питания хаба. Галка использовать по умолчанию не запоминается.
44570

Причем SystemUI у меня пропатчен на этот счет, т.е в других приложениях эти окна более не беспокоят...а тут не слушается)
На сколько я знаю, это можно решить, добавив в ресурсы приложения файл с vid&pid ардуин...тогда эта галка будет запоминаться....так сделано в EasyCap Viewer
Вот http://stackoverflow.com/questions/12388914/usb-device-access-pop-up-supression/15151075
https://developer.android.com/guide/topics/connectivity/usb/host.html

upd. UsbPermission вроде вылечился сам)) глюк какой та)

а вот что делать с клавой?

DelleTenebre
23.08.2016, 08:55
Rage2, большинство тестов я делаю на Nexus 7 2012 под Android 6.0. Возможно, в Вашем случае отсутствует поддержка uinput. Хотя, даже в этом случае, должен был сработать fallback с "input keyevent ...". Перепроверю ещё раз, у Вас какая конфигурация (прошивка и устройство)?

Rage2
23.08.2016, 09:12
Rage2, большинство тестов я делаю на Nexus 7 2012 под Android 6.0. Возможно, в Вашем случае отсутствует поддержка uinput. Хотя, даже в этом случае, должен был сработать fallback с "input keyevent ...". Перепроверю ещё раз, у Вас какая конфигурация (прошивка и устройство)?

N7 WIFI 2013 СM13

mark949
25.08.2016, 17:16
Уважаемый!
А нельзя ли в последующих версиях реализовать возможность жеского выбора устройств именно устройств (несколько), сейчас у Вас есть такая возможность убрать "втоподключение" и выбрать жестко нужное устройство для привязки, но тут такое дело... я использую одновременно 2 устройства
44583
и если выставить "автоподключение" то не каждая загрузка андройда определяет их оба, как правило одно из них всегда работает, а второе только после передергивания юсб. Но бывают исключения.. Это сильно напрягает в авто, было бы хорошо иметь возможность галочками выбрать все необходимые /dev/bus/usb/**/** для работы с Вашим ПО.
Спасибо за понимание!

Sergey 4_4
25.08.2016, 18:54
mark949Контроллер от Юрия используете? И что у Вас ещё за устройства?

mark949
25.08.2016, 20:59
Да, от Юры 2 HID контроллера + мультитача от него же, остальные это hdmi to lvds, отдельный контроллер управления яркостью..

vasilij_c
25.08.2016, 22:11
DelleTenebre, не нашел в разделе "эмуляция клавиатуры[root]" клавиши - KEYCODE_PAGE_DOWN(93) и KEYCODE_PAGEUP(92) возможно дополнить?

возможно ли добавить команду для появления фокуса на иконке приложения(виджета)? сейчас, при тыкании в тач - фокус пропадает. при посылке команды (эмуляция клавиатуры) - первая команда игнорируется, но появляется фокус. с хардварной клавиатурой поведение тоже самое.

Sergey 4_4
25.08.2016, 22:13
Да, от Юры 2 HID контроллера + мультитача от него же, остальные это hdmi to lvds, отдельный контроллер управления яркостью..С Serial Manager оба контроллера работают или один? Ещё опиши как андроид приставка отключается?

mark949
26.08.2016, 11:06
С Serial Manager оба контроллера работают или один? Ещё опиши как андроид приставка отключается?
Да оба, один отвечает за CAN второй за iBus, оба работают с Serial Manager. Выключается по прошествии некого времени после отсутствия питания АСС идет серийная команда от HID контроллера в Serial Manager тот выполняет: категория - "управление системой", далее функция - "выключение".

DelleTenebre
26.08.2016, 17:41
Rage2, с эмуляцией нажатий разобрался - нужно SELinux в permissive (http://forum.xda-developers.com/g2-mini/general/guide-how-to-set-selinux-to-permissive-t3329439). Кстати, например BACK или VOLUME работали с fallback через "input keyevent ...", там только некоторые требуют uinput (например ALT+TAB).

mark949, в принципе можно попробовать такое реализовать, но боюсь не сработает - проблема в том, что при переподключении хаба эти адреса меняются, поэтому и нужно "автоподключение", которое надо как-то улучшить.

vasilij_c, KEYCODE_PAGE_DOWN(93) и KEYCODE_PAGEUP(92) добавлю. Про фокус я что-то не допёр, если можно чуть подробнее.

DelleTenebre
27.08.2016, 21:17
В 1.6.6:

Уведомления поверх остальных окон (для распознанной команды) - должно работать стабильно; добавил опцию "скрывать при клике"; добавлены варианты анимаций при появлении/скрытии.
Добавлена эмуляция кнопок: KEYCODE_PAGE_DOWN и KEYCODE_PAGEUP
По просьбе papant (пост (http://pccar.ru/showpost.php?p=367215&postcount=216)) добавлены:
Intent с action: serial.manager.CONNECTED_DEVICES, который имеет extras: all, usb, bluetooth. Данный интент создаётся при подключении/отключении устройств, при запуске сервиса, а так же при получении intent'a serial.manager.CONNECTED_DEVICES_REQUEST.

vasilij_c
27.08.2016, 21:58
.. чуть подробнее.

yqrboZVftDM

DelleTenebre
31.08.2016, 19:35
В 1.6.7 добавлены категории в настройки приложения и добавлена возможность распознавать нажатия клавиш клавиатуры для этого:

подключаем нужную клавиатуру;
в терминале вводим

cat /proc/bus/input/devices

или через adb:

adb shell cat /proc/bus/input/devices

видим примерно следующее (вложение 1 (http://pccar.ru/attachment.php?attachmentid=44606&stc=1&d=1472655722))
я подключал небольшую клавиатуру со встроенной гироскопической мышью, которая определилась как " Multimedia Air Mouse Keyboard" (на изображении выделено зелёным)
как видно, создаётся два устройства (один для мышки, второй для клавиатуры) и чтобы их различать пришлось использовать параметр EV (на изображении выделено золотым)
далее, в SerialManager создаём новую команду. Для значения ключ пишем следующее

keyboard|Air|120013


keyboard - не изменяется и является шаблоном для SM
Air - уникальная часть имени нашего устройства, можно было бы заполнить полностью Multimedia Air Mouse Keyboard, но мне было лень, Air вполне достаточно.
120013 - параметр EV, полностью.

затем, для поля Значение необходимо вводить linux keycode нажимаемого символа (если сочетание клавиш, то через +). Например, если мы хотим определять сочетание CTRL+q, то вводим
29+16
(вложение 2 (http://pccar.ru/attachment.php?attachmentid=44610&stc=1&d=1472656872))


Небольшая хитрость, если заранее Вам неизвестны keycode, то можно оставить поле Значение пустым и нажимать на нужные клавиши при открытом окне SerialManager - будут появляться всплывающие сообщения с кодами нажатых клавиш.

В настройках есть пункт "Задержка распознавания нажатий (мс)" - оно нужно именно для распознавания сочетаний, т.к. если нажимать клавиши довольно медленно, то события будут генерироваться последовательно. Например, мы хотим распознать ctrl+q+c, если нажимать не очень быстро, то будут сгенерированы следующие команды:

<keyboard|Air|120013:29>
<keyboard|Air|120013:29+16>
<keyboard|Air|120013:29+16+46>

Если Вы сумеете уложиться во время указанное в "Задержка распознавания нажатий (мс)", то будет сгенерирована только одна команда <keyboard|Air|120013:29+16+46>

----------------------

Обновление 11.07.2016, начиная с версии 1.6.8

Теперь необходимо выбрать Тип команды Keyboard (/dev/input/event*) и заполнить появившиеся поля Параметр NAME и Параметр EV. Поле Ключ будет заполнено автоматически. Скриншот (https://yadi.sk/i/Nsh5gmmBv3ANd)

mark949
31.08.2016, 20:41
Это отличная возможность, спасибо. Еще бы жесткую привязку более одного контроллера от Юры ;)

yuriy m
31.08.2016, 21:15
А как дела обстоят с I2c шиной и т.д. ?

DelleTenebre
01.09.2016, 16:18
mark949, двигаюсь в этом направлении.

yuriy m, I2C пока что в заморозке - не на чем тестировать.

From
04.09.2016, 16:27
Здравствуйте. Скажите пожалуйста как этой программой пользоваться, нужно писать скетч получается отдельно? И есть ли в этой программе ползунок?

ali_vlad
04.09.2016, 18:47
Здравствуйте. Скажите пожалуйста как этой программой пользоваться, нужно писать скетч получается отдельно? И есть ли в этой программе ползунок?

Конечно придется. И загонять его в ардуину, и подключать её к телу по usb или синезубу.
А ползунок причем?

From
04.09.2016, 20:37
Конечно придется. И загонять его в ардуину, и подключать её к телу по usb или синезубу.
А ползунок причем?
Просто я хочу ползунком регулировать направление прокрутки двигателя постоянного тока

awtoap
04.09.2016, 20:51
Покури сайт RemoteXY (в поиск)

yuriy m
05.09.2016, 01:17
И есть ли в этой программе ползунок?

Было бы не плохо , поиметь ползунок . Для управления ардуиной и т.д. Да и считывать текущие значение :blush:

DelleTenebre
12.09.2016, 09:43
Новости следующие. В версии 1.6.8 добавил:

Выбор Типа команды:

Обычный
GPIO
Keyboard (/dev/input/event*)

в зависимости от выбранного типа, будут появляться свои поля.
Скриншот (https://yadi.sk/i/VPAi-Zmiv38Uc)
Руководста на главной обновил, думаю разобраться стало легче.
----------------

Поддержка работы "напрямую" с последовательными портами (/dev/tty*):

в настройках заходим в Serial (/dev/tty*)
включаем соединение
выбираем нужную Скорость передачи данных
заполняем поле Названия последовательных портов в /dev (разделитель запятая)

Скриншот (https://yadi.sk/i/qcTSKIJIv3ANT)
----------------

(экспериментальная) Поддержка работы по шине I2C (/dev/i2c-*):

в настройках заходим в I2C (/dev/i2c*)
включаем соединение
заполняем поле Название I2C устройства в /dev (формат: deviceName|slaveAddress)

Скриншот (https://yadi.sk/i/YSmKEbgMv3AMg)
Скетч для Arduino (https://github.com/delletenebre/SerialManager/blob/master/arduino/sketch_i2c_sample.ino)
----------------


Работу с последовательными портами проверял через serial-выход GeekBox'а (он нужен для отладки и туда валится много "посторонних" данных) и Arduino Pro Micro: RX в TX, TX в RX (через логический конвертер 5в <-> 3.3в). Тесты сделаны не до конца, например я не проверил что будет, если этот порт "исчезнет" (например отключили USB-устройство). Ещё момент, если будете получать "крякозябры" или вообще не получать данных - меняйте скорость передачи данных, у меня заработало на скорости 115200.

Работу по I2C проверял на Arduino Pro Micro и GeekBox, sda в sda, scl в scl, через логический конвертер c 5в на 3.3в. Не забудьте проверить вольтаж i2c на вашем устройстве. Поддержка экспериментальная, т.к. считывание и отправка происходят довольно тупо. Я не смог разобраться с регистрами, сдвигами байтов, "удержании" линии и т.д., поэтому считывать данные с датчиков вряд ли получится. Если у Вас есть ссылка (и Вы ей поделитесь) на какой-либо материал где всё разжёвано и с примерами кода (на C, C++ или Java) буду премного благодарен. Что можно нагуглить я нагуглил, но ничего не понял :be:

mark949
12.09.2016, 11:04
Отлично друг, спасибо, будем проверять....

yuriy m
12.09.2016, 19:08
(экспериментальная) Поддержка работы по шине I2C (/dev/i2c-*):
[LIST]
в настройках заходим в I2C (/dev/i2c*)
включаем соединение
заполняем поле [U]Название I2C устройства в /dev (формат:deviceName|slaveAddress )

Ай да молодца.
Может поддержать формат (deviceName|subAddress|adress)?
боле мене толковая статья
http://easyelectronics.ru/interface-bus-iic-i2c.html
особое внимание на синии и красные пунктиры на картинках...
Если что по подробней спрашивай отвечу

oleg707
12.09.2016, 22:47
Ай да молодца.
Может поддержать формат (deviceName|subAddress|adress)?
боле мене толковая статья
http://easyelectronics.ru/interface-bus-iic-i2c.html
особое внимание на синии и красные пунктиры на картинках...
Если что по подробней спрашивай отвечу

а толковая статья

YAM1966
12.09.2016, 23:15
Частично...
Первая же описка в числе устройств на шине. Пишет что 127. Вообще-то 128, так как от 0 до 127 это 128 вариантов.
Вторая в адресации часов реального времени. Ранее писал что адрес 7 битный так как младший определяет тип дальнейшей операции запись или чтение. А тут у него оказываются у таймера уже 8 битный адрес A0 и A1. Нифига не верно, должно быть A0 и A2.
Далее я даже не читал...

DelleTenebre
13.09.2016, 07:51
Может поддержать формат (deviceName|subAddress|adress)?
боле мене толковая статья
http://easyelectronics.ru/interface-bus-iic-i2c.html
особое внимание на синии и красные пунктиры на картинках...
Статью читал, но мне бы с примерами кода. На счёт формата (deviceName|subAddress|adress) имейте в виду, что я использую уже "готовый к употреблению" i2c на Android, в виде /dev/i2c-*. Насколько я понял, там только одной цифрой адрес slave-устройства:
ioctl(fd, 0x0703, slaveAddress)

Maniac82
15.09.2016, 17:40
Давненько не заходил.. А Alt+Tab и потом Tab, Tab, Tab то реализовано или еще нет? :)

DelleTenebre
15.09.2016, 17:47
Ещё нет - руки не доходят :spider:

Maniac82
15.09.2016, 18:01
Кстати по подсолнуху.. Заметил как-то косячок. Если интернета нет, то через несколько месяцев работает некорректно, так как обновления фаз то нет.... Пока не обновишь, то как попало работает.. может можно как-то график на год забабахать примерный?

demtro
15.09.2016, 23:41
Реар вью камера с версии 1.4 и выше не отрабатывает авто включение при появлении устройства в системе. Версия 1.3 работает корректно

mark949
16.09.2016, 05:51
Реар вью камера с версии 1.4 и выше не отрабатывает авто включение при появлении устройства в системе. Версия 1.3 работает корректно

Кстати по подсолнуху.. Заметил как-то косячок. Если интернета нет, то через несколько месяцев работает некорректно, так как обновления фаз то нет.... Пока не обновишь, то как попало работает.. может можно как-то график на год забабахать примерный?

Мужики, давайте писать свои вопросы в соответствующих темах а...Тут другая программа обсуждается!

Maniac82
16.09.2016, 07:44
Мужики, давайте писать свои вопросы в соответствующих темах а...Тут другая программа обсуждается!

Так нету вроде данных тем :)

Serg-Zmuh
18.09.2016, 11:52
DelleTenebre
в последней версии я так понял ты настройку
Распознавать команду по новой строке убрал ?
я что-то её не нашел (
поэтому мой скетч с датчиками не работает (

DelleTenebre
18.09.2016, 14:46
Serg-Zmuh, она теперь всегда включена. Для USB-подключений без неё нестабильно, остальные подключения и так распознают по символам конца строки.

Angel79
21.09.2016, 16:20
Всем привет.. А под какую версию Android написана Serial Manager v1.6.8?
У меня CyanogenMod 13 с Android 6.0.1 . У меня прога вообще отказывается выполнять что либо... Даже примеры скетчей для Arduino: sketch_sample.ino - самый простой. Что был в шапке , или я чего то не понимаю может кто направит на путь истинный.