rahffbourd976 Le_gentil | Bonjour tout le monde ,
Pourrais je avoir une aide ( voir une exemple ) pour pouvoir fonctionner un programme correctement sil vous plait? En fait je vous explique " j'ai une carte Arduino Mega + module wifi RN XV + module RS485 + convertisseur rs232 en rs485 " , le but c'est de recevoir des séquence par wifi par la liaison RS232 en moniteur Série Arduino ( ça c'est fait) , ensuite reprendre ces séquences et les envoyées par la liaison RS485 modbus RTU ( j'ai des difficulté) . Je ne sais pas comment je dois procédé pour convertir ces séquence qui sont en Hexa en modbus RTU. Les séquences que je dois recevoir sont de ce genre ( M01-01 ) il y a 14 moteur, je dois faire en sorte que sa le fais automatiquement . ( A mon avis , il dois avoir des CRS a calculé des truc comme ça, or je ne sais pas comment procéder) donc j'ai besoins de votre aide sil vous plait merci.
Voici les liens pour les modules: https://dlnmh9ip6v2uc.cloudfront.ne [...] -XV-DS.pdf : https://www.arduino.cc/en/Main/ArduinoBoardMega : http://www.dfrobot.com/wiki/index.php/RS485_Shield : http://www.esis.com.au/Converters/ic485s.pdf Je vous poste mon programme , merci de votre aide! ___________________________________
Code :
- String messageRecu;
- char bufferTransmissionRS485[256];
- int led = 13;
- int EN =2 ;//Definition RS485 shield enable terminal (the 2nd digital IO ports),
- //high for the sending state, the low level of receiving state
- //déclaration des prototypes des fonctions
- int Rs485_Ecrire( char* ptrMessage, unsigned char pNombreOctet);
- int Rs485_Lire(char* ptrMessageRecu, unsigned char pNombreOctet);
- void setup()
- {
- Serial.begin(9600);
- Serial1.begin(9600);
- Serial1.setTimeout(1000);
- Serial.setTimeout(1000);
- pinMode(led,OUTPUT);
- pinMode(EN,OUTPUT);
- }
- void loop()
- {
- // variable contenant le caractère à lire
- char reception = 0;
- // variable contenant le nombre de caractère disponibles dans le buffer
- int tailleMessage = 0;
- //recepNombre = Serial1.available();
- while (Serial1.available()) // tant qu'il y a des caractères à lire
- {
- messageRecu = Serial1.readString(); // on lit la chaine provenant du module Wifi
- // Serial.print(messageRecu); // puis on le renvoi à l’expéditeur tel quel
- //recepNombre = Serial.available(); // on relit le nombre de caractères dispo
- }
- tailleMessage = messageRecu.length();
- if ( tailleMessage != 0)
- {
- messageRecu.toCharArray(bufferTransmissionRS485,tailleMessage);
- Rs485_Ecrire(bufferTransmissionRS485,tailleMessage);
- }
- delay(2000);
- messageRecu=""; //réinitialise le message reçu
-
- }// fin fonction loop()
- int Rs485_Ecrire( char* ptrMessage, unsigned char pNombreOctet)
- {
- int codeRetour=0;
- digitalWrite(EN,HIGH); //Enable high, RS485 shield waiting to transmit data
- codeRetour = Serial.write(ptrMessage,pNombreOctet);
- delay(pNombreOctet);
- return codeRetour;
- }
- int Rs485_Lire(char* ptrMessageRecu, unsigned char pNombreOctet)
- {
- int codeRetour=0;
- digitalWrite(EN,LOW); //Enable low, RS485 shield waiting to receive data
- codeRetour=Serial.readBytes(ptrMessageRecu, pNombreOctet);
- return codeRetour;
- }
|
Message édité par rahffbourd976 le 08-06-2016 à 11:37:35 ---------------
twinx2
|