Salut à tous,
Je m'appelle Samuel et je suis nouveau sur ce forum.
Avant tout merci pour ce forum car grace à vous, j'ai appris énormément en programmation arduino et j'ai toujours trouvé réponse dans vos posts, mais cette fois ci je suis bloqué et j'ai besoin de votre aide.
Je débute donc en programmation et je tente de réaliser une interface arduino détecteur de nuage qui interagit avec un logiciel déja existant.
Le protocole de communication de ce logiciel, ainsi que le logiciel gratuit est expliqué sur le site du concepteur, je vous donne le lien.
rs232 protocol :
http://www.aagware.eu/aag_cloudwatchertechinfo.htm
le logiciel est ici :
http://www.aagware.eu/aag_cloudwatcher700.htm
Voici le code que j'ai réalisé pour réagir avec le logiciel
Il a pour but pour l'instant de tester la communication avec le logiciel et les données qu'il renvoie sont statiques, (pas encore de capteurs connectés).
Le code fonctionne bien en test par le serial monitor, mais je n'ai pas de réaction du logiciel.
1 - Je pense qu'il ne comprends pas les chaines de caractère que mon code lui renvoie.
2 - Le logiciel envoie des données séries avant que le port série de l'arduino ne soit pret. ( vu avec un sniffer port série )
//DETECTEUR DE NUAGES AAG ARDUINO
void setup(){
Serial.begin(9600); // Démarrage du port série
String msg ="";
char lettre = '0';
establishContact(); // etablit le contact sur le port série en envoyant un handshaking block
}
void loop(){
String msg ="";
char hsb [16]= {'!', 0x11,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0'}; // Déclaration Handshaking block
char lettre = '0';
if(Serial.available() > 0) // si donnée présente
{
while(Serial.available() > 0 ) // tant qu'il y a des données :
{
lettre = Serial.read(); // lire et stocker les données dans "lettre"
if (lettre == '!') // teste si '!' présent et arrete la lecture
{
msg += lettre;
delay(250);
break;
}
else // si pas de '!' continue la lecture
{
msg += lettre;
delay(250);
}
}
// ici on commence à tester toutes les commandes reçues
// et on retourne la chaine de caractère correspondante.
if (msg == "K!")
{
Serial.print("!K1234 "); // Serial number
Serial.print(hsb);
}
else if (msg == "A!")
{
Serial.print("!N Cloudwatcher"); // Internal name
Serial.print(hsb);
}
else if (msg == "B!")
{
Serial.print("!N 1.10"); // Firmware version
Serial.print(hsb);
}
else if (msg == "C!")
{
Serial.print("!6 0990"); // Zener voltage
Serial.print("!3 1000"); // Ambient Temperature
Serial.print("!4 1000"); // LDR voltage
Serial.print("!5 1000"); // Rain sensor Temperature
Serial.print(hsb);
}
else if (msg == "D!")
{
Serial.print("!E1 11111"); // 1st address byte errors
Serial.print("!E2 11111"); // Command byte errors
Serial.print("!E3 11111"); // 2nd address byte errors
Serial.print("!E4 11111"); // PEC byte errors
Serial.print(hsb);
}
else if (msg == "E!")
{
Serial.print("!R 1000"); // Rain frequency
Serial.print(hsb);
}
else if (msg == "F!")
{
Serial.print("!X "); // Switch Open
Serial.print(hsb);
//Serial.print("!Y "); // Switch Close
//Serial.print(hsb);
}
else if (msg == "G!")
{
Serial.print("!X "); // Switch Open
Serial.print(hsb);
}
else if (msg == "H!")
{
Serial.print("!Y "); // Switch Close
Serial.print(hsb);
}
else if (msg == "Ppppp!")
{
Serial.print("!Q 1000"); // PWM duty cycle
Serial.print(hsb);
}
else if (msg == "Q!")
{
Serial.print("!Q 1000"); // PWM duty cycle
Serial.print(hsb);
}
else if (msg == "S!")
{
Serial.print("!1 01200"); // IR sky temperature
Serial.print(hsb);
}
else if (msg == "T!")
{
Serial.print("!1 02000"); // IR sensor temperature
Serial.print(hsb);
}
else if (msg == "z!")
{
Serial.print(hsb);
}
else
{
Serial.print("Commande non reconnue !");
}
}
}
void establishContact() {
char hsb [16]= {'!', 0x11,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0'}; // Déclaration Handshaking block
while (Serial.available() <= 0) {
Serial.print("!N 1.10"); // Firmware version
Serial.print(hsb); // send a handshaking block
delay(300);
}
}
Pourriez vous me dire où est ce que je me trompe dans le code et me filer un peu de votre tps pour m'aider à faire fonctionner mon interface avec ce logiciel ?
Merci
Sam974