CLASSE DE CONTRÔLE DU PORT SÉRIE RS232 AVEC LES API WINDOWS.
MangaII
Messages postés129Date d'inscriptiondimanche 9 décembre 2001StatutMembreDernière intervention12 janvier 2009
-
15 mai 2003 à 10:02
Ouinten -
19 févr. 2016 à 02:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
guylaroz
Messages postés4Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention 9 mars 2012 27 avril 2012 à 19:40
bonjour liligth, mon projet consiste à élaborer un programme permettant de communiquer avec les controleurs de carrefour à feux tricolores qui utilisent les protocole DIASER. cette communication est faite par liasion serie rs232 ou ethernet. Apres communication, pouvoir élaborer un systéme de telegestion afin de pouvoir receuillir le journal de bord du controleur (defaut,alarmes,...).
Sa me fera un plaisir si quelqu'un peut m'aider car j'ai 3 mois de stage or j'ai deja fais 2 mois sans avancement.
Cordialement!
lilight
Messages postés11Date d'inscriptionlundi 9 avril 2012StatutMembreDernière intervention28 avril 20121 21 avril 2012 à 08:52
Bonjour Guylaroz, pourrait expliquer en détail ce que tu cherches a faire, ainsi que ton problème, il est possible que nous ayons le même
lilight
Messages postés11Date d'inscriptionlundi 9 avril 2012StatutMembreDernière intervention28 avril 20121 21 avril 2012 à 08:46
Bonjour Guylaroz, pourrais tu expliquer ce que tu cherches a faire ainsi que ton problème, il est possible que nous ayons le meme problème...
guylaroz
Messages postés4Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention 9 mars 2012 11 mars 2012 à 15:13
bonjour, j'ai tester ton programme. je le trouve parfait mais j'ai un petit soucis et j'aimerais avoir votre aide. je suis sur un projet de fin d'étude et je voudrais adapté cette communication aux contrôleur de carrefour à feux (TRAFFY ou celui de SAGEM) qui utilise le protocole DIASER. aussi permettre de transmettre à distance ces information recueillies sur le contrôleur par GSM, RADIO ou RTC.
Pouvez vous m'aidez car j'en ai besoin pour ma soutenance.
merci et cordialement!
guylaroz
Messages postés4Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention 9 mars 2012 9 mars 2012 à 21:21
bonjour, j'ai tester ton programme. je le trouve parfait mais j'ai un petit soucis et j'aimerais avoir votre aide. je suis sur un projet de fin d'étude et je voudrais adapté cette communication aux contrôleur de carrefour à feux (TRAFFY ou celui de SAGEM) qui utilise le protocole DIASER. aussi permettre de transmettre à distance ces information recueillies sur le contrôleur par GSM, RADIO ou RTC.
Pouvez vous m'aidez car j'en ai besoin pour ma soutenance.
merci et cordialement!
cs_amira2012
Messages postés1Date d'inscriptionvendredi 25 novembre 2011StatutMembreDernière intervention30 décembre 2011 30 déc. 2011 à 10:02
slt bon travail
krustymars
Messages postés2Date d'inscriptionvendredi 15 janvier 2010StatutMembreDernière intervention17 mai 2010 17 mai 2010 à 23:23
include windows.h
samoura969
Messages postés7Date d'inscriptionlundi 17 mai 2010StatutMembreDernière intervention15 juin 2010 17 mai 2010 à 20:16
Bonjour, je m'en sert avec Qt et sur windows7, pourquoi ai-je DWORD, LPBYTE et bien d'autrs non déclarés?
Merci
cs_kingkouka
Messages postés4Date d'inscriptionjeudi 26 janvier 2006StatutMembreDernière intervention 4 mai 2010 3 mai 2010 à 14:23
voici mon petit code, mais il ne compile pas. Je l'ai ajouté à la fin du contenu de LSerie.cpp
Quelqu'un peut-il m'aider???? Vite.........
int void main(int argc, char *argv[]){
com = new LSerie();
// Tentative d'ouverture du port COM2 à une vitesse de 9600 bauds (8bit, 1bit de stop et pas de parité).
if( !com->open(2, 9600) )
{
MessageBox("Port Com indisponible", "SerialTest : Erreur!");
return;
}
// Envois d'une chaine de caractères:
std::string stdString("Message à transmettre");
if( com->sendData(&stdString) < 0 )
{
MessageBox("Envois de données imposssible", "SerialTest : Erreur!");
return;
}
system("pause");
}
cs_kingkouka
Messages postés4Date d'inscriptionjeudi 26 janvier 2006StatutMembreDernière intervention 4 mai 2010 3 mai 2010 à 13:53
je suis débutant en C++
comment faire un simple programme d'envoi et de reception sur le port série....
je veux le programme main principale....est ce je dois inclure "LSerie.h" et "LSerie.cpp" ???
comment faire la liaison de mon programme principale avec LSerie.h et LSerie.cpp
merci
krustymars
Messages postés2Date d'inscriptionvendredi 15 janvier 2010StatutMembreDernière intervention17 mai 2010 24 mars 2010 à 19:54
salut
meme plusieurs années apres la publication de ta classe, merci car elle me rend bien service
cs_budo
Messages postés5Date d'inscriptionmercredi 3 mars 2004StatutMembreDernière intervention 7 juillet 2015 4 nov. 2009 à 23:48
bonjour ,
je travaille avec GNU C++ codeblock
je n'ai pas stadfx etc..
puis je m'en passer ou est ce obligatoire
merci
dorralya
Messages postés1Date d'inscriptionmardi 2 janvier 2007StatutMembreDernière intervention30 octobre 2009 30 oct. 2009 à 17:04
Bonjour
j'ai téléchargé les sources, mais j'ai des pbs.
J'ai une dalle tactile reliée à un adaptateur série-usb, mon PC la voit reliée au port COM2.
Qd j'essaye d'envoyer des commandes avec hyperterminal, ça marche tres bien, je reçois les reponses, et j'ai pu voir les échanges avec portmon.
Sauf qu'avec l'API Lserie,si j'envoie une commande (exemple "V"), je ne reçois rien.
je vois la commande qui est envoyée avec succès avec portmon, et tous les read qui suivent sont "timeoutés".
Quelqun a t-il une idée sur la cause du pb?
Merci beaucou
Gesane
Messages postés1Date d'inscriptionsamedi 28 mars 2009StatutMembreDernière intervention28 mars 2009 28 mars 2009 à 23:38
Bonjour
Je cherchais justement un code qui fait me permet de communiquer avec le port serie via un programme de visual C++.
J ai donc telecharger le tien mais j'ai un message d'erreur qui dit:
"fatal error C1083: Cannot open include file: 'afxwin.h': No such file or directory"
Pourrais-tu me conseiller STP
Merci
wasaikos
Messages postés19Date d'inscriptionsamedi 3 novembre 2007StatutMembreDernière intervention24 juin 2008 17 juin 2008 à 16:33
C'est bon merci je suis passé sous visual ça marche maintenant c'été une histoire de librairie.
PS: j'avé testé sous hyperterminal avant le cable été bon et le caractere aussi!!
encore merci a la prochaine.
djlex03
Messages postés12Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention16 juin 2008 16 juin 2008 à 18:42
Les caractères envoyés le sont bien en ASCII (normalement).
As-tu essayé d'envoyer les caractères avec le programme hyperterminal de Windows ?
Utilise-tu un câble série fourni par le fabricant du matériel ? dans le cas contraire tu as peut être besoin d'un câble croisé type nullmodem.
Pour les caractères, as-tu essayé en minuscules et majuscule ?
wasaikos
Messages postés19Date d'inscriptionsamedi 3 novembre 2007StatutMembreDernière intervention24 juin 2008 16 juin 2008 à 11:08
ça marche toujours pas j'ai pourtant fait ce que tu mas dit; je demande quelque chose es que le caractère envoyé par la fonction est un ascii car moi il faut que s'en soit un!
Es que le fait que je soit sur un support autre que Visual c++ pourrait me bloquer
wasaikos
Messages postés19Date d'inscriptionsamedi 3 novembre 2007StatutMembreDernière intervention24 juin 2008 15 juin 2008 à 14:54
Je developpe avec codeblock 8.02, je me demande si il peut y avoir des problèmes de librairie a cause de ça!
mais parametres sont
vitesse: 9600 bits
arrêt: 1 bits
controle de flux: aucun
donnée: 8 bits
Si tu as des idées a me proposer n'hésite pas!
je te tien au courant lundi si ca marche ou pas!!
djlex03
Messages postés12Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention16 juin 2008 13 juin 2008 à 18:52
Quel est ta plateforme de développement ?
Quels paramètres de liaison série as-tu utilisé ?
Il faut peut être envoyer un retour charriot en fin de chaine, essaye d'envoyer les chaines suivantes : "T1\r\n" ou "T1\n" ou "T1\r".
wasaikos
Messages postés19Date d'inscriptionsamedi 3 novembre 2007StatutMembreDernière intervention24 juin 2008 13 juin 2008 à 08:51
voici ma fonction :
int test_com_envoie()
{
LSerie *ls;
std::string stdString("T1");
return ls->sendData(&stdString);
}
il ce pose un problème, il ne ce passe pas ce qu'il devrait passer ^^) en effet le caractère "T1" permet de mettre a zero l'indicateur, tant que je n'ai pas réussi à le faire je sais donc que cela n'a pas fonctionné !!
D'où peut venir mon problème
-l'indicateur ne comprend pas les cstring?
-mon compilateur ne fait pas ce qu'il faut (pb de librairie?)
PS: dans LSerie.cpp cette ligne (#include <stdafx.h>) me génère une foule d'erreurs je l'ai
donc mise en commentaire es que l'erreur peut venir de là et comment là regler !?!
merci d'avance !!
wasaikos
Messages postés19Date d'inscriptionsamedi 3 novembre 2007StatutMembreDernière intervention24 juin 2008 12 juin 2008 à 22:05
merci de ton aide très rapide !!
je te tiendrais au courant si le test c'est bien passé ou pas
a plus.
djlex03
Messages postés12Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention16 juin 2008 12 juin 2008 à 20:08
djlex03
Messages postés12Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention16 juin 2008 12 juin 2008 à 20:03
Cette classe utilise les API native de Windows, elle fonctionne donc avec les versions 9x de Windows et avec les versions NT4, 2000, XP.
djlex03
wasaikos
Messages postés19Date d'inscriptionsamedi 3 novembre 2007StatutMembreDernière intervention24 juin 2008 12 juin 2008 à 10:44
bonjour a tous merci pour ce source
j'aurais un service a vous demander, je suis en trin d'établir la connections avec mon indicateur "MAGIC" de chez MasterK, je suis arrivé a ouvrir le port et a le configurer, mais mon problème ce situe dans l'envoie (sendData) et donc par la même occasion sur la réception (receiveData)il faut que j'envoie a mon indicateur "P1" pour par exemple pour qu'il me retourne le poids, je ne sais pas ce que je doit envoyer comme type de paramètre pour la fonction [int sendData(string* data)].
si vous pourriez me dire comment créer un paramètre de type (string* data) ce que je dois inclure et comment lui donner la valeur "P1" ça me serais bien utile.
Merci d'avance.
mikeau
Messages postés1Date d'inscriptiondimanche 11 novembre 2007StatutMembreDernière intervention19 novembre 2007 19 nov. 2007 à 15:25
Très pratique et bein structuré !
cs_MoSin
Messages postés1Date d'inscriptionmercredi 12 septembre 2007StatutMembreDernière intervention14 septembre 2007 14 sept. 2007 à 21:37
Salut, j'ai besoin d'une classe qui gère la communication série et ta solution semble être parfaite. La seule question que j'ai c'est qu'il faut que je puisse être capable de mettre la vitesse a 1mbit ( 1 000 000 ). Est-ce que ta classe supporte cela? Et même sais tu si ça dépend du driver série. Moi ça va passe dans un virtual com port, ensuite usb et ensuite à un robot.
Merci!
Famidoo
Messages postés13Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention17 juillet 2006 23 juil. 2006 à 01:24
J'ai un périphérique connecté à mon pocket pc via port série, j'aimerai tester ca fonctionne aussi ?
djlex03
Messages postés12Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention16 juin 2008 30 mai 2006 à 19:47
Pour cela il faut utiliser au choix les fonctions :
- receiveData(DWORD lg, LPBYTE data):
char tab[100];
receiveData(tab, 100)
Je n'ai pas de compilateur C++ d'installé sur mon pc (ca fait longtemp que je ne programme plus en C++), je ne peut donc pas tester ce code. Je le donne juste à titre indicatif.
cs_torfin
Messages postés28Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention28 août 2006 30 mai 2006 à 19:32
on pourrait avoir un exemple pour recevoir une chaine de caractere et la stocker dans un char[]?
djlex03
Messages postés12Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention16 juin 2008 30 mai 2006 à 19:29
Il n'est pas possible de connaître l'état logique de la ligne RX à un instant t (c'est la seule ligne qui n'est pas accessible directement).
On peut éventuellement arriver à reconnaitre certaines PWM en paramétrant le port de manière astucieuse, mais c'est tout.
Pour avoir des entrées sorties binaires directes il vaut mieux utiliser le port parallèle ou une interface de conversion série - parallèle.
cs_torfin
Messages postés28Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention28 août 2006 22 mai 2006 à 20:41
DJLEX03 je voulais dire juste avoir si c un NL1 ou un NL0 (NL: niveau logique)
djlex03
Messages postés12Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention16 juin 2008 22 mai 2006 à 18:51
La ligne RX n'est pas contôlable directement. Le flux de données passe directement dans l'UART qui le décode.
cs_torfin
Messages postés28Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention28 août 2006 22 mai 2006 à 15:54
Pour le problème de RI, sa vient de mon adaptateur USB -> rs232!
Donc pas de souci, la classe fonctione nikel chrome.
La question sur RX reste entière!
cs_torfin
Messages postés28Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention28 août 2006 21 mai 2006 à 16:36
Ce n'est plus la peine de traduire ce code en C car je me suis mis au c++ qui me eprmet de faire des trucs vraiment bien.
J'ai tout de même un enorme problème avec cette classe:
Lorsque je met via la ligne tx un niveau 1 et que TX est relié à RI, lorsque je lit RI j'ai une valeur qui fait 0 puis 1 puis 0 tout le temps, avec des lecture succésive sans toucher a la ligne TX.
Sinon est il possible de controller la ligne RX comme les lignes DSR et autres?
cs_torfin
Messages postés28Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention28 août 2006 10 mai 2006 à 21:25
est-ce que une ame charitable pourrait transcrire ce code de C++ en C, car je ne c'est pas écrire en C++.
cs_glaurung
Messages postés1Date d'inscriptionmardi 7 février 2006StatutMembreDernière intervention13 mars 2006 13 mars 2006 à 10:14
Bonjour,
Je crois qu'il y a une petite erreur dans la fonction membre open(...)
//Vérification de la parité: 0 pas de vérif, 1 pair, 2 impaire.
if(nbStopBit == 0)
dcb.Parity = NOPARITY;
etc...
"nbStopBit" devrait en fait être "parity". Mais même en changeant ça, j'ai le comportement étrange suivant.
J'utilise le bout de code suivant :
Il s'agit d'envoyer à un appareil connecté au port série la commande "DIA" terminée par un retour de chariot, et l'appareil répond. Si je lance le programme, j'obtiens le troisième message d'erreur, et en effet szBuffer est vide et ne contient pas la réponse de l'appareil.
Par contre, si avant de lancer le programme, je me connecte à l'appareil avec hyperterminal et que j'envoie la commande "DIA\r", je reçoit bien une réponse de l'appareil. Ensuite, si je ferme hyperterminal, mon programme fonctionne sans problème. Il faut donc systématiquement que je me connecte d'abord avec hyperterminal avant de pouvoir utiliser mon programme en C++, ce qui est assez ennuyeux. Auriez-vous une idée sur l'origine du problème?
Merci
djlex03
Messages postés12Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention16 juin 2008 22 mai 2005 à 13:59
>>> martinbrochet
>>>bonjour j'ai une demande un peu particulière, j'utilise des capteurs branché sur port serie Com >>>1 et 4. ils sont géré par thread . ca marchait super bien sur CE mais je suis passé sur >>>embedded XP et maintenant la com arrive à me planter de chez planter mes capteurs c'est à dire >>>que mon capteur ne dialogue plus dutout . j'ai bien sur fait attention au : aprè la definition >>>des com (càd com1: -> com1) savez vous si il y une différence fondamentalle sur la gestion de >>>com ?
Bonjour, je n'ai pas travaillé sur le système embedded XP, je ne pourrais donc pas vous renseigner. Cependant, je pense qu'il serait interessant de voir si le problème persiste en ne faisant tourner qu'un seul thread.
djlex03
Messages postés12Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention16 juin 2008 22 mai 2005 à 13:49
>>>Pendary
>>>slt, je viens de dl les fichier L_SERIE.h et L_SERIE.cpp
>>>et j'ai un peu de mal a utiliser la fonction SendData
>>>Je dois envoyer la trame qui suit "PL,1 et le retour chariot(0x0D)"
>>>si quelqun pourrait m'aider.
Bonjour, Avec la nouvelle version de la librairie lserie (lSerie.h et lSerie.cpp), tu devrais pouvoir le faire avec ce code:
com = new LSerie();
if( !com->open(1, 9600) )
{
MessageBox("Port Com indisponible", "SerialTest : Erreur!");
return;
}
std::string stdString("PL,1\n");
if( com->sendData(&stdString) < 0 )
{
MessageBox("Envois de données imposssible", "SerialTest : Erreur!");
return;
}
martinbrochet
Messages postés33Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention25 mai 2005 10 mai 2005 à 14:01
bonjour j'ai une demande un peu particulière, j'utilise des capteurs branché sur port serie Com 1 et 4. ils sont géré par thread . ca marchait super bien sur CE mais je suis passé sur embedded XP et maintenant la com arrive à me planter de chez planter mes capteurs c'est à dire que mon capteur ne dialogue plus dutout . j'ai bien sur fait attention au : aprè la definition des com (càd com1: -> com1) savez vous si il y une différence fondamentalle sur la gestion de com ? parce que ca me faite vraiment chier
merci @ ++
Pendary
Messages postés7Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention14 mai 2005 6 mai 2005 à 20:39
slt, je viens de dl les fichier L_SERIE.h et L_SERIE.cpp
et j'ai un peu de mal a utiliser la fonction SendData
Je dois envoyer la trame qui suit "PL,1 et le retour chariot(0x0D)"
si quelqun pourrait m'aider.
Merci d'avance ;)
CYouness
Messages postés5Date d'inscriptiondimanche 17 octobre 2004StatutMembreDernière intervention17 octobre 2004 17 oct. 2004 à 13:20
ca marche bien ton code merci.......pour des projets en commun contactez moi......je suis nouveau sur le site.mais on peut toujours s'entendre...à créer une application ou un jeu.........je vous attends
olischlo
Messages postés3Date d'inscriptionjeudi 24 juin 2004StatutMembreDernière intervention 6 octobre 2004 2 juil. 2004 à 14:42
Ca marche très bien !
Merci bien !
djlex03
Messages postés12Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention16 juin 2008 15 mai 2003 à 11:26
Le programme fonctionne sur les systémes Win9x et Win NT (2000, XP...), car il utilise l'API de windows pour accéder au port série.
MangaII
Messages postés129Date d'inscriptiondimanche 9 décembre 2001StatutMembreDernière intervention12 janvier 2009 15 mai 2003 à 10:02
Salu !
Ton système fonctionne sur tous les système ? win 9x ? NT ? 2000 ? XP ?
19 févr. 2016 à 02:42
5 janv. 2013 à 13:00
http://mixandtec.free.fr/articles/artnorm1_1.php
5 janv. 2013 à 12:40
Les fichiers sources LSerie.cpp et LSerie.h ne sont pas disponibles ainsi que le programme SerialTest.exe, pouvez vous les ajouter merci
28 avril 2012 à 10:09
http://www.siteduzero.com/forum-83-758743-p1-communication-port-serie.html#r7303079
27 avril 2012 à 19:40
Sa me fera un plaisir si quelqu'un peut m'aider car j'ai 3 mois de stage or j'ai deja fais 2 mois sans avancement.
Cordialement!
21 avril 2012 à 08:52
21 avril 2012 à 08:46
11 mars 2012 à 15:13
Pouvez vous m'aidez car j'en ai besoin pour ma soutenance.
merci et cordialement!
9 mars 2012 à 21:21
Pouvez vous m'aidez car j'en ai besoin pour ma soutenance.
merci et cordialement!
30 déc. 2011 à 10:02
17 mai 2010 à 23:23
17 mai 2010 à 20:16
Merci
3 mai 2010 à 14:23
Quelqu'un peut-il m'aider???? Vite.........
int void main(int argc, char *argv[]){
com = new LSerie();
// Tentative d'ouverture du port COM2 à une vitesse de 9600 bauds (8bit, 1bit de stop et pas de parité).
if( !com->open(2, 9600) )
{
MessageBox("Port Com indisponible", "SerialTest : Erreur!");
return;
}
// Envois d'une chaine de caractères:
std::string stdString("Message à transmettre");
if( com->sendData(&stdString) < 0 )
{
MessageBox("Envois de données imposssible", "SerialTest : Erreur!");
return;
}
system("pause");
}
3 mai 2010 à 13:53
comment faire un simple programme d'envoi et de reception sur le port série....
je veux le programme main principale....est ce je dois inclure "LSerie.h" et "LSerie.cpp" ???
comment faire la liaison de mon programme principale avec LSerie.h et LSerie.cpp
merci
24 mars 2010 à 19:54
meme plusieurs années apres la publication de ta classe, merci car elle me rend bien service
4 nov. 2009 à 23:48
je travaille avec GNU C++ codeblock
je n'ai pas stadfx etc..
puis je m'en passer ou est ce obligatoire
merci
30 oct. 2009 à 17:04
j'ai téléchargé les sources, mais j'ai des pbs.
J'ai une dalle tactile reliée à un adaptateur série-usb, mon PC la voit reliée au port COM2.
Qd j'essaye d'envoyer des commandes avec hyperterminal, ça marche tres bien, je reçois les reponses, et j'ai pu voir les échanges avec portmon.
Sauf qu'avec l'API Lserie,si j'envoie une commande (exemple "V"), je ne reçois rien.
je vois la commande qui est envoyée avec succès avec portmon, et tous les read qui suivent sont "timeoutés".
Quelqun a t-il une idée sur la cause du pb?
Merci beaucou
28 mars 2009 à 23:38
Je cherchais justement un code qui fait me permet de communiquer avec le port serie via un programme de visual C++.
J ai donc telecharger le tien mais j'ai un message d'erreur qui dit:
"fatal error C1083: Cannot open include file: 'afxwin.h': No such file or directory"
Pourrais-tu me conseiller STP
Merci
17 juin 2008 à 16:33
PS: j'avé testé sous hyperterminal avant le cable été bon et le caractere aussi!!
encore merci a la prochaine.
16 juin 2008 à 18:42
As-tu essayé d'envoyer les caractères avec le programme hyperterminal de Windows ?
Utilise-tu un câble série fourni par le fabricant du matériel ? dans le cas contraire tu as peut être besoin d'un câble croisé type nullmodem.
Pour les caractères, as-tu essayé en minuscules et majuscule ?
16 juin 2008 à 11:08
Es que le fait que je soit sur un support autre que Visual c++ pourrait me bloquer
15 juin 2008 à 14:54
mais parametres sont
vitesse: 9600 bits
arrêt: 1 bits
controle de flux: aucun
donnée: 8 bits
Si tu as des idées a me proposer n'hésite pas!
je te tien au courant lundi si ca marche ou pas!!
13 juin 2008 à 18:52
Quels paramètres de liaison série as-tu utilisé ?
Il faut peut être envoyer un retour charriot en fin de chaine, essaye d'envoyer les chaines suivantes : "T1\r\n" ou "T1\n" ou "T1\r".
13 juin 2008 à 08:51
int test_com_envoie()
{
LSerie *ls;
std::string stdString("T1");
return ls->sendData(&stdString);
}
il ce pose un problème, il ne ce passe pas ce qu'il devrait passer ^^) en effet le caractère "T1" permet de mettre a zero l'indicateur, tant que je n'ai pas réussi à le faire je sais donc que cela n'a pas fonctionné !!
D'où peut venir mon problème
-l'indicateur ne comprend pas les cstring?
-mon compilateur ne fait pas ce qu'il faut (pb de librairie?)
PS: dans LSerie.cpp cette ligne (#include <stdafx.h>) me génère une foule d'erreurs je l'ai
donc mise en commentaire es que l'erreur peut venir de là et comment là regler !?!
merci d'avance !!
12 juin 2008 à 22:05
je te tiendrais au courant si le test c'est bien passé ou pas
a plus.
12 juin 2008 à 20:08
std::string stdString("P1");
if( com->sendData(&stdString) < 0 )
{
MessageBox("Envois de données imposssible", "SerialTest : Erreur!");
return;
}
12 juin 2008 à 20:03
djlex03
12 juin 2008 à 10:44
j'aurais un service a vous demander, je suis en trin d'établir la connections avec mon indicateur "MAGIC" de chez MasterK, je suis arrivé a ouvrir le port et a le configurer, mais mon problème ce situe dans l'envoie (sendData) et donc par la même occasion sur la réception (receiveData)il faut que j'envoie a mon indicateur "P1" pour par exemple pour qu'il me retourne le poids, je ne sais pas ce que je doit envoyer comme type de paramètre pour la fonction [int sendData(string* data)].
si vous pourriez me dire comment créer un paramètre de type (string* data) ce que je dois inclure et comment lui donner la valeur "P1" ça me serais bien utile.
Merci d'avance.
19 nov. 2007 à 15:25
14 sept. 2007 à 21:37
Merci!
23 juil. 2006 à 01:24
30 mai 2006 à 19:47
- receiveData(DWORD lg, LPBYTE data):
char tab[100];
receiveData(tab, 100)
- receiveData(string* data)
std::string chaine = new string();
receiveData(chaine);
char* tab = chaine.c_str()
Je n'ai pas de compilateur C++ d'installé sur mon pc (ca fait longtemp que je ne programme plus en C++), je ne peut donc pas tester ce code. Je le donne juste à titre indicatif.
30 mai 2006 à 19:32
30 mai 2006 à 19:29
On peut éventuellement arriver à reconnaitre certaines PWM en paramétrant le port de manière astucieuse, mais c'est tout.
Pour avoir des entrées sorties binaires directes il vaut mieux utiliser le port parallèle ou une interface de conversion série - parallèle.
22 mai 2006 à 20:41
22 mai 2006 à 18:51
22 mai 2006 à 15:54
Donc pas de souci, la classe fonctione nikel chrome.
La question sur RX reste entière!
21 mai 2006 à 16:36
J'ai tout de même un enorme problème avec cette classe:
Lorsque je met via la ligne tx un niveau 1 et que TX est relié à RI, lorsque je lit RI j'ai une valeur qui fait 0 puis 1 puis 0 tout le temps, avec des lecture succésive sans toucher a la ligne TX.
Sinon est il possible de controller la ligne RX comme les lignes DSR et autres?
10 mai 2006 à 21:25
13 mars 2006 à 10:14
Je crois qu'il y a une petite erreur dans la fonction membre open(...)
//Vérification de la parité: 0 pas de vérif, 1 pair, 2 impaire.
if(nbStopBit == 0)
dcb.Parity = NOPARITY;
etc...
"nbStopBit" devrait en fait être "parity". Mais même en changeant ça, j'ai le comportement étrange suivant.
J'utilise le bout de code suivant :
#define COM 1
#define BAUD 19200
Lserie * com=new LSerie();
string szDia="DIA\r";
if( !com->open(COM, BAUD) )
Message d'erreur 1
if( com->sendData(&szDia) < 0 )
Message d'erreur 2
if (com->receiveData(&szBuffer)<=0)
Message d'erreur 3
Il s'agit d'envoyer à un appareil connecté au port série la commande "DIA" terminée par un retour de chariot, et l'appareil répond. Si je lance le programme, j'obtiens le troisième message d'erreur, et en effet szBuffer est vide et ne contient pas la réponse de l'appareil.
Par contre, si avant de lancer le programme, je me connecte à l'appareil avec hyperterminal et que j'envoie la commande "DIA\r", je reçoit bien une réponse de l'appareil. Ensuite, si je ferme hyperterminal, mon programme fonctionne sans problème. Il faut donc systématiquement que je me connecte d'abord avec hyperterminal avant de pouvoir utiliser mon programme en C++, ce qui est assez ennuyeux. Auriez-vous une idée sur l'origine du problème?
Merci
22 mai 2005 à 13:59
>>>bonjour j'ai une demande un peu particulière, j'utilise des capteurs branché sur port serie Com >>>1 et 4. ils sont géré par thread . ca marchait super bien sur CE mais je suis passé sur >>>embedded XP et maintenant la com arrive à me planter de chez planter mes capteurs c'est à dire >>>que mon capteur ne dialogue plus dutout . j'ai bien sur fait attention au : aprè la definition >>>des com (càd com1: -> com1) savez vous si il y une différence fondamentalle sur la gestion de >>>com ?
Bonjour, je n'ai pas travaillé sur le système embedded XP, je ne pourrais donc pas vous renseigner. Cependant, je pense qu'il serait interessant de voir si le problème persiste en ne faisant tourner qu'un seul thread.
22 mai 2005 à 13:49
>>>slt, je viens de dl les fichier L_SERIE.h et L_SERIE.cpp
>>>et j'ai un peu de mal a utiliser la fonction SendData
>>>Je dois envoyer la trame qui suit "PL,1 et le retour chariot(0x0D)"
>>>si quelqun pourrait m'aider.
Bonjour, Avec la nouvelle version de la librairie lserie (lSerie.h et lSerie.cpp), tu devrais pouvoir le faire avec ce code:
com = new LSerie();
if( !com->open(1, 9600) )
{
MessageBox("Port Com indisponible", "SerialTest : Erreur!");
return;
}
std::string stdString("PL,1\n");
if( com->sendData(&stdString) < 0 )
{
MessageBox("Envois de données imposssible", "SerialTest : Erreur!");
return;
}
10 mai 2005 à 14:01
merci @ ++
6 mai 2005 à 20:39
et j'ai un peu de mal a utiliser la fonction SendData
Je dois envoyer la trame qui suit "PL,1 et le retour chariot(0x0D)"
si quelqun pourrait m'aider.
Merci d'avance ;)
17 oct. 2004 à 13:20
2 juil. 2004 à 14:42
Merci bien !
15 mai 2003 à 11:26
15 mai 2003 à 10:02
Ton système fonctionne sur tous les système ? win 9x ? NT ? 2000 ? XP ?