Simuler port série RS232

Résolu
alilou2955 Messages postés 8 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 4 avril 2012 - 29 oct. 2010 à 13:11
alilou2955 Messages postés 8 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 4 avril 2012 - 15 nov. 2010 à 10:19
Bonjour.
Je voudrais faire des modif/ajouts sur une application C/C++ existante. Celle-ci utilise le port série RS232 (COM1 par exemple) pour recevoir des données envoyées par des capteurs de détection de mouvement.
Pour faire mes tests, je ne veux pas attendre les signaux envoyés par ces capteurs, car je cherche à détecter des mouvements particuliers qui se produisent rarement. C'est pour cela que je cherche à simuler la réception de ces signaux en les lisant par exemple directement à partir d'un fichier xml (ou .txt pour faciliter les traitements).

Est-ce que quelqu'un a déjà sous la main un code (en C ou en C++) qui me permettra de simuler le port série RS232 en lisant directement les données à partir d'un fichier au lieu de les lire du port RS232 ? Si ce n'est pas le cas, y a-t-il quelqu'un qui peut m'aider à le faire ? Ca fait un bail depuis que je n'ai pas programmé. J'ai perdu la main .
Merci d'avance.
PS :
1) Je suis sous Windows XP ou 7.
2) J'ai déjà écrit un programme C qui lit et écrit sur les ports RS232. Si qlq en a besoin, je peux le lui envoyer. Je peux aussi vous le poster ici si vous jugez que cela peut vous aider à m'aider .

3 réponses

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
29 oct. 2010 à 17:30
L'ami google (avec "c++ com port emulator") m'a trouvé ceci en moins de 2sec.
3
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
29 oct. 2010 à 17:32
Ca ne répond pas à ta question, mais je pense que ca peut t'aider. Il te suffira de crée ton propre programme de test qui simule ton détecteur (en lisant le fichier texte).
0
alilou2955 Messages postés 8 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 4 avril 2012
15 nov. 2010 à 10:19
Bonjour.
Ce n'était pas l'idé du départ, mais fregolo52 m'a donné une autre idée (merci ). J'ai créé avec l'utilitaire "com0com" 3 paires virtuelles de ports RS232 et j'ai utilisé l'utilitaire "hub4com" pour envoyer le contenu d'un port sur les deux autres.
Pour faire un test simple, j'envoie mes données sur COM1 et j'écoute sur COM2 pour voir si je vais les recevoir ou pas. Etant donné que COM1 et COM2 appartiennent à la même paire, ce qui est envoyé sur COM1 devrait apparaître sur COM2.
Le test est presque concluant, mais j'ai un petit problème. Les messages reçus sur COM2 sont parfois un peu tronqués! Par exemple j'envoie "DETX001" puis "DETX002", puis je reçois "DETX001DE" puis "TX002". Au final, ce qui est envoyé est reçu mais malheureusement les chaînes sont tronquées, ce qui n'est pas acceptable car ces chaînes sont des commandes à envoyer à une autre application.
Le problème me semble venir du vidage du contenu du buffer du port série mais je n'arrive pas à le résoudre.

Le code source, les tests effectués et d'autres explications sont sur le lien suivant que j'ai posté hier :
Envoi sur port série(url=http://www.cppfrance.com/forum/sujet-ENVOI-SUR-PORT-SERIE_1479440.aspx).
Je vous remercie d'avance pour vos réponses ou commentaires et le temps que vous y consacrez.
0
Rejoignez-nous