#define MAX_PACKETS 10 // Adjust this based on your requirements
int dmxPackets[MAX_PACKETS][512];
int currentPacket = 0;
String currentScene;
uint8_t dmx[512];
void setup() {
Serial.begin(9600);
for (int i =0; i < 512; i++)
{
dmx[i] = 0;
}
// Replace the following lines with your actual data input or read from a file, etc.
String input = "~SCENE 1~\n(7)[0,0,0,0,0]\n{EASE_IN:5}\n(88)[255,255,255,255,255]\n{EASE_OUT:5}\n(33)[0,0,0,0,0]\n\n~SCENE 2~\n(9)[0,0,0,0,0]\n{EASE_IN:2}\n(+88)[255,255,255,255,255]\n(-88)[255,255,255,255,255]\n{EASE_OUT:5}\n(33)[0,0,0,0,0]\n";
// Parse input directly
parseLines(input);
}
void loop()
{
}
// Function to parse lines and print to serial
void parseLines(String input) {
int start = 0;
for (int i = 0; i < input.length(); ++i) {
if (input[i] == '\n') {
String line = input.substring(start, i);
// Call parseLine for each line
parseLine(line);
start = i + 1;
}
}
}
void parseLine(String line) {
if (line.startsWith("~") && line.endsWith("~")) {
currentScene = line.substring(1, line.length() - 1);
Serial.println("Scene detected: " + currentScene);
} else {
if (line.startsWith("(") && line.indexOf("[") != -1 && line.indexOf(")") != -1 && line.endsWith("]")) {
int channel = line.substring(1, line.indexOf(")")).toInt();
String dataString = line.substring(line.indexOf("[") + 1, line.indexOf("]"));
// Split dataString into individual values
String values[5]; // Assuming 5 values for each packet
int numValues = splitValues(dataString, values);
// Print DMX packet information
Serial.print("DMX Packet detected in Scene ");
Serial.println(currentScene);
Serial.print("Channel: ");
Serial.println(channel);
Serial.print("Data: ");
for (int i = 0; i < numValues; ++i) {
Serial.print(values[i].toInt());
if (i < numValues - 1) {
Serial.print(", ");
}
}
Serial.println();
} else {
// If not a scene or packet line, print the line
//Serial.println(line);
}
}
}
// Function to split a string into individual values
int splitValues(String input, String values[]) {
int count = 0;
int start = 0;
for (int i = 0; i < input.length(); ++i) {
if (input[i] == ',') {
values[count++] = input.substring(start, i);
start = i + 1;
}
}
// Add the last value
values[count++] = input.substring(start);
return count;
}