serialEvent() - Problem mit der Länge des CharArrays

Hallo,

ich habe mir vorhin einmal das Programmbeispiel für das serialEvent angeschaut und dieses versucht, entsprechend auf Zeichenketten umzugestalten mit ein paar Extras.

Das Programm wird noch etwas erweitert. Sodass eine Zeichenkette an serialAnalysis nur geschickt wird, wenn die ersten Zahlen einer festen Adresse entsprechen (später für den RS485 Bus).

Das eigentliche Problem, was ich gerade habe, das nicht alle eingegeben Zeichen ausgegeben werden. Es werden lediglich die ersten 10 Zeichen ausgegeben. Weiß einer einen Rat?

Gruß Stefan

/*
* SerialEvent.ino
*
* Created: 7/7/2014
* Author: sschultewolter
*/

#include "LiquidCrystal.h"
LiquidCrystal lcd(12, 11, 2, 3, 4, 5);

void setup() {
	lcd.begin(16,2);
	Serial.begin(115200);
}

void serialEvent() {
	static uint8_t index = 0;
	const uint8_t MAX_CHARS = 16;
	char input[MAX_CHARS];
	char inChar;
	
	while (Serial.available()) {
		inChar = (char)Serial.read();

		if(inChar == '\n' || inChar == '\r') {
			input[index] = '\0';
			serialAnalysis(input, index);
			memset(input, 0, MAX_CHARS);
			index = 0;
		}
		else if(index >= MAX_CHARS) {
			index = 0;
			memset(input, 0, MAX_CHARS);
			Serial.println("ERROR");
		}
		else {
			input[index] = inChar;
			index++;
		}
	}
}

void serialAnalysis(char input[], int maxChars) {
	for(int i = 0; i <= maxChars; i++) Serial.print(input[i]);
	Serial.println();
	// do something
}


void loop() {
	// do something
}

Dein Array muss ebenfalls static sein, oder?

Ah, den hatte ich übersehen. Hatte es nicht bemerkt, da er mir ja bedingt alles richtig ausgegeben hat bis zu einer bestimmten Länge.