Enroll working, fixed array sizeof with workaround
This commit is contained in:
parent
9ac2327812
commit
4c18ae050f
14
beerbox.h
14
beerbox.h
@ -3,10 +3,22 @@
|
|||||||
#define DRINK_NAME_MAX_LENGTH 13
|
#define DRINK_NAME_MAX_LENGTH 13
|
||||||
#define FILE_NAME_LEN 8
|
#define FILE_NAME_LEN 8
|
||||||
#define FILE_EXTENSION_LEN 3
|
#define FILE_EXTENSION_LEN 3
|
||||||
#define FILE_EXTENSION "per"
|
#define FILE_EXTENSION ".per"
|
||||||
#define NAME_LEN 10
|
#define NAME_LEN 10
|
||||||
|
|
||||||
|
|
||||||
|
//######### RFID CONSTANTS ##########
|
||||||
|
const int startZeichen = 02; // Chip-Kennung beginnt mit 02
|
||||||
|
const int endeZeichen = 03; // ASCII CR bendet Code
|
||||||
|
const int kennungLaenge = 12; // Laenge Chip-Code 10 ASCII-Zeichen
|
||||||
|
const int gesamtKennungLaenge = 14; // Code-Laenge + Start- und Ende-Byte
|
||||||
|
char code[kennungLaenge + 1]; // fuer den Code und abschliessende Null
|
||||||
|
int bytesGelesen = 0;
|
||||||
|
int zaehlerFehlerCode = 0;
|
||||||
|
String zugang = "000000000000"; // zugangscode zwischenspeicher, Standard
|
||||||
|
//#######################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct{
|
typedef struct{
|
||||||
/*Drink spevifier*/
|
/*Drink spevifier*/
|
||||||
|
78
beerbox.ino
78
beerbox.ino
@ -28,7 +28,8 @@ int currentDrink = 0;
|
|||||||
int lastPersonIndex = -1;
|
int lastPersonIndex = -1;
|
||||||
|
|
||||||
Person* persons;
|
Person* persons;
|
||||||
|
int personCount;
|
||||||
|
String rfID;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -79,7 +80,7 @@ void setup() {
|
|||||||
|
|
||||||
persons = readAllPersons();
|
persons = readAllPersons();
|
||||||
|
|
||||||
lcd.print("BOXready");
|
lcd.print("Drink: _");
|
||||||
lcd.setCursor(0, 1);
|
lcd.setCursor(0, 1);
|
||||||
lcd.print(box->drinks[0].name);
|
lcd.print(box->drinks[0].name);
|
||||||
currentDrink = 0;
|
currentDrink = 0;
|
||||||
@ -108,18 +109,57 @@ void loop() {
|
|||||||
String personName;
|
String personName;
|
||||||
while (incomingByte != ';')
|
while (incomingByte != ';')
|
||||||
{
|
{
|
||||||
personName = String(personName + incomingByte);
|
personName = String(personName + incomingByte);
|
||||||
incomingByte = Serial3.read();
|
incomingByte = Serial3.read();
|
||||||
}
|
}
|
||||||
Serial.println(personName);
|
Serial.println(personName);
|
||||||
lcd.clear();
|
lcd.clear();
|
||||||
lcd.print(personName);
|
lcd.print(personName);
|
||||||
|
Serial.println(maxID);
|
||||||
//lcd.setCursor(0,1);
|
//lcd.setCursor(0,1);
|
||||||
//lcd.print("Fin pls");
|
//lcd.print("Fin pls");
|
||||||
//while(getFingerprintEnroll(maxID+1)!=0)
|
int fingerReturn = -1;
|
||||||
maxID++;
|
while (fingerReturn != 0)
|
||||||
|
{
|
||||||
|
fingerReturn = getFingerprintEnroll(maxID + 1);
|
||||||
|
}
|
||||||
|
lcd.clear();
|
||||||
|
lcd.print(personName);
|
||||||
|
lcd.setCursor(0, 1);
|
||||||
|
lcd.print("RFID pls");
|
||||||
|
|
||||||
|
zugang = "";
|
||||||
|
while (zugang == "") {
|
||||||
|
getRFIDEnroll();
|
||||||
|
}
|
||||||
|
Serial.println(zugang);
|
||||||
|
maxID++;
|
||||||
|
Person* newPerson = new Person;
|
||||||
|
personName.toCharArray(newPerson->name, personName.length()+1);
|
||||||
|
char tmp[FILE_NAME_LEN + 1];
|
||||||
|
sprintf(tmp,"p%03d%s",maxID,FILE_EXTENSION);
|
||||||
|
strcpy(newPerson->file_name, tmp);
|
||||||
|
zugang.toCharArray(newPerson->rfid_uuid, zugang.length()+1);
|
||||||
|
newPerson->finger_uuid = maxID;
|
||||||
|
newPerson->credits_left = 1000;
|
||||||
|
for (int i = 0; i < drinksMax; i++) {
|
||||||
|
newPerson->drinks_taken[i]=0;
|
||||||
|
}
|
||||||
|
write_pers_file(newPerson);
|
||||||
|
|
||||||
|
|
||||||
|
zugang = ""; // reset here
|
||||||
|
lcd.clear();
|
||||||
|
lcd.print(personName);
|
||||||
|
lcd.setCursor(0, 1);
|
||||||
|
lcd.print("Sucess!");
|
||||||
|
delay(1000);
|
||||||
|
//and revert to normal:
|
||||||
|
lcd.clear();
|
||||||
|
lcd.print("Drink:");
|
||||||
|
lcd.setCursor(0, 1);
|
||||||
|
lcd.print(box->drinks[currentDrink].name);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,7 +314,7 @@ void print_person(Beerbox *box, Person *aperson) {
|
|||||||
sprintf(toprint, "rfid_uuid: %s\n", aperson->rfid_uuid);
|
sprintf(toprint, "rfid_uuid: %s\n", aperson->rfid_uuid);
|
||||||
Serial.write(toprint);
|
Serial.write(toprint);
|
||||||
sprintf(toprint, "finger_uuid: %u\n", aperson->finger_uuid);
|
sprintf(toprint, "finger_uuid: %u\n", aperson->finger_uuid);
|
||||||
if(aperson->finger_uuid > maxID) maxID=aperson->finger_uuid;
|
if (aperson->finger_uuid > maxID) maxID = aperson->finger_uuid;
|
||||||
Serial.print(toprint);
|
Serial.print(toprint);
|
||||||
sprintf(toprint, "credits_left: %u\n", aperson->credits_left);
|
sprintf(toprint, "credits_left: %u\n", aperson->credits_left);
|
||||||
Serial.print(toprint);
|
Serial.print(toprint);
|
||||||
@ -297,7 +337,6 @@ void print_person(Beerbox *box, Person *aperson) {
|
|||||||
|
|
||||||
|
|
||||||
int update_pers_file() {
|
int update_pers_file() {
|
||||||
//TODO use lastPersonIndex
|
|
||||||
Person thisPerson = persons[lastPersonIndex];
|
Person thisPerson = persons[lastPersonIndex];
|
||||||
File write;
|
File write;
|
||||||
char tmp[25];
|
char tmp[25];
|
||||||
@ -320,13 +359,13 @@ int update_pers_file() {
|
|||||||
write.write(tmp, strlen(tmp));
|
write.write(tmp, strlen(tmp));
|
||||||
sprintf(tmp, "finger_uuid: %u\n", thisPerson.finger_uuid);
|
sprintf(tmp, "finger_uuid: %u\n", thisPerson.finger_uuid);
|
||||||
write.write(tmp, strlen(tmp));
|
write.write(tmp, strlen(tmp));
|
||||||
sprintf(tmp, "credits_left: %u", thisPerson.credits_left);
|
sprintf(tmp, "credits_left: %u\n", thisPerson.credits_left);
|
||||||
write.write(tmp, strlen(tmp));
|
write.write(tmp, strlen(tmp));
|
||||||
|
|
||||||
for (i = 0; i < drinksMax; i++) {
|
for (i = 0; i < drinksMax; i++) {
|
||||||
|
|
||||||
if (thisPerson.drinks_taken[i] != -1) {
|
if (thisPerson.drinks_taken[i] != -1) {
|
||||||
sprintf(tmp, "\ndrink_Count_%d: %d", i, thisPerson.drinks_taken[i]);
|
sprintf(tmp, "\ndrink_Count_%d: %d\n", i, thisPerson.drinks_taken[i]);
|
||||||
write.write(tmp, strlen(tmp));
|
write.write(tmp, strlen(tmp));
|
||||||
Serial.println(tmp);
|
Serial.println(tmp);
|
||||||
}
|
}
|
||||||
@ -387,7 +426,7 @@ Person* readAllPersons () {
|
|||||||
File dir = SD.open("/");
|
File dir = SD.open("/");
|
||||||
dir.rewindDirectory();
|
dir.rewindDirectory();
|
||||||
|
|
||||||
int personCount = 0;
|
personCount = 0;
|
||||||
//count the valid persons:
|
//count the valid persons:
|
||||||
while (true) {
|
while (true) {
|
||||||
File entry = dir.openNextFile();
|
File entry = dir.openNextFile();
|
||||||
@ -395,11 +434,19 @@ Person* readAllPersons () {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!entry.isDirectory()) {
|
if (!entry.isDirectory()) {
|
||||||
if (strstr(strlwr(entry.name() + (strlen(entry.name()) - 4)), ".per")) personCount++; //Yeah it is a person!
|
if (strcmp(strlwr(entry.name() + (strlen(entry.name()) - 4)), ".per")==0)
|
||||||
|
{
|
||||||
|
Serial.println("Yea");
|
||||||
|
personCount++; //Yeah it is a person!
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
entry.close();
|
entry.close();
|
||||||
}
|
}
|
||||||
//now store them
|
//now store them
|
||||||
|
Serial.print("count:");
|
||||||
|
Serial.print(personCount);
|
||||||
Person* readPersons = new Person[personCount];
|
Person* readPersons = new Person[personCount];
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
dir.rewindDirectory();
|
dir.rewindDirectory();
|
||||||
@ -422,7 +469,8 @@ Person* readAllPersons () {
|
|||||||
}
|
}
|
||||||
entry.close();
|
entry.close();
|
||||||
}
|
}
|
||||||
//Serial.println("Read all!");
|
dir.close();
|
||||||
|
Serial.println("Read all!");
|
||||||
return readPersons;
|
return readPersons;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
14
p001.per
14
p001.per
@ -1,9 +1,7 @@
|
|||||||
Alex
|
Lukas
|
||||||
rfid_uuid: 07005C447660
|
rfid_uuid: 07005C447669
|
||||||
finger_uuid: 003
|
finger_uuid: 1
|
||||||
credits_left: 100
|
credits_left: 150
|
||||||
drink_Count_0: 3
|
drink_Count_0: 0
|
||||||
drink_Count_1: 6
|
drink_Count_1: 0
|
||||||
drink_Count_2: 0
|
drink_Count_2: 0
|
||||||
drink_Count_3: 0
|
|
||||||
drink_Count_4: 0
|
|
||||||
|
16
p002.per
16
p002.per
@ -1,9 +1,7 @@
|
|||||||
Lukas
|
Alex
|
||||||
rfid_uuid: 07005C447669
|
rfid_uuid: 07005C447660
|
||||||
finger_uuid: 001
|
finger_uuid: 002
|
||||||
credits_left: 150
|
credits_left: 100
|
||||||
drink_Count_0: 1
|
drink_Count_0: 0
|
||||||
drink_Count_1: 4
|
drink_Count_1: 0
|
||||||
drink_Count_2: 3
|
drink_Count_2: 0
|
||||||
drink_Count_3: 0
|
|
||||||
drink_Count_4: 0
|
|
||||||
|
Loading…
Reference in New Issue
Block a user