Hallo,
ich bin gerade dabei eine serielle Schnittstelle zu programmieren, über die ich ein Schieberegister ansteuern kann. Ich habe mir schon überlegt, in welchem Format ich die Daten senden möchte:
0x00,0x55,0x07,0x00,0xFF,0xFF //halten an
0x00,0x55,0x07,0x00,0x00,0x00 //halten aus
0x00,0x55,0x07,0x01,0x05,0x64 //blinken
|-Header-|addr|mode|--value--|
Header ist der Anfang, damit das Programm weiß, wo es anfangen muss. Falls der Anfang ein anderer ist, dann soll er die ganze Zeit durch gehen (immer einen Byte weiter).
Addr ist die Adresse, also welcher Ausgang des Schieberegister angesteuert werden soll.
Mode ist der Modus in welcher die LED´s sich befinden sollen. (Es sind noch probeweise LED´s, aber ich habe hier schon Relais rumliegen.)
Value ist der Wert. Entweder wird dort die Zeit für das Blinken angegeben oder ob die LED´s an oder aus sein sollen.
Mein Problem. Wenn ich diese Daten so einlese, dann nimmt er jede Zahl/Buchstabe einzeln und erkennt es nicht als HEX. Wenn ich mir die ausgeben lasse, dann steht dort jede einzelne Stelle als ASCII.
Wie kann ich das am einfachsten lösen. Mit Strings hat es schon geklappt, aber von denen wollte ich mich eigentlich lösen.
Hier mein Programmcode:
bool portBuffer[256];
byte serialBuffer[6];
int latchPin = 2;
int clockPin = 3;
int dataPin = 4;
//byte leds = 0;
void setup() {
Serial.begin(9600);
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void fill() {
// check if data is available
if (Serial.available() > 0) {
// read the incoming bytes:
Serial.readBytes(serialBuffer, 4);
// prints the received data
Serial.println("");
Serial.println("");
Serial.println("");
for (int i = 0; i < 4; i++) {
Serial.print("I received: ");
Serial.println(serialBuffer[i]);
}
}
}
void loop() {
fill();
}
Also prinzipiell habe ich wahrscheinlich das selbe Problem wie in diesem Post. Werte, (bytes) aus Datei lesen....
Leider konnte ich mir daraus aber keinen Lösungsweg ableiten.