Bonjour,

J'ai posté une seconde fois mon topic car je ne sais pas trop dans quel salon le mettre. Merci aux modérateurs de faire le nécessaire ...


je souhaiterai qu'un maitre (ici mon PC) puisse envoyer une trame vers un esclave (un module relié par RS485).

J'ai trouvé une documentation sur le net m'indiquant le format de la trame. Pour une question (interrogation d'un maitre à un esclave) :



Exemple d’échange entre un maître et un esclave

Trame émise par le maître : 04 03 00 02 0001 25 CA
- Adresse esclave : 04
- Code fonction 03 = lecture registre
- N° du registre de début de lecture : MSB : 00 et LSB : 02
- Nombre de registre de lecture : MSB : 00 et LSB : 01
- CRC : 25 CA


Vous trouverez le PDF de ce document en cliquant ici

J'ai commencé un programme qui configure et initialise la liaison série :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/**************************************************************************\
*                                                                                                                                                  *
*                             Programme test de la RS485                           *
*                                                                                                                                                  *
*                                                                                                                                                  *
*                                                                                                                                                  *
*                                   by Fabien L.                                                   *
*                                                                                                                                                  *
\**************************************************************************/
 
 
#include <windows.h>
#include <stdio.h>
#include <iostream>
 
using namespace std;
int main(void)
{
 
// On crée un handle que l'on initialise à NULL.
HANDLE SPort=NULL;
DWORD Event;
COMMCONFIG tR;
 
 
 
    // Sport est un handle ( identifiant )
	// Pour mieux comprendre les paramètre passés
	// consultez la fonction CreateFile();
	SPort = CreateFile("COM4",
					   GENERIC_READ | GENERIC_WRITE,
					   0,
					   NULL,
					   OPEN_EXISTING,
					   0,
					   NULL);
	// Le handle sera le lien entre notre apllication
	// et le port série.
	// Ici ce sera le port indiquédans le tableau COM déclaré au début qui sera ouvert.
 
	if ( SPort == INVALID_HANDLE_VALUE )
	{
		cout << "Le port selectionne ne peut etre ouvert ou l'est deja" ;
		cout<<endl;
		system( "pause" );
	}
 
	// Vérification de parité désactivée
	tR.dcb.fParity=NOPARITY;
	// La taille du mot donnée est de
	tR.dcb.ByteSize=8;
	// Un bit de stop
	tR.dcb.StopBits=ONESTOPBIT;
	// désactive les Xon-Xoff
	tR.dcb.fInX=FALSE;
	tR.dcb.fOutX=FALSE;
	// Configuration du BaudRate
	tR.dcb.BaudRate= CBR_4800;
 
	// Enregistrer les modifications apportées
	// au paramètres Xon-Xoff
	SetCommConfig(SPort, &tR, sizeof(tR));
	// On remplit la strucuture COMMTIMEOUTS
	COMMTIMEOUTS tMyTimeOuts =  {
	100,
    0,
    0,
    1000,
    1000
    };
 	 //Enregistre les modifications concernant le CommTimeouts
	if (!SetCommTimeouts(SPort, &tMyTimeOuts) )
	{
		MessageBox(0,"Erreur de configuration","Erreur",MB_OKCANCEL);
		cout<<endl;
		system( "pause" );
	}
 
/********************** STRUCTURE RECHERCHEE *************************/
 
 
    system( "pause" );
}
Compilé avec Dev-C++.

Je cherche à établir une trame avec comme indiqué auparavant, le numéro d'esclave, le code fonction (écriture), information demandée, et le mot de contrôle (ici le CRC). Donc si quelqu'un a une idée de la syntaxe à utiliser pour construire cette trame à envoyer sur cette RS485, je suis preneur.

MERCI D'AVANCE POUR VOTRE AIDE