Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TRANSFERT DE FICHIER PAR RS232 [VC++]


Information sur la source

Catégorie :Fichiers / Disque Niveau : Débutant Date de création : 09/06/2004 Date de mise à jour : 09/06/2004 22:37:50 Vu / téléchargé: 10 298 / 2 131

Note :
8,67 / 10 - par 3 personnes
8,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

Description

voici mon 1er programme en Cpp
il n'est pas bien extraordinaire mais il faut bien commencer :)
bref :

cela permet l'envois de fichier (et la reception donc) par port serie suivant un protocole STX/ETX
 

Source

  • /*
  • +-----+--------------------------------+-----+
  • |STX | DATA |ETX |
  • +-----+--------------------------------+-----+
  • <------------------TRAME--------------------->
  • */
/*

+-----+--------------------------------+-----+
|STX |           DATA         |ETX |
+-----+--------------------------------+-----+
<------------------TRAME--------------------->

*/


Conclusion

compilé avec Visual Studio C++ 6
code commenté!
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • projet.exeTélécharger ce fichier [Réservé aux membres club]188 508 octets
  • project.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier13 668 octets
  • projet.dspTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 283 octets
  • projet.dswTélécharger ce fichier [Réservé aux membres club]Voir ce fichier537 octets
  • projet.ncbTélécharger ce fichier [Réservé aux membres club]41 984 octets
  • projet.optTélécharger ce fichier [Réservé aux membres club]53 760 octets
  • projet.plgTélécharger ce fichier [Réservé aux membres club]1 031 octets

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de ymca2003 le 09/06/2004 23:10:37

Très bon exemple RS232, Pour un premier prog cpp, chapeau

signaler à un administrateur
Commentaire de LordBob le 11/06/2004 09:28:23

oui c'est un debut prometteur !!!

signaler à un administrateur
Commentaire de psyjc le 11/06/2004 11:04:11

merci, ca fait plaisir! quand je vois les sources de certains je pensais que la mienne etait vraiiiiiimmmeennnnttttt loin derriere..

je cherche des sites qui explique simplement (pour debutant) comment se servir de l'api windows plutot sous forme de cours (manipulation de fichiers/repertoirs, graphismes, threads ...)
jai regardé du coté de la msdn, mais j'y comprends pas grand chose :(

signaler à un administrateur
Commentaire de LordBob le 11/06/2004 11:37:16

moi je te conseille ce site pour debuter (c'est avec celui que j'ai moi meme commencé a manipuler les API):
http://bob.developpez.com/tutapiwin/

signaler à un administrateur
Commentaire de ymca2003 le 11/06/2004 22:46:37

petzold(fenêtre, GDI) et richter(sytem, dll, tthreads) (en anglais) :

http://brunews.free.fr/brunews/download/CP5.zip
http://brunews.free.fr/brunews/download/CP5Sources.zip

http://brunews.free.fr/brunews/download/JR4.zip
http://brunews.free.fr/brunews/download/JR4Sources.zip

signaler à un administrateur
Commentaire de lkhra le 22/07/2004 11:32:57

salut ,
psyjc au fait j'ai essaye ton prog il est genial ,mais le truc ce que moi je veux just envoyer et recevoir des donnees et non pas des fichiers pour pouvoir piloter une machine via rs232 et avec le protocole SYN/SYN/SYN/STX/DATA/ETX.
peux tu m'eclairer s'il te plait merci

signaler à un administrateur
Commentaire de rkadouche le 31/10/2004 03:03:16

Bonjour
j'ai un problème de communiquer avec le port parallèle via Windows 2000
j'utilise les fonctions _inp() et _outp() de Visual C++6
merci

signaler à un administrateur
Commentaire de psyjc le 31/10/2004 03:32:51

il me semble (mais je suis pas expert)
qu'avec le port // il faut utiliser un driver special avec windows 2k/XP!

je ne pourrais pas plus t'aider. le programme que j'ai ecris utilise le port serie.

signaler à un administrateur
Commentaire de LaTatadu91 le 06/06/2007 14:21:21

salut,

je voudrais savoir si il est possible que tu m'aides a comprendre ta fonction stxetxdecode
car j'ai une com sur un port série a effectuer avec des trames STX-N-I-NE-INFOS-R.ETX-PL-ETX
----------------------------------------------------------------------------------------------------------------------
N: Nbre octet total
I: indice du message , code 4 à FF
NE: nbre d'ETX. les codes égaux a ETX seront supprimés du message et remplacés apr leur rang en fin de message(R.ETX)
INFOS: infos requises
R.ETX: rang ds le buffer d'origine de la premiere config. code arret(ETX) supprimée dans la aprtie infos
PL: Checksum

