Сравнение строки из Serialport
-
- Лейтенант
- Сообщения: 450
- Зарегистрирован: 26 фев 2018, 21:27
- Откуда: Haifa
- Имя: Alex
- Благодарил (а): 2 раза
- Поблагодарили: 5 раз
Сравнение строки из Serialport
Кто знает,как сравнить данные (строка),получаемые в SoftwareSerial(bt) с заданным значением?
[spoiler]
#include <SoftwareSerial.h>
SoftwareSerial bt(10, 11); // RX, TX
const int LED =9;
void setup() {
Serial.begin(9600);
bt.begin(9600);
pinMode(LED, OUTPUT);
}
void loop() {
bt.println("AT+RNAME?BBB"); //посылаю команду в Serial port
delay(2550);
while(bt.available()>0){ //жду когда получу ответ
a=(bt.read()); //запоминаю ответ в переменной a,
Serial.print(a );}n //вывожу в монитор порта полученное значение,
// оно имеет вид
// +RNAME:LeMax
// OK
if (a=="+RNAME:LeMax") {
digitalWrite(LED, HIGH);
}
else
digitalWrite(LED, LOW);
}
[/spoiler]
Сравнию и ничего не получаю,понимаю что в ответе кроме +RNAME:LeMax есть еще ОК и какие то служебные символы
Как их записать в условие
if (a=="?")
Спасибо за ответ.
[spoiler]
#include <SoftwareSerial.h>
SoftwareSerial bt(10, 11); // RX, TX
const int LED =9;
void setup() {
Serial.begin(9600);
bt.begin(9600);
pinMode(LED, OUTPUT);
}
void loop() {
bt.println("AT+RNAME?BBB"); //посылаю команду в Serial port
delay(2550);
while(bt.available()>0){ //жду когда получу ответ
a=(bt.read()); //запоминаю ответ в переменной a,
Serial.print(a );}n //вывожу в монитор порта полученное значение,
// оно имеет вид
// +RNAME:LeMax
// OK
if (a=="+RNAME:LeMax") {
digitalWrite(LED, HIGH);
}
else
digitalWrite(LED, LOW);
}
[/spoiler]
Сравнию и ничего не получаю,понимаю что в ответе кроме +RNAME:LeMax есть еще ОК и какие то служебные символы
Как их записать в условие
if (a=="?")
Спасибо за ответ.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Сравнение строки из Serialport
Читать тут
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Сравнение строки из Serialport
почему char а не string ?
if ((a.indexOf(String("+RNAME:LeMax ")))>-1) { /////;}
-
- Лейтенант
- Сообщения: 450
- Зарегистрирован: 26 фев 2018, 21:27
- Откуда: Haifa
- Имя: Alex
- Благодарил (а): 2 раза
- Поблагодарили: 5 раз
Сравнение строки из Serialport
когда обьявляю ее как
string
то при компиляции в строке
String a=(bt.read());компилятор пишет
exit status 1
conversion from 'int' to 'String' is ambiguous
string
то при компиляции в строке
String a=(bt.read());компилятор пишет
exit status 1
conversion from 'int' to 'String' is ambiguous
-
- Лейтенант
- Сообщения: 450
- Зарегистрирован: 26 фев 2018, 21:27
- Откуда: Haifa
- Имя: Alex
- Благодарил (а): 2 раза
- Поблагодарили: 5 раз
Сравнение строки из Serialport
может я неправильно обьявляю переменную а?
как это сделать правильно?
Отправлено спустя 6 минут 1 секунду:
я так понял что
a=bt(read());
посылает ответ в виде int,
может есть возможность преобразовать int в String?
как это сделать правильно?
Отправлено спустя 6 минут 1 секунду:
я так понял что
a=bt(read());
посылает ответ в виде int,
может есть возможность преобразовать int в String?
-
- Лейтенант
- Сообщения: 450
- Зарегистрирован: 26 фев 2018, 21:27
- Откуда: Haifa
- Имя: Alex
- Благодарил (а): 2 раза
- Поблагодарили: 5 раз
Сравнение строки из Serialport
да в поиске полно результатов,только нифига не получается,спасибо за ответ .
Отправлено спустя 6 минут 22 секунды:
int a="";
while(bt.available()>0){
a=(bt.read());
Serial.print(a );}
String b;
b = String(a);
if ((b.indexOf(String("+RNAME:LeMax "))))>-1){.....}
ругается :
error: expected primary-expression before '>' token
if ((b.indexOf(String("+RNAME:LeMax "))))>-1){
Отправлено спустя 6 минут 22 секунды:
int a="";
while(bt.available()>0){
a=(bt.read());
Serial.print(a );}
String b;
b = String(a);
if ((b.indexOf(String("+RNAME:LeMax "))))>-1){.....}
ругается :
error: expected primary-expression before '>' token
if ((b.indexOf(String("+RNAME:LeMax "))))>-1){
Сравнение строки из Serialport
это что за чудо?
надо попробовать присвоить значение этой строки в промежуточную переменную а потом засовывать в if
что за точки в скобках? там должен быть какой то код и точка с запятой ;
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Сравнение строки из Serialport
Главное - читать и понять, что приходит ТУТ
Понять, что нет string сразу!!!
Понять, что нет string сразу!!!
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Сравнение строки из Serialport
посмотрите что возвращает функция (bt.read());
или библиотеку что ли покажите нам
или библиотеку что ли покажите нам
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Сравнение строки из Serialport
Взять блок из программы, принять строку, присвоить переменной, сравнить(для понимания) - посмотреть получившийся код. Не???
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Лейтенант
- Сообщения: 450
- Зарегистрирован: 26 фев 2018, 21:27
- Откуда: Haifa
- Имя: Alex
- Благодарил (а): 2 раза
- Поблагодарили: 5 раз
Сравнение строки из Serialport
bt(read)
это
SoftwareSerial bt(10, 11); // RX, TX
Посылаю туда АТ команду и получаю ответ
while(bt.available()>0){
a=(bt.read());
этот ответ в мониторе порта выглядит так
+RNAME:LeMax
OK
Мне нужно сравнить полученный ответ с заданным LeMax.
Уже запутался каким типом обьявить переменную а и заданное значение LeMax
и как их потом сравнивать
это
SoftwareSerial bt(10, 11); // RX, TX
Посылаю туда АТ команду и получаю ответ
while(bt.available()>0){
a=(bt.read());
этот ответ в мониторе порта выглядит так
+RNAME:LeMax
OK
Мне нужно сравнить полученный ответ с заданным LeMax.
Уже запутался каким типом обьявить переменную а и заданное значение LeMax
и как их потом сравнивать
Сравнение строки из Serialport
сек
Отправлено спустя 19 минут 32 секунды:
вот что значит заниматься несколькими делами. это bt сбило с толку, подумал что это библиотека какая то...
while (bt.available() > 0) {
int inChar = bt.read();
inString += (char)inChar;
или
String Var=""; //переменная для приема строки
while (bt.available() > 0) {
Var = Var + (char)(bt.read());}
Отправлено спустя 19 минут 32 секунды:
вот что значит заниматься несколькими делами. это bt сбило с толку, подумал что это библиотека какая то...
while (bt.available() > 0) {
int inChar = bt.read();
inString += (char)inChar;
или
String Var=""; //переменная для приема строки
while (bt.available() > 0) {
Var = Var + (char)(bt.read());}
-
- Лейтенант
- Сообщения: 450
- Зарегистрирован: 26 фев 2018, 21:27
- Откуда: Haifa
- Имя: Alex
- Благодарил (а): 2 раза
- Поблагодарили: 5 раз
Сравнение строки из Serialport
Спасибо pan,
а каким типом мне определить переменные и пароль,и что потом подставлять в if(?)/......
а каким типом мне определить переменные и пароль,и что потом подставлять в if(?)/......
Сравнение строки из Serialport
откуда ж мне знать. вопрос был про то как сравнить строки.
а что должно происходить при совпадении это уже вопрос к вам.
судя по первому посту зажечь светодиод
а что должно происходить при совпадении это уже вопрос к вам.
судя по первому посту зажечь светодиод
-
- Лейтенант
- Сообщения: 450
- Зарегистрирован: 26 фев 2018, 21:27
- Откуда: Haifa
- Имя: Alex
- Благодарил (а): 2 раза
- Поблагодарили: 5 раз
Сравнение строки из Serialport
хочу пока печать только в монитор порта,значит это будет так?
while (bt.available() > 0) {
int inChar = Serial.read();
if(inString += (char)inChar) {
Serial.print( "READY" );
}
else
Serial.print( "NOT READY" );
}
и как определить переменные,?в
void setup()
int inChar;
String inString="LeMax";
правильно?
while (bt.available() > 0) {
int inChar = Serial.read();
if(inString += (char)inChar) {
Serial.print( "READY" );
}
else
Serial.print( "NOT READY" );
}
и как определить переменные,?в
void setup()
int inChar;
String inString="LeMax";
правильно?
Сравнение строки из Serialport
вообще переменные объявлять выше setup
int inChar;
String inString="";
int contain; //на всякий случай через неё
зачем inString += (char)inChar засовывать в if
это идет сборка строки из принятых символов
while (bt.available() > 0) {
int inChar = bt.read(); // bt это ваш программный порт для блютуса , а не serial
inString += (char)inChar; }
contain = (inString.indexOf(String("+RNAME:LeMax "))
if (contain != -1) {
Serial.print( "READY" );}
else{
Serial.print( "NOT READY" ); }
как то так примерно.
int inChar;
String inString="";
int contain; //на всякий случай через неё
зачем inString += (char)inChar засовывать в if
это идет сборка строки из принятых символов
while (bt.available() > 0) {
int inChar = bt.read(); // bt это ваш программный порт для блютуса , а не serial
inString += (char)inChar; }
contain = (inString.indexOf(String("+RNAME:LeMax "))
if (contain != -1) {
Serial.print( "READY" );}
else{
Serial.print( "NOT READY" ); }
как то так примерно.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость