Je dois récupérer des infos événement d'un automate via un port série en 1200 7N1, pour afficher des messages sur un écran LCD.
Via un terminal (Hterm) j'obtiens les messages suivants lors d'un événement :
sl003<\r><\n>s<\r><\n>
lv105xxxxxxxxxxx BGE<\r><\n>
sl003<\r><\n>s<\r><\n>
lv105xxxxxxxxxxx BGE<\r><\n>
Pour la suite du programme, je veux récupérer la valeur 105 ou 103 qui correspondra à un message texte en fonction de ce numéro événement que j'affiche sur un écran lcd.
Voici le programme pour déjà récupérer la valeur de l'événement.
void setup() {
Serial.begin(9600);
Serial1.begin(1200, SERIAL_7N1);
Serial.println("Test");
}
void loop() {
if (Serial1.available()) {
int c = Serial1.read();
Serial.print("Données: ");
Serial.println(c);
}
}
j'ai également essayé :
String c = Serial1.readString();
mais je n'obtient pas les mêmes valeurs, pouvez-vous m'aidez pour cette conversion ?
Merci
Voilà un exemple de comment récupérer des données arrivées sur un port série.
`void setup() {
Serial.begin(115200);
}
void loop() {
if(Serial.available()) // Si quelque chose reçu
{
String ligneRecue = Serial.readStringUntil('\n'); // Réception des données depuis Serial
ligneRecue.trim(); // Pour nettoyer la chaîne reçue, espaces inutiles, <n, \r ...
Serial.println("Reception de " + ligneRecue);
if (ligneRecue.startsWith("lv105"))
{
Serial.println("Ligne 105");
}
else if (ligneRecue.startsWith("sl003"))
{
Serial.println("Ligne 103");
}
else
{
Serial.println("Reception inconnue!!!");
}
}
}`
Pour essayer, tu peux introduire tes lignes manuellement, comme lv105xxxxxxxxxxx BGE dans la ligne de commande du moniteur de l'IDE Arduino, à 115200, des indications apparaîtront dans le moniteur,
Merci de votre retour. Je vais essayer. Mais les données que je reçois ne sont pas cohérent sur le Serial1, je me demandais si on peut directement brancher ce port RS232 sur le RXTX de l'Arduino ou il faut passer par un MAX232 ?
Je dois récupérer des infos événement d'un automate via un port série en 1200 7N1, pour afficher des messages sur un écran LCD
Mais les données que je reçois ne sont pas cohérent sur le Serial1, je me demandais si on peut directement brancher ce port RS232 sur le RXTX de l'Arduino ou il faut passer par un MAX232 ?
Que dit la doc de l'automate ?
Il est fort probable que sa sortie RS232 nécessite l'insertion d'un MAX232 (ou équivalent) pour assurer l'adaptation des niveaux logiques , inversion logique incluse
Une sortie en 'vrai' RS232 envoie :
les "1" par une tension négative d'une dizaine de volts,
les "0" par une tension positive d'une dizaine de volts
En effet ce n'est pas très cohérent comme données
C'est curieux que dans Hterm c'est bon et que, dans l'Arduino, avec les mêmes paramètres c'est le Bazard?
Comment c'est câblé entre l'automate et l'Arduino, y as-t il une masse commune?
Fais une photo en gros plan de ton montage.
C'était sans le max232 je n'arrive pas à le faire fonctionner, mais avec rx tx de l'Arduino j'ai eu ces données, donc j'ai branché le gnd en commun, plus rien en marchai ... et je l'ai enlevé et la ça fonctionne j'ai les bonnes valeurs ! Curieux ??