j'arrive a lire des octets sur le port mais apres je dois decoder ma trame stx-etx
pr en retirer la chaine d'informations
et ensuite décomposer cette chaine...

si jamais tu peux me guider un peu, ca doit ressembler a ta fonction je pense!

merci d'avance...

signaler à un administrateur
Commentaire de psyjc le 06/06/2007 14:52:20

Salut,
Dans mes souvenirs, mon protocole stx/etx etait vraiment tres con.
j'ouvre mon flux par STX, j'envois tout mon flux d'une seule traite (en echappant eventuellement ETX si son code se presente) puis je ferme par ETX. ca fonctionnait mais il n'y avait aucun controle d'erreur et pas de notion de trames.
Ma fonction stxetxdecode remplace uniquement les caracteres echappe dans le buffer recu.

J'ai bien peur que tu ne puisse pas vraiment t'inspirer de cette source pour faire ton protocole.


PS:le code est vraiment tres sale...

Desole.

signaler à un administrateur
Commentaire de LaTatadu91 le 06/06/2007 15:03:02

oki ,
mais tu pourrais aps m'aider ou tenter de m'aider un peu?
en gros j'aimerais faire comme pr les chaines de caracteres style
strcpy(stx,buffer+1,1)
strcpy(N,buffer+2,1)
strcpy(INFOS, buffer+3,N);

enfin un truc du genre mais ca bug
la chaine lue sur le port c des octets sous forme heaxadecimale?
comment je peux decomposer mon buffer lu comme chaine de caractere?

je suis trop nul pr ce qui est hexa; ascii etc...*
si t'as une idée je suis preneur

signaler à un administrateur
Commentaire de psyjc le 06/06/2007 15:43:56

tu cree une structure qui a le format de ta trame et tu place un pointeur sur le debut de ta trame que tu cast en ta structure. Si la trame est de longueur variable tu le fais pour le header de ta trame.

un truc du genre:
typedef struct s_stx {
    size_t   N;       // Nbre octet total
    short    I;       //indice du message , code 4 à FF
    int      NE;      //nbre d'ETX. les codes égaux a ETX seront supprimés du message et remplacés apr leur rang en fin de message(R.ETX)
} t_stx;

typedef struct s_etx {
    int      R.ETX;   //rang ds le buffer d'origine de la premiere config. code arret(ETX) supprimée dans la aprtie infos
    short    PL;      //Checksum
} t_etx;


char *buff; // Ma Trame

t_stx  *stx;
t_etx  *etx;
char   *data;
size_t dataLenght;

stx = (t_stx *)buff;
data = (char *)(stx + 1);
dataLenght = stx->N - (sizeof(stx) + sizeof(etx))
etx = (t_etx *)(data + dataLenght);

signaler à un administrateur
Commentaire de LaTatadu91 le 06/06/2007 16:38:02

oki merci
mais je capte aps bien ca:
//tu castes la trame sur une structure qui sera pas assez grande?
stx = (t_stx *)buff;
//stx est un pointeur, alors +1 ???
data = (char *)(stx + 1);
//OK :-)
dataLenght = stx->N - (sizeof(stx) + sizeof(etx))
//???
etx = (t_etx *)(data + dataLenght);

signaler à un administrateur
Commentaire de LaTatadu91 le 06/06/2007 16:47:12

et aussi pr precision ma fonction read me retourne :
un buffer de ce type :BYTE buffer[RX_SIZE+1];

signaler à un administrateur
Commentaire de psyjc le 06/06/2007 18:01:40

Si tu ne maitrise pas les pointeurs ni l'algèbre des pointeurs, il faut que tu commence par là.
Demande a google de t'expliquer, tu trouvera ton bonheur ;)
Bonne chance.

signaler à un administrateur
Commentaire de zezitinho le 09/10/2007 15:27:12

hello, il y a un bug dans ton programme...

Le fichier n'est pas reçu correctement, il est incomplet...

Je sais pas si c'est du a l'emetteur ou au recepteur, mais c'est dommage car il avait l'air intéressant ce programme !

signaler à un administrateur
Commentaire de Schreiben le 01/05/2008 19:38:58

salut les amis j'ai un probleme dans mon projet de fin d'etude je vais essayer d'envoyer une trame serie RS232 par hyperterminal j'ai enregistré le trame dans un fichier texte puis j'ai l'envoyer mais rien ne ce passe est ce que la structure du trame est fausse (stx addresse index blokchek etx)
en code ascii ou ilya une autre problem ? je suis bloqué dans cette fase j'attend vos aident les amis (nizar_tun@hotmail.com)
merci

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.