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)

Maniac82 24.06.2016 05:54

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

Sergey 4_4 24.06.2016 07:51

Цитата:

Сообщение от Maniac82 (Сообщение 363343)
Версия 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.
Использовал свой способ добытый ранее на просторах интернета и доработанный - кому надо пользуйтесь (в виджете использована команда
PHP код:

<led:on>|<led:off

"

PHP код:

#include <string.h>
 

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

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

void setup() {

pinMode(7INPUT); //кнопка на 7 пине
Serial1.begin(9600);
pinMode(13OUTPUT);
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() && i99) {
        
buffer[i++] = Serial1.read();
     }
     
//закрываем массив
     
buffer[i++]='\0';
  }
 
//если буфер наполнен
  
if(i>0){  
     
    
//разбераем его на части отделенные двоеточием
    
sscanf(buffer"<%[^:]:%[^>]", &command, &data);
    
//выполняем команды
      
if (strcmp(command"led")==strcmp(data"on")==0) {Serial1.println("<ON>"); digitalWrite(13HIGH);}
      if (
strcmp(command"led")==strcmp(data"off")==0) {Serial1.println("<OFF>"); digitalWrite(13LOW);}
      
    
//пишем какую команду получили
      
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

Цитата:

Сообщение от Maniac82 (Сообщение 363358)
А ак можно посмотреть нормальным способом все иконки? или свою запихать?
Текст / Иконка: \uf186|\uf185

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

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

Narkus 24.06.2016 17:54

Добрый день всем, подскажите пожалуйста, возможно ли с помощью данного приложения перехватывать с СОМ порта значения с фоторезистора, подключенного к аналоговому порту и программно изменять системную яркость в андроиде? Перечитал всю тему, так и не понял :( Подключение ардуино как тут Задача снимать данные уровня освещенности и менять яркость экрана программно, не врезаясь в цепи подсветки.

lti1 24.06.2016 18:38

Цитата:

Сообщение от Narkus (Сообщение 363381)
Добрый день всем, подскажите пожалуйста, возможно ли с помощью данного приложения перехватывать с СОМ порта значения с фоторезистора, подключенного к аналоговому порту и программно изменять системную яркость в андроиде? Перечитал всю тему, так и не понял :( Подключение ардуино как тут Задача снимать данные уровня освещенности и менять яркость экрана программно, не врезаясь в цепи подсветки.

Измените скетч под свои нужды, примерно так:
PHP код:

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

Цитата:

Сообщение от DelleTenebre (Сообщение 363371)

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

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

DelleTenebre 24.06.2016 21:12

Цитата:

Сообщение от Maniac82
Дык смотреть надо чем версия 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 с хотфиксом сохранения команд.

vasilij_c 24.06.2016 23:53

Цитата:

Сообщение от Sergey 4_4 (Сообщение 363344)
Попробуйте поставить сначала версию 1.6-1, в ней настроить команды, а после, не удаляя её, поставить 1.6 бета 7,должно помочь.

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

vasilij_c 24.06.2016 23:59

Цитата:

Сообщение от DelleTenebre (Сообщение 363401)
.. выпуск 1.6.0 с хотфиксом сохранения команд.

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

vasilij_c 25.06.2016 00:16

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

Maniac82 25.06.2016 06:30

Цитата:

Сообщение от DelleTenebre (Сообщение 363401)
Прошло ровно 2 месяца с последней "стабильной" версии, и я уже задолбался дописывать -beta-x, поэтому выпуск 1.6.0 с хотфиксом сохранения команд.

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

Maniac82 25.06.2016 06:40

Цитата:

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

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

DelleTenebre 25.06.2016 09:11

Цитата:

Сообщение от vasilij_c (Сообщение 363408)
DelleTenebre в версии 1.6.0 есть такая функция ".. возможность отправлять команды на контроллер из Tasker " ?

Да, конечно.

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

Цитата:

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

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

DelleTenebre 26.06.2016 11:43

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

Maniac82 26.06.2016 12:02

Цитата:

Сообщение от DelleTenebre (Сообщение 363450)
В 1.6.1
Если же поддержки uinput в системе нет, то будет использован старый тормознутый способ с "input keyevent X".

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

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

DelleTenebre 26.06.2016 16:11

Цитата:

Сообщение от Maniac82
Хочу полностью уйти от USB подключения Ардуины.
Есть ли возможность эмулировать долгое нажатие клавиши?

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

vasilij_c 26.06.2016 18:00

Цитата:

Сообщение от DelleTenebre (Сообщение 363450)
В 1.6.1 была добавлена виртуальная клавиатура, которая должна максимально уменьшить задержку при эмуляции нажатий клавиш....

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

Maniac82 26.06.2016 19:05

Цитата:

Сообщение от DelleTenebre (Сообщение 363458)
С новым способом (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

Цитата:

Сообщение от slon25 (Сообщение 363573)
Не могу ни как настроить на нексус 7 2013 и контроллер от ЮРЫ. Как в терминале проверить его работу?

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

slon25 27.06.2016 22:56

Цитата:

Сообщение от Sergey 4_4 (Сообщение 363577)
Какую из версий не можете настроить?У меня тоже контроллер от ЮРЫ,немного костыльно ,но всё таки удалось настроить,выше писал как.

Пробывал все версии ни одна не работает. От контролера не приходит значение и ключ. Выставляю вручную 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

Цитата:

Сообщение от lti1 (Сообщение 363384)
Измените скетч под свои нужды, примерно так:
PHP код:

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

Тогда уж лучше так:
PHP код:

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

Цитата:

Сообщение от djdonatas
Теперь очень хотелось бы иметь возможность загружать свои иконки,т.к. ничего подходящего в шрифтах не найдено %)

Это можно: http://pccar.ru/showpost.php?p=363371&postcount=128
Как будет время сделаю более подробную инструкцию как собрать шрифт.

Цитата:

Сообщение от djdonatas
еще хотелось бы иметь простейшие операции со строками, типа hex2str, substr и тд.

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

Narkus 28.06.2016 17:07

Залил такой код
PHP код:

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 974light 100

Serial.print("<brightness:");
Serial.print(light);
Serial.print("%>");
 
delay(300); 


Я думаю суперточность при регулировке яркости не нужна, но приложение Serial Manager ооочень меедленно реагирует: между закрытием фоторезистора (полная темнота) и изменением значения, которое приложение выводит, проходит около минуты. При этом системная яркость не регулируется. Приложение UsbTerminal выводит данные как положено быстро.

lti1 28.06.2016 18:33

Narkus, у Вас данные в приложение отправляются каждые 300 миллисекунд, зачем так часто? По факту данные нужно отправлять если изменения на датчике освещенности превысили какое-то значение, например +-10%.
Попробуйте так:
PHP код:

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

Цитата:

Сообщение от YAM1966 (Сообщение 363580)
Все там приходит. Для начала появляется ли ttyACMx в /dev ?
Поставили ли галку Распознавать команду по новой... в настройках Serial Manager?

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

Narkus 29.06.2016 12:15

lti1, спасибо за подсказку, немного изменил код для более простой калибровки под фоторезистор:
PHP код:

int sens 0
int sens_save
void setup() { 
  
Serial.begin(115200); 


void loop() { 
  
sens analogRead(0); 
  
sens map(sens74010000100); // для упрощения калибровки фоторезистора map(sens, нижний порог, верхний порог, 0, 100)
  
sens constrain(sens0100); // числовые показания ограничены диапазоном от 0 до 100 
  
if (abs(sens_save sens) > 10) { 
    if (
sens<10sens 0
    if (
sens>85sens 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... На сколько я понял получившееся приложение коннектится по IP к порту и передает то, что нажали. Можно запустить листенер и принимать эти сообщения Serial Manager-ом...

djdonatas 29.06.2016 19:17

Цитата:

Сообщение от YAM1966 (Сообщение 363692)
Есть такая хрень, как GUI designer... На сколько я понял получившееся приложение коннектится по IP к порту и передает то, что нажали. Можно запустить листенер и принимать эти сообщения Serial Manager-ом...

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


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

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