/* +-----+--------------------------------+-----+ |STX | DATA |ETX | +-----+--------------------------------+-----+ <------------------TRAME---------------------> */
Télécharger le zip
Très bon exemple RS232, Pour un premier prog cpp, chapeau
oui c'est un debut prometteur !!!
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 :(
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/
petzold(fenêtre, GDI) et richter(sytem, dll, tthreads) (en anglais) :http://brunews.free.fr/brunews/download/CP5.ziphttp://brunews.free.fr/brunews/download/CP5Sources.ziphttp://brunews.free.fr/brunews/download/JR4.ziphttp://brunews.free.fr/brunews/download/JR4Sources.zip
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
Bonjourj'ai un problème de communiquer avec le port parallèle via Windows 2000 j'utilise les fonctions _inp() et _outp() de Visual C++6merci
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.
salut,je voudrais savoir si il est possible que tu m'aides a comprendre ta fonction stxetxdecodecar 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 totalI: indice du message , code 4 à FFNE: 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 requisesR.ETX: rang ds le buffer d'origine de la premiere config. code arret(ETX) supprimée dans la aprtie infosPL: Checksumj'arrive a lire des octets sur le port mais apres je dois decoder ma trame stx-etxpr en retirer la chaine d'informationset ensuite décomposer cette chaine...si jamais tu peux me guider un peu, ca doit ressembler a ta fonction je pense!merci d'avance...
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.
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 bugla 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
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 Tramet_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);
oki mercimais 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);
et aussi pr precision ma fonction read me retourne :un buffer de ce type :BYTE buffer[RX_SIZE+1];
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.
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 !
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
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 873 169 membres 7 nouveaux aujourd'hui 16 151 membres club