help with serial text recognition
hey everybody!
i'm starting experiment serial inputs arduino, , right project i'm trying enter string in serial monitor , have arduino recognize it. can array (fairly efficiently think) , shove string (successfully?), when compare assembled string "known" string not return true. i've tried trimming off whitespace, , number returned string.length matches desired "known" string. doing wrong? thanks!
i'm starting experiment serial inputs arduino, , right project i'm trying enter string in serial monitor , have arduino recognize it. can array (fairly efficiently think) , shove string (successfully?), when compare assembled string "known" string not return true. i've tried trimming off whitespace, , number returned string.length matches desired "known" string. doing wrong? thanks!
code: [select]
char serin[20]; //var hold bytes in read serialbuffer
string string1 = "";
string name = "paul";
string stringtrimmed = "";
void setup() {
serial.begin(19200);
}
void loop () {
for(int i=0; <20; i++){
serin[i] = ' ';
}
string1 = "";
//int choice1 = 0;
//int choice2 = 0;
//int choice3 = 0;
//int choice4 = 0;
boolean input1 = false;
//boolean input2 = false;
//boolean input3 = false;
//boolean input4 = false;
serial.println("please enter user name..");
serial.flush();
while (input1 ==false){
int = 0;
while(serial.available()) {
serin[i] = serial.read();
serin[i+1] = '\0';
i++;
delay(2);
}
if(serin[0] != ' '){
for(int =0; <20; i++){
if(serin[i] != ' ' || serin[i+1] != ' '){
serial.println(serin[i]);
delay(100);
}
}
for(int =0; i<20; i++){
if(serin[i] != ' ' || serin[i+1] != ' '){
string1 = string(string1 + serin[i]);
}
}
string stringtrimmed = string1.trim();
serial.println("");
serial.print(stringtrimmed);
serial.println("<-------- end of string");
//serial.println(stringtrimmed.length());
//serial.println(name.length());
input1 = true;
}
}
if(stringtrimmed.equalsignorecase(name)){
serial.println("");
serial.println("welcome paul!...access granted");
}
delay(10000);
}
you have bit learn strings. string (lower case s) null terminated array of characters.
how many nulls needed terminate string? hint: isn't 20.
serial data transmission relatively slow. may through loop before sending application has finished sending data. need add sort of end-of-packet marker, , keep reading (or waiting) until end-of-packet marker arrives.
what code supposed doing?
serial.println(serin); print entire array, first null.
what supposed do?
string1 = serin; sufficient.
add serial.print statements, print name (bracketed) , stringtrimmed (bracketed) before if test.
nothing jumps out cause of problem, prints narrow down issue.
code: [select]
for(int i=0; <20; i++){
serin[i] = ' ';
}how many nulls needed terminate string? hint: isn't 20.
code: [select]
while(serial.available()) {
serin[i] = serial.read();
serin[i+1] = '\0';
i++;
delay(2);
}serial data transmission relatively slow. may through loop before sending application has finished sending data. need add sort of end-of-packet marker, , keep reading (or waiting) until end-of-packet marker arrives.
what code supposed doing?
code: [select]
for(int =0; <20; i++){
if(serin[i] != ' ' || serin[i+1] != ' '){
serial.println(serin[i]);
delay(100);
}
}serial.println(serin); print entire array, first null.
what supposed do?
code: [select]
for(int =0; i<20; i++){
if(serin[i] != ' ' || serin[i+1] != ' '){
string1 = string(string1 + serin[i]);
}
}string1 = serin; sufficient.
add serial.print statements, print name (bracketed) , stringtrimmed (bracketed) before if test.
code: [select]
serial.print("name: >");
serial.print(name);
serial.print("<\n");
serial.print("stringtrimmed: >");
serial.print(stringtrimmed);
serial.print("<\n");nothing jumps out cause of problem, prints narrow down issue.
Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > help with serial text recognition
arduino
Comments
Post a Comment