HC 06 правило для чтения команд

maxvalin
Offline
Зарегистрирован: 22.02.2016

Уважаемые специ, подскажите пожалуйста правило для написания команд.

К примеру если я отправляю char  'a'  для включения светодиода

и char 'b' для отключения - все идет нормально. Но если отправлю слово в котором есть и a и b  то начинается ступор естественно.

Вопрос : как правильно прописать команду чтоб выполнялось при условии когда именно этот символ  или только то слово. Потому что сейчас выполняется команда при любом написании символов если среди них попадается a или b .

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Код секретный?

maxvalin
Offline
Зарегистрирован: 22.02.2016

да нет конечно))

чето не подумал об этом.

int char;
int LED = 13;
void setup()
{
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  digitalWrite(LED, HIGH);
}
void loop()
{
  if (Serial.available())
  {
    val = Serial.read();
    
    if (val == 'a')
    {
      digitalWrite(LED, HIGH);
    }
   
    if ( val == 'b')
    {
      digitalWrite(LED, LOW);
    }
  }
}

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

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

maxvalin
Offline
Зарегистрирован: 22.02.2016

команды отправляю терминалом с андроида.

maxvalin
Offline
Зарегистрирован: 22.02.2016

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

maxvalin пишет:

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

ОТветьте себе на вопрос: как Вы намерены отличать "именно нужный символ" от "нужного символа, котрый в наборе"? Вот просто - чем эти ситуации отличаются? Как только Вы ответите - больше у Вас не быдет вопросов.

Например, нужный исмвол 'a'. Если юзер вёл строку "1а1" - это неправильно?

А как правильно? ЧТобы перед a шёл перевод строки и после тоже? Или ещё как?

Т.е. сформулируйте чётко критерий и Вам всё станет понятно.

maxvalin
Offline
Зарегистрирован: 22.02.2016

Вот ОНО! -перевод строки!
Толчек верный!
незнал этого. Вот почему начал тему. Вообще углубляясь в среду ардуино помалу вылавливаешь ньюансы. Не первый раз бьюсь о грабли. Рассчитывал что команды будут исполнятся только от нужных символов, но увы. Есть "эффект просеивания" как для себя занотировал.
Смею предположить что количество самих команд будет ограниченно. (естественно речь идёт о 1000 вариантах)
Не говорите мне сразу -"А тебе что мало?!" :)
нет, мне достаточно и 6-10. Вопрос следующий : как разделить команды в которых встречается один и тот же символ- но выполняется совсем другое. Думаю все используют неповторябщие символы.

maxvalin
Offline
Зарегистрирован: 22.02.2016

Стоп! подробнее пожалуйста: "чтоб считало после определённого разделителя"
Как это в коде? предполагаю что будет читать символ по порядковому номеру. Например в слове будет читать только третий символ и если он нуджный команда выполняется? кусочек кода пожалуйста напишите к примеру.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

maxvalin,

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

Вот Вам не нравится, что в слове kaka две буквы a и типа у Вас два раза всё сработет.

Значит Вы (именно Вы - никто за Вас этого не сделает) должны определить чёткие правила какую букву следует считать командой, а какую - нет. Ч1ткие понятные правила! СЕйчас же у Вас букву a в слове ah нужно считать командой, а такую же букву в слове kaka - не нужно. Это не правила - это неосознанные хотелки. Сформулируйте чёткие и однозначные правила.

Пока Вы таких правил не сформулировали, Ваша просьба о примере кода ни о чём - какого кода Вам нужен пример? По каким правилам он должен выбирать команды?

maxvalin
Offline
Зарегистрирован: 22.02.2016

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

maxvalin
Offline
Зарегистрирован: 22.02.2016

по командам нашел ЭЭЭht tp://pashkevich.me/article/6.htmlЭЭЭ на легкодоступном языке.