Hello,
I have written this code, but one of the variables goes missing. It is for coverting the hex codes from an IR remote to a maningful string. It reads a text file from a SD card, like the extract below, its is in the format = #:
C0E8=PWR # Power
C091=PLY # Play
C04D=REC # Record
C061=STP # Stop
C001=PSE # Pause
C07D=FFW # Fast Forward
here is my code:
#include <SD.h>
File myFile;
void setup() {
Serial.begin(9600);
Serial.print("Initializing SD card...");
pinMode(10, OUTPUT);
if (!SD.begin(4)) {
Serial.println("failed!");
return;
}
Serial.println("done.");
char irCmd[4]; // IR Command: C0E8
char irBut[3]; // IR meaning: PWR
int i = 0;
int ic = 0;
int ib = 0;
int line = 0;
myFile = SD.open("IR_SONY.TXT");
if (myFile) {
while (myFile.available()) {
int c = myFile.read();
if (i < 4) { // read first 4 bytes
Serial.write(c);
irCmd[ic++] = c;
irCmd[ic] = '\0';
}
else if (i > 4 && i < 8) { // read the last three bytes
Serial.write(c);
irBut[ib++] = c;
irBut[ib] = '\0';
}
i++;
if (c == '\n' || c== '\r') {
i = 0; // reset counters at end of line
ic = 0;
ib = 0;
Serial.print("\n");
Serial.print(line);
Serial.print(". irCmd: ");
Serial.print(irCmd);
Serial.print(",irBut: ");
Serial.println(irBut);
line++;
}
}
myFile.close();
}
else {
Serial.println("could not open ");
}
Serial.print("xxxx\n");
}
void loop()
{
// nothing happens after setup
}
Output:
C0E8PWR
0. irCmd: ,irBut: PWR
C091PLY
1. irCmd: ,irBut: PLY
C04DREC
2. irCmd: ,irBut: REC
C061STP
3. irCmd: ,irBut: STP
C001PSE
4. irCmd: ,irBut: PSE
C07DFFW
5. irCmd: ,irBut: FFW
the irCmd variable is dssapering and is not being displayed. Howver if I comment out the two lines:
irBut[im++] = c;
irBut[im] = '\0';
the irCmd is displayed.
Can you help?
Thanks
Karl.