메소드 | |
StreamReader( 텍스트 파일 이름) | SS핀은 10으로 자동 설정 Uno 자동 파일 open |
StreamReader( 텍스트 파일 이름 , SS핀 번호) | Mega는 53 Uno는 10 자동 파일 open |
ReadLine() | 한줄씩 파일을 읽어 온다 |
ReadLine( n ) | n번쩨 줄로 이동하여 읽어 온다. ( 처음 줄 번호는 0임) |
open() | close()후 다시 파일 사용시 첫라인부터 다시 시작 |
close() | 파일을 닫음 |
endf() | 파일의 끝이면 true 아니면 false |
StreamReader.H | |
#ifndef _StreamReader_
#define _StreamReader_
#include <SPI.h>
#include <SD.h>
class StreamReader
{
private : File _f;
String _fname="";
public : StreamReader( String fname, int pin)
{
SD.begin(pin);
_fname = fname ;
_f=SD.open(_fname);
}
StreamReader( String fname )
{
SD.begin(10);
_fname = fname ;
_f=SD.open(_fname);
}
String readLine();
String readLine( int idx )
{
_f.seek(0);
for( int i=0; i< idx;i++) readLine();
return ( readLine());
}
void open() { _f=SD.open(_fname); }
bool notEnd(){ return( _f.available() ) ; }
void close() { _f.close(); }
};
String StreamReader::readLine( )
{
char buff[90];
int idx=0;
while(StreamReader::_f.available())
{
byte b,b2;
b=StreamReader::_f.read();
if( b == 0x0d )
{
b2= StreamReader:: _f.read();
if( b2 == 0x0a )
{
buff[idx]= 0;
return( String( buff ) );
}
buff[idx++] = b;
buff[idx++] = b2;
}
else buff[idx++] =b;
}
return("");
}
#endif
|
아두이노 소스를 보면 코드안에 문자열이 "myfont.utf" ,"my.txt"뿐이다.
그만큼 메모리 절약, 코드 안의 문자열은 메모리 많이 소모 ( 한글 1개는 3byte소모)한다.
프로그램이 메모리 부족으로 업로드가 안되는 경우와 실행중 다운시 해결 해 주는 Class
아두이노 소스 | |
#define _TFTLCD_ myLcd // TFT LCD 이름 정의/ #include "D:\\myHeader\\StreamReader.H" #include "D:\\myHeader\\Hangul_SD_Selected.H" HanGul_TFT ht("myfont.utf"); // 아두이노 한글 폰트 Code 자동생성 프로그램 ver 2.5로 추출한 폰트 파일 이름 넘겨준다. void setup() { int y=0; StreamReader txt("my.txt"); // 사용할 텍스트 파일 이름을 넘겨 준다. myLcd.InitLCD(); myLcd.setRotation(3); //3 가로 480x320 //2 세로 320x480 myLcd.clrScr(); while( ! txt.endf()) // 파일의 끝이 아니면 계속 { ht.print( txt.readLine() ,0,y,1,2); // 1개의 라인을 읽어와 String으로 반환 한다. y=y+32; if(y>300 ){ y=0; myLcd.clrScr(); } } ht.print( txt.readLine( 30 ) ,0,300 ); // 30번 라인을 읽어 온다 ( 처음줄은 0이므로 31번째 줄임 ) txt.close(); // 파일을 닫는다. ht.end(); } void loop() { } |
'프로젝트 > TFT LCD 한글 출력 (아두이노)' 카테고리의 다른 글
Hangul_SD.H 를 이용한 한글 출력 ( 폰트파일 필요함 ) (0) | 2022.08.21 |
---|---|
Hangul_SD_Selected.H 를 이용한 한글 출력 (0) | 2022.08.21 |
Hangul_Directed.H 를 이용한 한글 출력 (0) | 2022.08.21 |
필요한 폰트를 메모리에 두지 말고 파일에 담아 사용하자. (0) | 2022.08.20 |
F연산자와 readLine 함수 사용하여 메모리 확보하기 (0) | 2022.08.20 |