сравнение String на int
- Войдите на сайт для отправки комментариев
Пнд, 23/07/2018 - 23:06
доброго времени суток...
как решить проблему...
сериал поступает данные форматe X:100:100
делаю pasing записываю в counter i sped
counter=currStr.substring(2,4);
sped=currStr.substring(5,8);
из кнопки поступает импульсы в
if(digitalRead(10) == LOW && FS_0 == 0 && FS_2 == 4) FS_0 = 1;
if (FS_0 == 1)
{
Count1++;
if (Count1 <0){
Count1=0;
нужно сравнить counter и Count 1 но не работает :-(
if (FS_1 == 1 && counter == Count1 ) FS_1 = 2;
if (FS_1 == 2)
kak можно сравнить String и int...
заранее благодарен...
вот скетч целиком
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11, 12);
///String inString = ""; // string to hold input
uint8_t FS_0 = 0;
uint8_t FS_1 = 0;
uint8_t FS_2 = 0;
String currStr = "";
String counter = "";
String sped = "";
boolean isStringMessage = false;
int Count1 = 0;
String x ="";
byte i;
byte j;
void setup()
{
mySerial.begin(9600);
Serial.begin(9600);
Serial.println("MACHINE READY");
pinMode (10, INPUT);
digitalWrite(10, HIGH);
pinMode (10, INPUT_PULLUP);
}
void loop()
{
encoder();
if (!znSerial.available())
return;
char currSymb = mySerial.read();
if ('\r' == currSymb) {
if (isStringMessage) {
if (!currStr.compareTo("REV"))
{
Serial.println("reverce-Ok");
FS_1 = 1;
FS_2 = 4;
}
else if (!currStr.compareTo("FOR"))
{
Serial.println("forward-Ok");
FS_1 = 1;
FS_2 = 4;
}
else if (!currStr.compareTo("STO"))
{
Serial.println("Stop-Ok");
FS_1 = 0;
}
isStringMessage = false;
}
else
{
if (currStr.startsWith("X"))
{
Serial.println(currStr);
counter=currStr.substring(2,4); ///impulsebi brunebistvis
sped=currStr.substring(5,8);/// sichqaris registris gamoyofa
Serial.println(sped);
Serial.println(counter);
isStringMessage = true;
}
}
currStr = "";
} else if ('\n' != currSymb) {
currStr += String(currSymb);
}
}
void encoder()
{
if(digitalRead(10) == LOW && FS_0 == 0 && FS_2 == 4) FS_0 = 1;
if (FS_0 == 1)
{
Count1++;
if (Count1 <0){
Count1=0;
}
Serial.println(Count1);
Serial.println(counter);
FS_0 = 2;
}
if(digitalRead(10) == HIGH )
{
FS_0 = 0;
}
/// Value = counter;
if (FS_1 == 1 && counter == Count1 ) FS_1 = 2;
if (FS_1 == 2)
{
Serial.println("ENGINE STOP");
Count1 = 0;
///counter ="";
FS_2 = 5;
FS_1 = 0;
}
}
Кодокашу не читал, смотрите на https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/toint/
String и int сравнить нельзя. Придумайте какой-нибудь другой способ решить Вашу задачу, не используя подобные сравнения.
Стринг больше. Потому что длинней почти всегда.
Зато длина строки может быть меньше 2. Поэтому не всегда.
Зато длина строки может быть меньше 2. Поэтому не всегда.
То менее 1%. Принебрегаем.
как решить проблему...
Для начала правильно вставить код, ибо ...
Кодокашу не читал,
И большинство остальных также не читали.
В 5 фрагменте кода 23 строка содержит ошибку!
Отказаться от типа String и не пользовать какашки.
Кодокашу не пользовать.
Строку преобразовать в чисто или число в строку, а затем сравнивать.
int Value = atoi(counter); // преобразование строки в число типа int