Écouter les Ports de Com série qui sont utilisés

Je m'occupe de certains systèmes existants qui utilisent RS232 pour communiquer avec les périphériques. Je n'ai pas l'habitude de COM interfacer. J'ai un code qui peut ouvrir et utiliser des ports COM, mais il ne peut pas ouvrir des ports qui sont utilisés par d'autres applications. J'ai besoin de la boîte noire des paquets pour que nous puissions utiliser le même protocole pour les communications mises à jour.

y a-t-il un moyen de "middle man" les paquets entrants vers un port COM ouvert et de détecter quels paquets sont envoyés? J'utilise .NET, mais je suis ouvert à tout type de solution.

(j'ai trouvé là, mais je ne pense pas que cela fonctionne pour moi.)

18
demandé sur Daniel 2009-05-27 18:05:57

4 réponses

j'ai utilisé com0com - c'est génial pour configurer les ports com virtuels-ce qui ne vous aide pas du tout.

l'interface du port COM est essentiellement une 'lecture de fichier'. Mon application lance une exception quand j'essaie de me connecter à un port COM qui a déjà une autre instance en lecture. Je ne suis pas sûr que vous pourriez essayer de l'ouvrir comme une "lecture seulement" au lieu de lire-écrire, mais il vaut la peine d'essayer.

Vous devriez être en mesure d'écrire un port com virtuel qui peut bifurquer vos données à un le fichier de log. Com0com est open-source, donc vous pouvez l'utiliser comme point de départ.

une autre solution possible pourrait être de ramasser un rs232 câble répartiteur bifurque le signal de série vers un autre port de série.

Ou encore une autre possibilité est un numéro de Série Espion program (ou open source sniffer).

Ou essayez le hub4com app depuis le même site com0com!

13
répondu Kieveli 2009-05-27 14:44:01

Est-il possible de "l'homme du milieu"

Oui, il ya beaucoup de. Fortement soutenu dans Windows par le concept d'un"pilote de filtre". Un tel pilote peut être inséré avant un pilote qui reçoit des demandes d'E/S et voit tout ce qui passe. Normalement destiné à modifier les demandes d'E/S mais aussi très approprié pour simplement contrôler les demandes. L'homme dans le milieu.

L'exemple canonique d'un tel driver est le vénérable SysInternals' PortMon utilitaire. Affiche tout ce qu'une application envoie et reçoit vers/depuis un port série, y compris la configuration et les données. Il existe de nombreuses applications de ce type, il suffit de Google "pilote de filtre de port en série" (lourd sur les échantillons de code source) et "moniteur de port en série".

On note de bas de page avec ceci, vous avez tendance à avoir un problème sur une version 64 bits de Windows. La grande majorité de ces applications, y compris PortMon, ne fonctionnent que sur la version 32 bits. La version 64 bits n'autorise que les pilotes certifiés à être installé, il y a très peu d'argent dans la vente de ces applications pour justifier la dépense. Méfiez-vous de cela lorsque vous magasinez.

10
répondu Hans Passant 2015-01-19 15:49:02

j'ai été en bas de cette même chemin. Un séparateur matériel est la solution la plus facile.

hub4com setup impliquera l'Assistant "Add New Hardware". Si vous avez beaucoup de machines, des machines géographiquement séparées, ou des utilisateurs qui ne sont pas techniquement savvy et ne disposent pas des permissions nécessaires, l'installation pourrait être maladroite.

si c'est une application ancienne, est-ce qu'elle fonctionne en ntvdm? Si oui, vous pouvez l'exécuter dans DosBox à la place et modifier le code de la boîte de réception pour écrire à un fichier en plus de l'envoi/réception vers/depuis le port série. DosBox est également une plateforme croisée.

4
répondu R Ubben 2009-05-27 15:52:03

vous pouvez aussi utiliser TCPcom pour convertir les données en paquets Ethernet et les surveiller avec Wireshark - et aussi les diffuser ailleurs. Vous utilisez alors une autre instance de TCPcom pour la transmettre à n'importe quel port com que vous aimez - y compris un port com virtuel. Maintenant, vous avez essentiellement détourné les données via Ethernet. https://sourceforge.net/projects/combytcp/?source=directory

0
répondu Ken 2016-03-30 13:39:56