String을 받아서 모니터에 출력하는 방법 질문있습니다.
안녕하세요.
아두이노 공부를 공부하고있는 새내기 입니다.
혼자서 간단한 프로젝트를 하고 있는데 쉽지가 않아서 글을 올렸습니다.
아두이노에서 다른 부분은 오류하나없이 말끔하게 잘 진행이 되지만, 아래의 Loop 부분에서 제가 원하는 동작과
똑같은 진행이 되지 않기에 질문을 올립니다.
아래의 루프문을 돌리게 된다면, uint8_tch가 읽어들이는 1바이트의 내용을 계속적으로 mystring에 추가시킴으로써
그 값이, mystring과 encrypt1과 같다면 도어락이 동작하도록 하게 만들려고 하는데 동작이 잘 안됩니다 ㅜ
뭔가 코드가 잘못된것 같아서 시리얼 모니터에, Serial.print(mystring)을 아래의 Loop 부분의 strcmp를 비교하기전에
덩그러니 써보았지만 따로 시리얼모니터에 추가되는 부분이 없기에 아무래도 처음에 mystring에 문자열이
추가가 잘 되지 않는것 같은데 도움이 필요합니다.
void loop(void)
{
Adafruit_CC3000_ClientRef client = testServer.available(); // 서버 대기 상태
String mystring;
int i=0;
if (client) { // client 접속이 있으면
if (client.available() > 0) { // 읽어올 데이터가 있는지 확인
uint8_t ch = client.read(); // byte로 데이터 읽음
mystring += ch;
mystring[i] = 0;
while(ch != '\n')
{
uint8_t ch = client.read();
mystring[i] = ch;
i++;
}
char encrypt1[30];
strcpy(encrypt1,"unfx+ym0mrqaAYyDqMUNlg==");
char encrypt2[30];
strcpy(encrypt2,"bDKukFFIaKRkW8+fex/Vbw==");
char encrypt3[30];
strcpy(encrypt3,"MK8XawI9iLg5S6pKh08IcA==");
if(mystring == encrypt1) {
//
digitalWrite(7, HIGH);
delay(100);
digitalWrite(7, LOW);
delay(100);
digitalWrite(7, HIGH);
delay(100);
digitalWrite(7, LOW);
delay(100);
Serial.println(F("Door Open/Close"));
//
}
if(mystring == encrypt2)
{
digitalWrite(2, HIGH);
delay(100);
digitalWrite(2, LOW);
delay(100);
digitalWrite(2, HIGH);
delay(100);
digitalWrite(2, LOW);
delay(100);
//
Serial.println(F("Door Open/Close"));
}
if(mystring == encrypt3)
{
digitalWrite(8, HIGH);
delay(100);
digitalWrite(8, LOW);
delay(100);
digitalWrite(8, HIGH);
delay(100);
digitalWrite(8 , LOW);
delay(100);
Serial.println(F("Door Open/Close"));
}
}
}
}
https://www.arduino.cc/en
https://www.arduino.cc/en/Reference/StringBrackets 에 따르면 String 의 [] 는 읽어내기만 가능한데요.
소스코드는 code 태그 안에... 안 그러면 읽기도
소스코드는 code 태그 안에... 안 그러면 읽기도 어렵고 답 하기도 어렵고...
세벌 https://sebuls.blogspot.kr/
댓글 달기