Amélioration du traitement des commandes
This commit is contained in:
46
dmxbox.ino
46
dmxbox.ino
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user