roboforum.ru

Технический форум по робототехнике.
Текущее время: 17 мар 2025, 17:38

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 1911 ]  На страницу Пред.  1 ... 75, 76, 77, 78, 79, 80, 81 ... 128  След.
Автор Сообщение
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 27 июл 2018, 20:20 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
Номер такой - 00:18:E5:03:62:AA

Добавлено спустя 1 час 3 минуты 16 секунд:
Нет, туго с пониманием логики конструктора. Молчит как партизан.

Добавлено спустя 1 час 59 минут 4 секунды:
Заработало только с кнопкою дополнительной.


Вложения:
5.jpg
5.jpg [ 200.38 КиБ | Просмотров: 1841 ]
4.jpg
4.jpg [ 177.42 КиБ | Просмотров: 1847 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 27 июл 2018, 22:45 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2683
Откуда: Где-то в Латинской Америке
Делаешь успехи! Посмотри операторы раблты с текстом. Там есть объединение нескольких фраз в один текст. После получения распознаной фразы, добавляешь "Ты сказал " и отправляешь сразу в синтезатор.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 27 июл 2018, 23:02 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
Посмотрел присланный файл ещё раз. Наконец то увидел куда номер модуля ставить, две функции которые не надо трогать, красную кнопку которую надо оставить. Остальные кнопки можно убирать. Добавлять вместо них условия "если распознанный текст-результат равен такому то "тексту"", шли, например, букву "D"...А давать команду на распознание долгим нажатием на ту же красно-жёлто-зелёную кнопку.
Такой вопрос - модуль можно просто подключить к 0 и 1 и считывать всё как из монитор порта, на скорости 9600?,организовывая функции обработки как в предыдущем случае с шашками.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 28 июл 2018, 00:53 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Scorpio писал(а):
Делаешь успехи!

dimamichev писал(а):
Такой вопрос - модуль можно просто подключить к 0 и 1 и считывать всё как из монитор порта, на скорости 9600?,организовывая функции обработки

Не отец, но мужчина :crazy:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 28 июл 2018, 03:38 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2683
Откуда: Где-то в Латинской Америке
Dmitry__ писал(а):
Не отец, но мужчина :crazy:

Та нармальна всёёёё! :beer:
dimamichev писал(а):
и считывать всё как из монитор порта, на скорости 9600?,организовывая функции обработки как в предыдущем случае с шашками.

ВТ модуль конечно подключается к СОМ порту (ты вроде уже подключал) и передавать все что хочешь, точно как в терминале IDE Arduino. Не забывай добавлять в конце строки "\n" (новая строка), чтобы дуня съела строку целиком.
Вложение:
NewLine.jpg
NewLine.jpg [ 16.36 КиБ | Просмотров: 1789 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 28 июл 2018, 07:54 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
На стороне Ардуины такой код планирую. В нём пока три рисунка "в функциях" по "командам извне". Из "рисовальных" функций постановка точки в полярных и декартовых координатах, рисование отрезка-вектора (через полярные координаты), окружности,квадрата,треугольника равностороннего.
По ресурсам, думаю, ещё много влезет картинок(33 процента памяти задействовано).
Код:
///////////// МАНИПУЛЯТОР ДЛЯ ГРАФИЧЕСКИХ ИЗОБРАЖЕНИЙ скетч РИСОВАНИЕ //////////////////////////////
#include <Servo.h>
////////////////////////////////////////////////////////////////
#define l1 65  //длина первого плеча манипулятора в мм.
#define l2 65  //длина второго плеча манипулятора в мм.

#define Lmax 120//значение граничных координат
#define Qmax 140//значение граничных координат
#define Acor1 352//поправка на посадку качалки сервы 1
#define Acor2 220//поправка на посадку качалки сервы 2
#define Lmin 50//значение граничных координат
#define Dstep 1 //шаг при рисовании отрезка
#define Dmax 50//максимальной длины отрезок
//Для аварийной остановки в процессе рисования - не задействована
boolean StopFlag=false;
////////////////////////////////////////////////////////////////
float CurL=1000;
float CurQ=1000;
byte a03=125;
byte a3=a03;
int n=10;//переменная единицы временного интервала
String inputString;// строка данных
///////////////////////////////////////////////////////////////
Servo servo1;
Servo servo2;
Servo servo3;


void setup() {
Serial.begin(9600);
servo1.attach(5);
servo2.attach(6);
servo3.attach(7);
servo1.write(100);
servo2.write(110);
servo3.write(a03);
}

void loop()
    {
       CheckSerial();//ЖДЁМ ПОСТУПЛЕНИЯ КОМАНДЫ НА РИСОВАНИЕ ЗАДАННОГО ОБЪЕКТА
    }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////ФУНКЦИИ ФУНУЦИИ ФУНКЦИИ ФУНУЦИИ ФУНКЦИИ ФУНУЦИИ////////////////////////////////////////////////////////// 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//функция рисует окружность диаметром d
///////////////////////////////////////
void Okr(float d)
{
up_down_pen(true);//опустим перо
for (byte i=0;i<12;i++)
{
  DrawVector(PI*d/12,30*i);
  }
   
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//функция рисует равносторонний треугольник со стороной d, наклонённый под углом a (больше 0, меньше 60 градусов)
///////////////////////////////////////
void Treug(int d, int a)
{
up_down_pen(true);//опустим перо
DrawVector(d,60-a); DrawVector(d,300-a); DrawVector(d,180-a);
   
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//функция рисует квадрат со стороной d, наклонённый под углом a (больше 0, меньше 90 градусов)
///////////////////////////////////////
void Kvad(int d, int a)
{
up_down_pen(true);//опустим перо
DrawVector(d,90+a); DrawVector(d,0+a); DrawVector(d,270+a); DrawVector(d,180+a);
 
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// фунуция рисует линию длины d в направлении a(в градусах)
//либо переставляет перо на конец вектора, при отрицательных d
void DrawVector(float d, float a)
{
  if (d > Dmax || a < 0 || a > 359)return; // не корректные параметры
  if (CurL == 1000 || CurQ == 1000)return; // не задана начальная точка
  if (d < 0) //задана перестановка пера
  {
    //up_down_pen(false);//поднимем перо
    d = abs(d);
    GoToFinLine(d, a);
  } else //задано рисование линии
  {
    up_down_pen(true);//опустим перо
    int n = d / Dstep; //разобьем линию на n отрезков.
    for (int i = 1; i <= n; i++)GoToFinLine(Dstep, a);//нарисуем отрезки по очереди
    d -= n * Dstep;
    if (d > 0)GoToFinLine(d, a); //последнюю точку нарисуем отдельно для точности.
  }
}
// функция перемещает перо в конец заданного вектора
void GoToFinLine(float d,float a)
{
  if(StopFlag)return;
  //определим координаты конца вектора
    float l=CurL+d*sin(GradToRad(90+a-CurQ));
    float g=CurQ-(180*asin(d*cos(GradToRad(90+a-CurQ))/CurL))/PI;
   //переместим перо
    SetServosToPoint(l,g);
    delay(n*d);// выдержка времени для отработки механизма, зависящая от длины пути.
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Функция выставляет servo1 servo2, на точку с декартовыми координатами Х,Y
//X,Y расстоямие в мм
void SetServosToPointXY(float X, float Y)
{
  float l; float q;
  if(X==0){l=Y;q=90;}
  if (X>0){q=(180/PI)*asin((Y/X)/sqrt(1+((Y*Y)/(X*X))));l=Y/sin(PI*q/180);}
  if (X<0){q=180-((180/PI)*asin((Y/abs(X))/sqrt(1+((Y*Y)/(X*X)))));l=Y/sin(PI*(180-q)/180);}
  SetServosToPoint(l,q);

}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Функция выставляет servo1 servo2, на точку с полярными координатами L,Q
//L расстоямие в мм от полюса,Q угол от полярной оси в градусах
void SetServosToPoint(float L, float Q)
{

  if(L>=Lmax ||L<=Lmin  ||Q>= Qmax ) return;
  float lp=65; //длина одного из равных плеч
  float B=acos(1.00-(L*L)/(2*lp*lp));
  float A=(PI*Q/180)+(B/2)-(PI/2);
// Serial.print("A= ");
  //Serial.println(180*A/PI);
// Serial.print("B= ");
  //Serial.println(180*B/PI);
  servo1.writeMicroseconds(RadianToMcs(A)+Acor1);
  servo2.writeMicroseconds(RadianToMcs(B)+Acor2);
  delay(5*n);
  CurL=L;
  CurQ=Q;

// Serial.print("Current point: L= ");
// Serial.print(L);
// Serial.print(", Q= ");
// Serial.println(Q);
}
//////////////////////////////////////////////////////////////////////
//функция перевода радиан в микросекунды для управления сервоприводами
int RadianToMcs(float rad)
{
  int grad=180*rad/PI;
  grad=map(grad, 0, 180, 500, 2500);
  return grad;
}
/////////////////////////////////////////////////////////////////////
float GradToRad(float grad)
{
  float rad=PI*grad/180;
  return rad; 
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////функция поднимания-опускания фломастера (значения аргумента false и true  соответственно)/////
void  up_down_pen(boolean  k)
{
  while (a3>85&&k==1)
  {servo3.write(a3);a3=a3-1;delay(n);}if(k== true ){a3=85;}
   while (a3<a03&&k==0)
  {servo3.write(a3);a3=a3+1;delay(n);}if (k==false){a3=a03;}
  }
  /////////////////////////////////////////////////////////////////////////////////////////////////
//ФУНКЦИИ ПРИЁМА И ОБРАБОТКИ ДАННЫХ
void CheckSerial()
{
//////////////////////////////////////////////////////////////////////////////
  while (Serial.available())//считываем строку данных пока они поступают
  {
    char inChar = (char)Serial.read();
    if (inChar == '\n')     //если окончание строки
    {
      MakeCmd();//обрабатываем её данной функцией
      break;
    }
    else inputString += inChar;// иначе удлиняем строку на один символ
  }
}
/////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
void MakeCmd()
{
    int y=inputString.length();// присваиваем переменной у число символов в строке
    if (y<3||y>3)return;//если их меньше 3 или больше, выходим из функции
    String cmd=inputString;// передаём строку другой переменной
    inputString = "";//"обнуляем переменную"

if (cmd=="DOM"){RisunokDomik ();}//РИСУЕМ ДОМИК
if (cmd=="KUB"){ RisunokKubik ();}//РИСУЕМ КУБИК 
if (cmd=="CVE"){RisunokCvetok();}//РИСУЕМ ЦВЕТОК
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //////////////////////// РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ РИСУНКИ ///////////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   void RisunokDomik ()
   {
  SetServosToPoint (80,110);// стены, крыша
   DrawVector(20,90);DrawVector(10,180);DrawVector(14,45);DrawVector(20,0);DrawVector(14,315);DrawVector(10,180);
   DrawVector(20,270);DrawVector(20,180);DrawVector(20,90);DrawVector(22,0);
   up_down_pen (false);
   
   SetServosToPoint (85,103);//окошко
   DrawVector(7,90);DrawVector(7,0);DrawVector(7,270);DrawVector(7,180);
    up_down_pen (false);

    SetServosToPoint (107,100);//труба
   DrawVector(7,90);DrawVector(5,0);DrawVector(7,270);DrawVector(5,180);
    up_down_pen (false);

     SetServosToPoint (75,100);//дорожка
   DrawVector(40,0);
    up_down_pen (false);
    SetServosToPoint (70,103);
     DrawVector(40,0);
    up_down_pen (false);
   
    SetServosToPointXY(20,90);Okr(15);//солнышко

     SetServosToPointXY(5,95); DrawVector(10,20);up_down_pen (false);SetServosToPointXY(5,85); DrawVector(10,45);up_down_pen (false);SetServosToPointXY(10,80); DrawVector(10,70);up_down_pen (false);
     SetServosToPointXY(5,105); DrawVector(10,330);up_down_pen (false);SetServosToPointXY(15,80); DrawVector(10,80);up_down_pen (false);SetServosToPointXY(20,80); DrawVector(10,80);up_down_pen (false);
     SetServosToPointXY(10,110); DrawVector(10,320);up_down_pen (false);SetServosToPointXY(20,107); DrawVector(10,120);up_down_pen (false);SetServosToPointXY(25,107); DrawVector(10,90);up_down_pen (false);

    for (int z=0;z<9;z++)// заборчик
     {
       SetServosToPointXY(-45+2*z,75); DrawVector(12,90);DrawVector(4,300);up_down_pen (false);
      }
        SetServosToPointXY(-45,75); DrawVector(20,0);up_down_pen (false);
      }
     
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   void RisunokKubik ()
   {
   SetServosToPointXY(-20,75);Kvad(20,0);up_down_pen (false);// сам кубик
  SetServosToPointXY(-20,95);DrawVector(15,45);up_down_pen (false);
  SetServosToPointXY(0,95);DrawVector(13,47);up_down_pen (false);
  SetServosToPointXY(0,75);DrawVector(15,45);up_down_pen (false);
  SetServosToPointXY(-12,106);DrawVector(23,0);DrawVector(22,270);up_down_pen (false);

  SetServosToPointXY(-11,85);up_down_pen (true);delay(2000);up_down_pen (false);//точки на гранях
   SetServosToPointXY(8,93);up_down_pen (true);delay(2000);up_down_pen (false);
  SetServosToPointXY(2,96);up_down_pen (true);delay(2000);up_down_pen (false);
  SetServosToPointXY(3,81);up_down_pen (true);delay(2000);up_down_pen (false);
  SetServosToPointXY(9,102);up_down_pen (true);delay(2000);up_down_pen (false);
  SetServosToPointXY(10,88);up_down_pen (true);delay(2000);up_down_pen (false);
   SetServosToPointXY(-7,102);up_down_pen (true);delay(2000);up_down_pen (false);
  SetServosToPointXY(-11,104);up_down_pen (true);delay(2000);up_down_pen (false);
  SetServosToPointXY(-1,98);up_down_pen (true);delay(2000);up_down_pen (false);

  SetServosToPointXY(-23,85);DrawVector(25,215);DrawVector(45,0);DrawVector(25,45);DrawVector(8,180);up_down_pen (false);//последний штрих-контур 
   }
   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   void RisunokCvetok ()
   {
for(byte i=0;i<12;i++)//цветок
{
  SetServosToPointXY(5,110); DrawVector(10,i*30);up_down_pen(false);
}
  SetServosToPointXY(5,110);DrawVector(20,248);DrawVector(20,270);up_down_pen(false);//стебель,лист,горшок
  SetServosToPointXY(-4,91);DrawVector(15,135);DrawVector(13,215);DrawVector(11,20);DrawVector(15,320);up_down_pen(false);
  SetServosToPointXY(-13,73);DrawVector(20,0);DrawVector(10,225);DrawVector(7,180);DrawVector(10,135);up_down_pen(false);
  SetServosToPointXY(-8,57);Kvad(10,0);up_down_pen(false);
   }
   //////////////////////////////////////////////////////////////////////////////////////////////////////////////


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 28 июл 2018, 12:43 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Scorpio писал(а):
Та нармальна всёёёё!

Так я в хорошем смысле, молодец, растет. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 28 июл 2018, 17:16 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2683
Откуда: Где-то в Латинской Америке
А для меня фраза:
dimamichev писал(а):
просто подключить к 0 и 1

так и осталась загадкой :pardon:
Я тут, кстати, придумал, как надпись, сделанную любым шрифтом винды, преобразовать в массив отрезков для нашего графопостроителя. На эмуляторе работает нормально:
Вложение:
Proba.jpg
Proba.jpg [ 128.7 КиБ | Просмотров: 1714 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 28 июл 2018, 17:45 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
при запуске на другой винде или при изменении каких настроек в этой, в зависимости от того, как отрисовку сделал, выглядеть может и по другому. для винформс есть настройки на подобии
Код:
Graphics.TextRenderingHint = TextRenderingHint.AntiAlias

погугли если хочешь, есть описания на подобии https://theartofdev.com/2014/04/21/text-rendering-methods-comparison-or-gdi-vs-gdi-revised/. и потести немного, настраивая в винде увеличение шрифта, тему оформления,...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 28 июл 2018, 18:10 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2683
Откуда: Где-то в Латинской Америке
Отрисовка виндой тут не причем в данном случае. Эмулятор отсылает ардуине координаты следующей точки и опустить-поднять перо. Ардуина возвращает эмулятору ширину импульса для первой и второй сервы. Эмулятор вычисляет соответствующие углы поворота серв, рисует их положение и отрезок между предыдущей точкой и текущей. Т.е. эмулятор точно повторяет действия физического полярного графопостроителя, а не просто выводит текст на экран функциями винды. Разве что без учета несовершенной механики.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 28 июл 2018, 20:00 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
0 или 1 имелось ввиду подсоединение к Rx,Tx без "софтсериал".
Проба очень красива-хрен реальный манипулятор нарисует, хотя надо попробовать, нарисую картинку-цифру большого размера.

Добавлено спустя 53 минуты 32 секунды:
Переделал пульт, пока просто фраза-действие, попробовать пока не могу, сыну телефон нужен.Дмитрий, в исходнике-пульте была отдельно строка-картинка "вызов ВТ.Отключиться". Она нужна? А то исчезла при переделке.


Вложения:
ardunasha.zip [3.9 КиБ]
Скачиваний: 0
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 28 июл 2018, 20:28 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
Scorpio, что бы ардуине отослать данные, их сначала нужно получить и варианта всего два - работать с кривыми (у тебя явно ttf шрифт) и растеризация. при растеризации итоговый пиксельный масив будет отличаться от алгоритма, его настроек и палитры поверхности, на которой рисуешь (ргб, ргба, ч/б или ещё какой). будут грабли и как повлияют или не будет проблем, это зависит от твоего кода. хочешь, изучай тему глубже и ищи где косяки повыползать могут. не хочешь, не возись и когда/если столкнёшся с некоректной работой, тогда уже что-то и решать (как один из вариантов - это в свойствах заглянуть в настройки совместимости и настроить dpi).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 29 июл 2018, 00:52 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
В итоге заработало, не знаю насколько стабильно долго, прогнал 3 рисунка. Ограничился пока словами одиночными домик, цветок, кубик - в ответ говорит рисую домик и т.д. (и конечно рисует). Спотыкалки такие были: слово рисуй понимает как угодно - нарисуй, рисую, рисовать. На проверку совпадения надо писать слово с маленькой буквы и без пробела (лишнее движение и нет совпадения-равенства). Кодировку в ВТ пришлось выставить ASCII.
Пора заняться лицом-экраном. Учиться вставлять картинки. С внешним видом экрана тоже пока не ясно, в инвенторе кнопка и надпись в одном месте, в приложении в другом.

Добавлено спустя 4 минуты 16 секунд:
Вот экран, в приложении кнопка левее, надпись сразу под ней. Наверное зелёный цвет кнопки надо заменить на белый, чтоб личико не затенять.


Вложения:
7.jpg
7.jpg [ 140.64 КиБ | Просмотров: 1635 ]
6.jpg
6.jpg [ 117.72 КиБ | Просмотров: 1643 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 29 июл 2018, 05:10 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2683
Откуда: Где-то в Латинской Америке
Вполне приличные достижения!
Советы:
- Не использовать русскоязычный интерфейс. В будущем надо будет осваивать Java и Android Studio, названия и смысл многих операторов будут уже знакомы.
- Использовать списки, с загрузкой из файла для словарей и команд. Придумай сам, как сделать - не буду подсказывать.
- Чтобы кнопки на телефоне появлялись там, где ожидаешь - надо ставить их на Layout
- Символ конца строки лучше добавить один раз в функции SendBT:
Вложение:
BTsend.jpg
BTsend.jpg [ 19.48 КиБ | Просмотров: 1610 ]

- В разновидностях оператора if имеется else if. В твоем случае он правильнее, чем голые ифы:
Вложение:
if.jpg
if.jpg [ 23.88 КиБ | Просмотров: 1611 ]

Распознавание русской речи в телефоне лучше загрузить online. В меню андроид есть такая опция.
Если одно и тоже слово распознается по разному, то на все возможные варианты надо назначить одну и ту же команду.


dimamichev писал(а):
, в исходнике-пульте была отдельно строка-картинка "вызов ВТ.Отключиться". Она нужна? А то исчезла при переделке.

Вложение:
BT.jpg
BT.jpg [ 22.44 КиБ | Просмотров: 1612 ]

Можно и без нее. Наверно и сам отключится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы новичка.
СообщениеДобавлено: 29 июл 2018, 08:31 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
Попробовал с картинкой,вставляется, но важной функции в меню по замене одной картинки на другую не нахожу. Что я не понимаю?

Добавлено спустя 2 минуты 37 секунд:
Кстати и условие в "другом подменю" - "иначе,если" тоже не вижу.
Функцию переделал.


Вложения:
7.jpg
7.jpg [ 198.74 КиБ | Просмотров: 1603 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 1911 ]  На страницу Пред.  1 ... 75, 76, 77, 78, 79, 80, 81 ... 128  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO