2010-02-03 21 views
4

Actuellement, j'ai besoin de développer un programme qui communiquera avec les appareils Cisco sur la ligne série. Je veux construire un environnement de test sur ma machine linux de développement. Donc, j'ai trouvé dynamips cisco émulateur. Cet émulateur peut fournir une interface via une ligne série avec l'option '-U/dev/ttyS0'. Eh bien, cela provoque dynamips pour ouvrir le port série du matériel et communiquer via lui. Je peux me connecter à ce port série matériel à partir d'une autre machine Linux avec un client série comme minicom.Bouclage de port série de logiciel sur Linux

Cependant, comme j'utilise virtualbox pour les deux machines linux, je relie les ports série via la capacité de virtualbox pour transférer le port série vers le canal nommé. Ce système semble fonctionner, mais très redoutant. Je cherche une méthode pour exécuter dynamips et minicom sur une seule machine Linux. J'ai trouvé que les pseudo-terminaux pourraient être utiles dans mon cas. Mais j'ai essayé de lancer des dynamops avec '-U/dev/ptmx' et ensuite de me connecter avec minicom au port/dev/pts/... créé et vice versa. Dans les deux cas, j'ai une erreur d'entrée/sortie des deux côtés.

+0

Pour quelle question ou message d'erreur spécifique demandez-vous de l'aide? –

+0

Avez-vous utilisé openpty à la fin pour cette tâche de bouclage? – lpapp

Répondre

6

Malheureusement, les pseudo-terminaux modernes ne sont pas si simples. Après avoir ouvert le maître avec posix_openpt() ou open("/dev/ptmx"), vous devez appeler le grantpt() et le unlockpt() sur le FD principal avant que celui-ci et son périphérique esclave correspondant ne soient utilisables. (Les fonctions d'utilitaire openpty() etc. simplifient cela.)

Pour contourner le problème, le socat toujours utile peut être utile.

 
# terminal 1 
socat pty:link=$PWD/pts unix-l:$PWD/ptm-pipe & 
dynamips -U $PWD/pts 

# terminal 2 
socat unix:$PWD/ptm-pipe - 
+0

Ou vous pouvez utiliser 'socat' pour ouvrir deux ptys, et joindre les deux extrémités (alors se connecter à un pty de' dynamips', et l'autre de 'minicom'). – caf

+0

Je n'ai pas 'minicom' installé, donc je ne savais pas s'il pouvait le faire. Je suis en train de lire sa page man maintenant, et il prétend travailler aussi sur les sockets UNIX! Cela éviterait complètement le second «socat». – ephemient

+0

@caf "et rejoindre la fin se termine ensemble". que voulez-vous dire et comment ferais-je cela? Un terminal ne devrait-il pas être maître et l'autre esclave? – nass