Как добавить функцию записи в файл с вводом через RFID?

Я пытаюсь записать идентификатор, найденный по RFID, в файл — но когда я посылаю байты в файл, он дает неправильный идентификатор.

Я добавляю функцию записи файла в этот пример — где идентификатор берется из метки RFID, и когда я открываю файл, формат полностью отличается от того, что я выводил на свой терминал.

Я работаю на Raspberry Pi с RFID-корпусом 125 кГц.

Вот пример кода с моими надстройками:

   /*
*  RFID 125 kHz Module
*
*  Copyright (C) Libelium Comunicaciones Distribuidas S.L.
*  http://www.libelium.com
*
*  This program is free software: you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation, either version 3 of the License, or
*  (at your option) any later version.
*  a
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program.  If not, see http://www.gnu.org/licenses/.
*
*  Version:           2.0
*  Design:            David Gascón
*  Implementation:    Marcos Yarza & Luis Martin
*/

//Include ArduPi library
#include "arduPi.h"

int led = 13;
byte data_1 = 0x00;
byte data_2 = 0x00;
byte data_3 = 0x00;
byte data_4 = 0x00;
byte data_5 = 0x00;
int val = 0;

void setup(){
// Start serial port 19200 bps
Serial.begin(19200);
pinMode(led, OUTPUT);

delay(500);

// Setting Auto Read Mode - EM4102 Decoded Mode - No password
// command: FF 01 09 87 01 03 02 00 10 20 30 40 37
Serial.print(0xFF,BYTE);
Serial.print(0x01,BYTE);
Serial.print(0x09,BYTE);
Serial.print(0x87,BYTE);
Serial.print(0x01,BYTE);
Serial.print(0x03,BYTE);
Serial.print(0x02,BYTE);
Serial.print(0x00,BYTE);
Serial.print(0x10,BYTE);
Serial.print(0x20,BYTE);
Serial.print(0x30,BYTE);
Serial.print(0x40,BYTE);
Serial.print(0x37,BYTE);

delay(500);
Serial.flush();

printf("\n");

printf("RFID module started in Auto Read Mode\n");

}

void loop(){

printf("Waiting card...\n");
val = Serial.read();
while (val != 0xff){
val = Serial.read();
delay(1000);
}

// Serial.read();    // we read ff
Serial.read();    // we read 01
Serial.read();    // we read 06
Serial.read();    // we read 10
data_1 = Serial.read();    // we read data 1
data_2 = Serial.read();    // we read data 2
data_3 = Serial.read();    // we read data 3
data_4 = Serial.read();    // we read data 4
data_5 = Serial.read();    // we read data 5
Serial.read();    // we read checksum// LED blink
for(int i = 0;i < 4;i++){
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
delay(500);
}

// Printing the code of the card
printf("\n");
printf("EM4100 card found - Code: ");
printf("%x",data_1);
printf("%x",data_2);
printf("%x",data_3);
printf("%x",data_4);
printf("%x",data_5);

printf("\n\n");
}

int writeFile(){
ofstream myfile;
osstringstream mystream;
myfile.open(example);
mystream << data_1;
mystream << data_2;
mystream << data_3;
mystream << data_4;
mystream << data_5;
myfile << mystream.str();
myfile.close();
return 0;
}

int main (){
setup();
while(1){
loop();
writefile();
}
return (0);
}

Он компилируется и запускается, но когда я проверяю файл примера, он выдает мусор. Я пробовал несколько других настроек файла записи, но, похоже, ничего не работает. Я немного растерялся, поэтому любая помощь была бы потрясающей!

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]