Conversion ASCII

Bonjour,

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

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Bonjour N1co44

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,

Info sur readStringUntil et trim()

A+
Cordialement
jpbbricole

Pour écouter le port série (ou gérer un flux asynchrone genre keypad) vous pouvez aussi jeter un oeil à mon petit tuto sur le sujet

1 Like

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 ?

Bonjour @N1co44

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

Bonjour N1co44

Oui, un module de ce genre:
image

Qu'entends tu par:

Aurais tu un échantillon?

A+
Cordialement
jpbbricole

Voici :
2023-06-21 10_37_02-Ecran_OTA _ Arduino IDE 2.0.3

Bonjour N1co44

En effet ce n'est pas très cohérent comme données :woozy_face:
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.

Cordialement
jpbbricole

Bonjour @N1co44

ces relevés ont été effecuès avec ou sans MAX232 ?

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 ??

en effet ....

C'est une VRAI interface RS232 ou c'est une interface UART en 5V?

Il faudrait vraiment une photo de votre câblage comme demandé par jpbbricole (je crois que les "smart" "phones" savent faire)

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.