본문 바로가기
아두이노/보드

아두이노 통신 UNO TO UNO -#3

by 오징어땅콩2 2021. 11. 16.
반응형

우노A의 소스코드는 2개의 함수로 구성되어 있다.

1. 시리얼모니터를 이용하여 컴퓨터로 부터 입력 받는 함수

2. 소프트웨어 시리얼을 통하여 우노B로 전송하는 함수 

 

2번 함수는 너무 단순해서 설명할 것도 없다.

1번 함수만 공부하면 될것이다.

 

시리얼 모니터를 통해서 엔터를 입력 할 때까지 무한 대기 상태로 들어간다.

처음 나오는 while 문장으로 이루어 진다. 

시리얼 데이터가 있다면 한 바이트씩 읽는다.

읽은 데이터를 버퍼에 저장하지만 20글자를 초과하면 더 이상 입력받지 않고 버린다.

데이터는 포인터를 이용해서 저장한다.

입력된 데이터가 있고 정상적인 엔터가 입력 되었다면 버프의 데이터를 구조체로 복사 한다.

 

딱히 어려운 문장은 없을수도 있지만, 포인터에 익숙하지 않다면 어려워 보일 수도 있다.

그래도 코딩을 자주하다보면 아주 많이 나오는 코딩이기 떄문에 익혀 두는게 좋을것이다.

 

void read_serial(Info& _info)
{
  char c = '\0';
  char *p;
  char buf[22];

  p = buf;
  memset(&_info, 0x00, sizeof(Info));
  while(1)
  {
      if(Serial.available()) 
      {
        c = Serial.read();
        if (c == '\r' || c == '\n') break;
        if ((p - buf) < 20)
        {
          //*p = c; p++; 
          *(p++) = c;
          *p = '\0';
        }
      }
  }
  
  if ((p - buf) > 0  && ( c == '\r' || c == '\n') )
  {
    //Serial.println(p - buf);
    _info.ver = version;
    memcpy(_info.lcd_1, buf, sizeof(char)*21);
  }

  return ;
}

'아두이노 > 보드' 카테고리의 다른 글

아두이노 통신 UNO TO UNO -#5  (0) 2021.11.16
아두이노 통신 UNO TO UNO -#4  (0) 2021.11.16
아두이노 통신 UNO TO UNO -#2  (0) 2021.11.16
아두이노 통신 UNO TO UNO -#1  (0) 2021.11.16
Make IT! Arduino 개봉기  (0) 2020.06.24

댓글