не могу остановить Serial.readStringUntil()

rush
rush аватар
Offline
Зарегистрирован: 21.05.2019

int opt;
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
while (Serial.available()) {                  //пока порт активен
  String line = Serial.readStringUntil('$'); //читаюдосимвола
Serial.println(line);                      //выводит строковое
//Serial.stop();  //вот сдесь надо отановиться, так не работает пишет сериал хардваре класс
int intVar;                                  //переменная для преобразования из стринг в инт, для изменения значений заданной температуры открытия и закрытия
//преобразуем
String stringVar = line;
intVar=stringVar.toInt();
opt=intVar;                               //присваиваем
Serial.println(opt);                      // выводим
}}

 

rush
rush аватар
Offline
Зарегистрирован: 21.05.2019

Передаю данные с андройда на wifi модуль, получаю на ардуине через порт

if (Serial.available()){
    char var1 = Serial.read();
    if(var1=='a'){ 
      digitalWrite(R1, LOW);
    }

таким методом передает только команды

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А как это проявляется?

У меня Ваш код работает ожидаемым образом.

rush
rush аватар
Offline
Зарегистрирован: 21.05.2019

andriano пишет:

А как это проявляется?

У меня Ваш код работает ожидаемым образом.

а там строчку разкоментировать надо

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

rush пишет:

а там строчку разкоментировать надо

 

N12? У стандартного Ардуиновского класса Serial нет метода stop.  Но есть Serial.end() 

А вообще зачем, в вашем случае, его останавливать?

rush
rush аватар
Offline
Зарегистрирован: 21.05.2019

А вообще зачем, в вашем случае, его останавливать?

[/quote]

переменная опт становиться =  0 после преобразования, я думаю что он пустую строчку считывает

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

rush, чего Вы хотите?

Код работает так, как Вы его написали. Все используемые в нем конструкции также работают, как положено.

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

Напишите:

1. Чего бы Вы хотели добиться.

2. Как на самом деле работает код.

3. Чем 2 отличается от 1.

rush
rush аватар
Offline
Зарегистрирован: 21.05.2019

вроде пока все ОК ввожу 123$ в порт получаю 123 числовой

int opt;
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
while (Serial.available()) {                  //пока порт активен
  String line = Serial.readStringUntil('$'); //читаюдосимвола
Serial.println(line);                      //выводит строковое
  //вот сдесь надо отановиться, так не работает пишет сериал хардваре класс
int intVar;                                  //переменная для преобразования из стринг в инт, для изменения значений заданной температуры открытия и закрытия
//преобразуем
String stringVar = line;
intVar=stringVar.toInt();
opt=intVar;                               //присваиваем
Serial.println(opt);   
Serial.end();                   // выводим
}}

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

rush пишет:

А вообще зачем, в вашем случае, его останавливать?

переменная опт становиться =  0 после преобразования, я думаю что он пустую строчку считывает

[/quote]

Печатает лишнюю строку с нулем?

В мониторе порта установите в левом ниспадающем меню внизу экрана "Нет конца строки".

rush
rush аватар
Offline
Зарегистрирован: 21.05.2019

Это гениально, не догадался бы!!! а если контроллер с esp2866 будет в порт отправлять нуля тоже не будет?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

rush пишет:

Это гениально, не догадался бы!!! а если контроллер с esp2866 будет в порт отправлять нуля тоже не будет?

Это зависит от того, как Вы напишете.

Подумайте, чем отличается Serial.print() от Serial.println().

rush
rush аватар
Offline
Зарегистрирован: 21.05.2019

ЭТО Я ЗНАЮ новая сторока, и продолжение

b707
Offline
Зарегистрирован: 26.05.2017

rush пишет:

ЭТО Я ЗНАЮ новая сторока, и продолжение

похоже не знаете. Вы в курсе, что в конце строки передаются служебные символы? Что вообще существует такй символ "конец строки"? Или "возврат каретки"?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

rush пишет:

ЭТО Я ЗНАЮ новая сторока, и продолжение

похоже не знаете. Вы в курсе, что в конце строки передаются служебные символы? Что вообще существует такй символ "конец строки"? Или "возврат каретки"?

и они могут быть не только 0D 0A )))

ЗЫ правильно по РУССКИ - "Возврат каретки" и "Перевод строки"

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

ЗЫ правильно по РУССКИ - "Возврат каретки" и "Перевод строки"

насчет "перевода" строки не уверен, в оригинале LN - new line

 

Buenas dias, estos son caracteres escapes:

\r = Retorno de carro (return)

\n = Nueva línea (new line)

 

:)))))))))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707 пишет:

насчет "перевода" строки не уверен, в оригинале LN - new line

неть.  в оригинале LF - line feed.

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

неть.  в оригинале LF - line feed.

Да согласен. То-то я обыскался в гугле на "LN CR" :)))

 

rush
rush аватар
Offline
Зарегистрирован: 21.05.2019

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

 if(var1=='t'){
String line = Serial.readString(); 
Topt=line.toInt();

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