Projet CAN
2 participants
Page 1 sur 1
Projet CAN
Bonjour,
je suis debutant en C ,en fait j'ai un projet sur la gestion des messages CAN(iso 15765-3 et -2) ,et j'ai du mal a programmer la structure de mon message.Je m'explique:
dans la couche application du protocol de communication on trouve un message char* d'une taille superieur a 8 bytes et dans la couche reseau on dois ajouter 3 bytes d'identification et on dois couper (le message+3bytes) à des paquet de 8 bytes.
mon probléme c'est que je sais pas d'ou commencer , si quelqu'un peut aider je serrai trés reconnaissant .
trés cordialement
je suis debutant en C ,en fait j'ai un projet sur la gestion des messages CAN(iso 15765-3 et -2) ,et j'ai du mal a programmer la structure de mon message.Je m'explique:
dans la couche application du protocol de communication on trouve un message char* d'une taille superieur a 8 bytes et dans la couche reseau on dois ajouter 3 bytes d'identification et on dois couper (le message+3bytes) à des paquet de 8 bytes.
mon probléme c'est que je sais pas d'ou commencer , si quelqu'un peut aider je serrai trés reconnaissant .
trés cordialement
zakari- Messages : 3
Date d'inscription : 23/04/2010
Re: Projet CAN
Un système de découpage de message en blocs de 3 octets n'est pas bien compliqué. Je propose que tu commences par ça...zakari a écrit:Bonjour,
je suis debutant en C ,en fait j'ai un projet sur la gestion des messages CAN(iso 15765-3 et -2) ,et j'ai du mal a programmer la structure de mon message.Je m'explique:
dans la couche application du protocol de communication on trouve un message char* d'une taille superieur a 8 bytes et dans la couche reseau on dois ajouter 3 bytes d'identification et on dois couper (le message+3bytes) à des paquet de 8 bytes.
mon probléme c'est que je sais pas d'ou commencer , si quelqu'un peut aider je serrai trés reconnaissant .
trés cordialement
Exemple :
On a un message de 10 octets : "abcdefghij" à émettre. On doit le découper de façon à émettre :
3 : "abc"
3 : "def"
3 : "ghi"
1 : "j"
évidemment, le dernier bloc a une taille de 1, 2 ou 3.
Une boucle avec un compteur de caractères restant à émettre et une avance par 3 devrait suffire. D'ailleurs, si on cherche bien, il y a un exemple de cet algorithme dans http://www.bien-programmer.fr/reseaux.php
Re: Projet CAN
Merci pour votre reponse "ed", je suis entrain de voir l'exemple des sockets.
dans mon projet je dois utiliser un driver virtuel Bus CAN (vector), et enplus je dois mettre des fct "Waitforsingleobjet" pour attendre la confirmation du serveur avant d'envoyer le packet suivant et je bloque dans cet etape, si quelqu'un a un exemple de code ou des infos
je le remercie infiniment.
Cordialement
vous trouvez ci-joint le VCAN.h que je dois utiliser
http://apfw.sourceforge.net/api/html/_v_can_d_8h-source.html
dans mon projet je dois utiliser un driver virtuel Bus CAN (vector), et enplus je dois mettre des fct "Waitforsingleobjet" pour attendre la confirmation du serveur avant d'envoyer le packet suivant et je bloque dans cet etape, si quelqu'un a un exemple de code ou des infos
je le remercie infiniment.
Cordialement
vous trouvez ci-joint le VCAN.h que je dois utiliser
http://apfw.sourceforge.net/api/html/_v_can_d_8h-source.html
zakari- Messages : 3
Date d'inscription : 23/04/2010
Re: Projet CAN
Le fonctionnement synchrone avec WaitForASingleObject() n'est pas très différend de l'usage de select() que je décris dans mon article. La programmation Windows n'est pas ma spécialité... Ceci-dit, je ne suis pas persuadé qu'il faille utiliser l'attente synchrone (lourd et complexe), car les sockets sont prévus pour un fonctionnement asynchrone (send and forget). A moins qu'il y ait à gérer un protocole d'acquittement, au quel cas, il faut surveiller la réception après l'émission. Mais dans ce cas, recv() suffit ...
Tout dépend du type de protocole. Si on doit gérer la réception d'évènements spontanés, effectivement, on échappe pas soit à l'écriture de 2 tâches indépendantes asynchrones (threads), soit à la sérialisation (mode synchrone) avec select() ou équivalent (select() fonctionne aussi sous Windows tant qu'il s'agit de sockets).
Tout dépend du type de protocole. Si on doit gérer la réception d'évènements spontanés, effectivement, on échappe pas soit à l'écriture de 2 tâches indépendantes asynchrones (threads), soit à la sérialisation (mode synchrone) avec select() ou équivalent (select() fonctionne aussi sous Windows tant qu'il s'agit de sockets).
Dernière édition par -ed- le Lun 26 Avr 2010 - 12:34, édité 2 fois
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|