Compare commits

1 Commits

Author SHA1 Message Date
321b52f3a0 Amélioration du traitement des commandes 2023-02-07 18:41:44 +01:00

View File

@@ -1,36 +1,52 @@
#include <DMXSerial.h>
String chaine = "";
//Détail des trames
//Réception
//Demande de mise à jour d'un canal 0xC 0xCANAL 0xVALUE
//Demande de version 0xD
//Envoi
//Envoi d'un status prêt 0xA
//Envoi d'un status de mise à jour réussie 0xE
//Envoi de la version firmware 0xD VERSION
//Traite la commande entrante
void traiterCommande(){
//Récupération version
if(chaine == "VERSION") Serial.println("DMXBOX V1.0.0");
//Affectation canal
else if(chaine.length() == 6) setCanal(chaine.substring(0,3).toInt(), chaine.substring(3,6).toInt());
}
#define FIRMWARE_VERSION "DMXBOX V0.0.2"
unsigned int receiveState = 0;
unsigned int channel = 0;
//Modifie un canal DMX512
void setCanal(int number, int value){
void setCanal(unsigned int number, unsigned int value){
DMXSerial.write(number, value);
Serial.println("OK");
Serial.write(0xE);
}
//Initialisation
void setup() {
Serial.begin(9600);
DMXSerial.init(DMXController);
Serial.write(0xA);
}
//Interception des commandes de canaux
void loop() {
if(Serial.available())
{
char c = Serial.read();
if(c == '\n' || c == '\r'){
traiterCommande();
chaine = "";
unsigned int received = Serial.read();
if(received == 0xD && receiveState == 0) {
Serial.write(0xD);
Serial.println(FIRMWARE_VERSION);
}
//Demande de paramétrage canal
else if(received == 0xC && receiveState == 0) receiveState = 1;
else if(receiveState == 1) {
channel = received;
receiveState = 2;
}
else if(receiveState == 2){
setCanal(channel, received);
receiveState = 0;
channel = 0;
}
else chaine += c;
}
}