ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 2006
-
9 juin 2004 à 23:10
Schreiben
Messages postés1Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention 1 mai 2008
-
1 mai 2008 à 19:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Schreiben
Messages postés1Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention 1 mai 2008 1 mai 2008 à 19:38
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
zezitinho
Messages postés3Date d'inscriptionmardi 24 mai 2005StatutMembreDernière intervention 9 octobre 2007 9 oct. 2007 à 15:27
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 !
psyjc
Messages postés182Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention18 avril 2008 6 juin 2007 à 18:01
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.
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 6 juin 2007 à 16:47
et aussi pr precision ma fonction read me retourne :
un buffer de ce type :BYTE buffer[RX_SIZE+1];
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 6 juin 2007 à 16:38
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);
psyjc
Messages postés182Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention18 avril 2008 6 juin 2007 à 15:43
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;
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 6 juin 2007 à 15:03
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
psyjc
Messages postés182Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention18 avril 2008 6 juin 2007 à 14:52
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.
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 6 juin 2007 à 14: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...
psyjc
Messages postés182Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention18 avril 2008 31 oct. 2004 à 03:32
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.
rkadouche
Messages postés1Date d'inscriptiondimanche 31 octobre 2004StatutMembreDernière intervention31 octobre 2004 31 oct. 2004 à 03:03
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
cs_lkhra
Messages postés2Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention22 juillet 2004 22 juil. 2004 à 11:32
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
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 11 juin 2004 à 22:46
petzold(fenêtre, GDI) et richter(sytem, dll, tthreads) (en anglais) :
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 11 juin 2004 à 11:37
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/
psyjc
Messages postés182Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention18 avril 2008 11 juin 2004 à 11:04
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 :(
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 11 juin 2004 à 09:28
oui c'est un debut prometteur !!!
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 9 juin 2004 à 23:10
Très bon exemple RS232, Pour un premier prog cpp, chapeau
1 mai 2008 à 19:38
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
9 oct. 2007 à 15:27
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 !
6 juin 2007 à 18:01
Demande a google de t'expliquer, tu trouvera ton bonheur ;)
Bonne chance.
6 juin 2007 à 16:47
un buffer de ce type :BYTE buffer[RX_SIZE+1];
6 juin 2007 à 16:38
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);
6 juin 2007 à 15:43
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);
6 juin 2007 à 15:03
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
6 juin 2007 à 14:52
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.
6 juin 2007 à 14:21
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...
31 oct. 2004 à 03:32
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.
31 oct. 2004 à 03:03
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
22 juil. 2004 à 11:32
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
11 juin 2004 à 22:46
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
11 juin 2004 à 11:37
http://bob.developpez.com/tutapiwin/
11 juin 2004 à 11:04
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 :(
11 juin 2004 à 09:28
9 juin 2004 à 23:10