/ / Port série virtuel sur Linux via TCP [fermé] - Linux, TCP, port série, matériel, port série virtuel

Port série virtuel sur Linux via TCP [fermé] - Linux, TCP, port série, matériel, port série virtuel

Avec l'émulateur de ports série virtuels, je peux

  • Créer un connecteur de port série virtuel
  • Choisissez un port, par exemple. COM35 pour le connecteur
  • Créer un serveur TCP
  • Attribuer le port série virtuel créé précédemment au serveur

entrer la description de l'image ici

Les clients peuvent ensuite établir une connexion de flux au serveur TCP en connaissant l'adresse IP, le port TCP et le nom du port série virtuel.

Dans l'exemple ci-dessus, j'ai créé une application MICRO_Test (c ++) qui se connecte simplement au port série virtuel. Lorsque j'écris des données sur ce port, elles seront reçues par tous les clients.

Vous pouvez le voir dans le journal dans l'image ci-dessus.


Alors que cela est sur les fenêtres, Existe-t-il un moyen d'obtenir un comportement équivalent sur les machines Linux?

Pour résumer:

Some binary code (as interface for e.g. webservices)
|
|
| [send/receive via virtual com port]
|
|
TCP Server & COM connector (multiple instances possible with different ports)
|          |          |
|          |          |
|          |          |
Client 1   Client 2   Client X

Les clients lisent des données physiques à partir de leurs ports de communication réels et les envoient au serveur via le flux TCP.

Pour Linux, j'ai beaucoup lu sur socat, tty et ser2net. Cependant, je ne peux pas vraiment comprendre comment réaliser une architecture comme ci-dessus sur Linux? Pouvez-vous m'aider avec quelques informations?

Réponses:

2 pour la réponse № 1

En théorie, vous pouvez utiliser Python avec PySerial paquet. Il peut gérer les ports COM, RFC2217 (ser2net) et les connexions brutes TCP (socat).

Par exemple, vous commenceriez socat sur tous les clients avec du matériel réel et vous y connecter via un script Python.

Cette déclaration ouvre le socket brut:

tcp_con = serial.serial_for_url("socket://<my_ip>:<my_port>")