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

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

ali_vlad 08.08.2016 22:37

Цитата:

Сообщение от indevor (Сообщение 366690)
Можно. Гуглится "usb hid keyboard arduino"

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

Vic26 08.08.2016 22:53

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

indevor 08.08.2016 23:01

Цитата:

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

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

p_osipov 09.08.2016 01:31

Цитата:

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

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

Vic26 09.08.2016 11:39

Цитата:

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

спасибо, попробую так.
т.е. по сути будет 2 отдельных /dev/input/eventX ?

seaway 09.08.2016 11:57

Цитата:

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

те это пока еще не реализовано arduino по usb ?

p_osipov 09.08.2016 12:59

Вложений: 1
Цитата:

Сообщение от Vic26 (Сообщение 366726)
спасибо, попробую так.
т.е. по сути будет 2 отдельных /dev/input/eventX ?

Вот реализация тача. Код правда совершенно не причесан.

DelleTenebre 09.08.2016 13:26

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

Vic26 09.08.2016 13:26

Цитата:

Сообщение от p_osipov (Сообщение 366732)
Вот реализация тача. Код правда совершенно не причесан.

:good: спасибо!

seaway 09.08.2016 14:17

Цитата:

Сообщение от DelleTenebre (Сообщение 366735)
seaway, реализовано: USB, Bluetooth, WebSocket
Не реализовано: I2C

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

ali_vlad 09.08.2016 14:24

Цитата:

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

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

seaway 09.08.2016 15:51

Цитата:

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

Спасибо это понятно ,скетчи научился писать с горем пополам , я имел ввиду пример с программой SerialManager
как запилить кнопки руля через нее ?

ali_vlad 12.08.2016 00:11

Цитата:

Сообщение от seaway (Сообщение 366745)
Спасибо это понятно ,скетчи научился писать с горем пополам , я имел ввиду пример с программой SerialManager
как запилить кнопки руля через нее ?

Кнопки надо пилить через ардуину. Я делал так, правда подключал к магнитоле и использовал библиотеку. Удали в начале
PHP код:

#include <IRremote.h>
IRsend irsend

и во всем скетче
PHP код:

irsend.sendNEC(0xЧИСЛО32); 

И вот тебе готовый скетч, только сначала считай значения кнопок и впиши в соответствующие разделы. Ну и команды придумай свои.

papant 17.08.2016 02:06

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

Rage2 22.08.2016 19:46

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

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

Причем SystemUI у меня пропатчен на этот счет, т.е в других приложениях эти окна более не беспокоят...а тут не слушается)
На сколько я знаю, это можно решить, добавив в ресурсы приложения файл с vid&pid ардуин...тогда эта галка будет запоминаться....так сделано в EasyCap Viewer
Вот http://stackoverflow.com/questions/1...ssion/15151075
https://developer.android.com/guide/.../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

Цитата:

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

N7 WIFI 2013 СM13

mark949 25.08.2016 17:16

Выбор устройства для подключения
 
Вложений: 1
Уважаемый!
А нельзя ли в последующих версиях реализовать возможность жеского выбора устройств именно устройств (несколько), сейчас у Вас есть такая возможность убрать "втоподключение" и выбрать жестко нужное устройство для привязки, но тут такое дело... я использую одновременно 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

Цитата:

Сообщение от mark949 (Сообщение 367894)
Да, от Юры 2 HID контроллера + мультитача от него же, остальные это hdmi to lvds, отдельный контроллер управления яркостью..

С Serial Manager оба контроллера работают или один? Ещё опиши как андроид приставка отключается?

mark949 26.08.2016 11:06

Цитата:

Сообщение от Sergey 4_4 (Сообщение 367901)
С Serial Manager оба контроллера работают или один? Ещё опиши как андроид приставка отключается?

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

DelleTenebre 26.08.2016 17:41

Rage2, с эмуляцией нажатий разобрался - нужно SELinux в permissive. Кстати, например 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 (пост) добавлены:
    Intent с action: serial.manager.CONNECTED_DEVICES, который имеет extras: all, usb, bluetooth. Данный интент создаётся при подключении/отключении устройств, при запуске сервиса, а так же при получении intent'a serial.manager.CONNECTED_DEVICES_REQUEST.

vasilij_c 27.08.2016 21:58

Цитата:

Сообщение от DelleTenebre (Сообщение 367940)
.. чуть подробнее.


DelleTenebre 31.08.2016 19:35

Вложений: 2
В 1.6.7 добавлены категории в настройки приложения и добавлена возможность распознавать нажатия клавиш клавиатуры для этого:
  • подключаем нужную клавиатуру;
  • в терминале вводим
    Код:

    cat /proc/bus/input/devices
    или через adb:
    Код:

    adb shell cat /proc/bus/input/devices
  • видим примерно следующее (вложение 1)
  • я подключал небольшую клавиатуру со встроенной гироскопической мышью, которая определилась как " 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)

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

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

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

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

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

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

Цитата:

Сообщение от From (Сообщение 368415)
Здравствуйте. Скажите пожалуйста как этой программой пользоваться, нужно писать скетч получается отдельно? И есть ли в этой программе ползунок?

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

From 04.09.2016 20:37

Цитата:

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

Просто я хочу ползунком регулировать направление прокрутки двигателя постоянного тока

awtoap 04.09.2016 20:51

Покури сайт RemoteXY (в поиск)

yuriy m 05.09.2016 01:17

Цитата:

Сообщение от From (Сообщение 368415)
И есть ли в этой программе ползунок?

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

DelleTenebre 12.09.2016 09:43

Новости следующие. В версии 1.6.8 добавил:
  • Выбор Типа команды:
    • Обычный
    • GPIO
    • Keyboard (/dev/input/event*)
    в зависимости от выбранного типа, будут появляться свои поля.
    Скриншот
    Руководста на главной обновил, думаю разобраться стало легче.
    ----------------
  • Поддержка работы "напрямую" с последовательными портами (/dev/tty*):
    • в настройках заходим в Serial (/dev/tty*)
    • включаем соединение
    • выбираем нужную Скорость передачи данных
    • заполняем поле Названия последовательных портов в /dev (разделитель запятая)
    Скриншот
    ----------------
  • (экспериментальная) Поддержка работы по шине I2C (/dev/i2c-*):
    • в настройках заходим в I2C (/dev/i2c*)
    • включаем соединение
    • заполняем поле Название I2C устройства в /dev (формат: deviceName|slaveAddress)
    Скриншот
    Скетч для Arduino
    ----------------

Работу с последовательными портами проверял через 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

Цитата:

Сообщение от DelleTenebre (Сообщение 369080)
[*](экспериментальная) Поддержка работы по шине 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

Цитата:

Сообщение от yuriy m (Сообщение 369109)
Ай да молодца.
Может поддержать формат (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.
Далее я даже не читал...


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

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