본문 바로가기

프로젝트/TFT LCD 한글 출력 (아두이노)

F연산자와 readLine 함수 사용하여 메모리 확보하기

코드 내부의 글자도 메모리를 잡아 먹는다. 그래서 F연산자플래쉬메모리(코드저장부분)  저장 하지만

그래도 한계가 있다. Uno의 경우는 더 심하다. 코드내에 글자수가 맘아지면 담을 수 있는 폰트도 많이 줄어

버린다. 이경우를 해결하기 위하여 코드안의 문장을 파일로 저장하고 출력 직전에 불러 오는 방식을 사용

하려고 한다.  문제는 문장을 쓰는 SD.prinln()은 있지만 문장을 읽어 오는 함수가 없어 엄청 불편 하다.

그래서  String readLine(    File  inf  ) 함수를 만들었다.

 

메모장 등에서 텍스터 파일을 작성하면  문장 끝에는 16진수 0x0d  0x0a의 두 바이트가 붙어 있다.


String readLine(    File  inf  )   //  읽어올 파일을 변수로 받는다.

{

           char buff[50];      //  한번에 읽어올 버퍼 크기 :  필요에 따라 조절.. 넘 크면 매모리 다 잡아 먹음 

            int idx=0;                //     참고로 한글은 3Byte 
            while(true)
             {
                        byte b,b2;
                         b=inf.read();        

                      if( b == 0x0d )    //      CR(Carriage Return : \r) 

                                   {
                                              b2=  inf.read();          

                                          if( b2 == 0x0a )    //     LF(Line Feed : \n)

                                                  {             
                                                                    buff[idx]= 0;                //   String의  끝을 표시( null ) 
                                                                    return( String( buff ) ); 
                                                    }
                                               buff[idx++] = b;             

                                              buff[idx++] = b2;

                                       }     
                           else buff[idx++] =b;        

               }

}