아두이노 SD카드에 DaraBase구축
간단한 데이타베이스를 구축 할 것이다.
레코드는 다음과 같이 구성 (구조체)
struct Record // 레코드구조체
{
String barCode;
String productName;
};
필드명 | 변수 | 내용 |
barCode | String | 바코드를 저장 |
productName | String | 제품명을 저장 |
간단이 레코드 추가 검색 기능만 일단 구현하고
삭제기능은 삭제한 곳의 빈공간 처리가 필요하여 추후에 추가 할 것이다..
SD카드 라이브러리에서 String을 파일에 쓰기에는 println함수가 있지만 읽기에는 없다.
그래서 readLine이라는 함수를 따로 만들었다.
String readLine()
{
char buff[50];
int idx=0;
while(true)
{
byte b,b2;
b=dbFile.read();
if( b == 0x0d )
{
b2= dbFile.read();
if( b2 == 0x0a )
{
buff[idx]= 0;
return( String( buff ) );
}
buff[idx++] = b;
buff[idx++] = b2;
}
else buff[idx++] =b;
}
}
void addRecord( String _barCode, String _productName )
{
dbFile = SD.open(dbFileName,FILE_WRITE);
dbFile.println( _barCode );
dbFile.println( _productName );
dbFile.close();
}
Record findRecord( String _barCode)
{
Record rec;
dbFile = SD.open(dbFileName);
while( dbFile.available() )
{
if( _barCode == readLine() )
{
rec.barCode=_barCode;
rec.productName=readLine();
dbFile.close();
return( rec );
}
readLine();
}
dbFile.close();
rec.barCode="-1";
return( rec);
} // func