Connexion de Port série Entre l'Hôte et son Invité avec Virtualbox
Je suis en train d'apprendre à écrire du code C qui va lire le port série sous Linux. J'ai trouvé ce qui semble être un bon tutoriel ici.
Je veux être en mesure de tester ce code, donc je pense que j'ai besoin d'un port série, ou une manière d'écrire sur le port série, tandis que le code ci-dessus est la lecture.
Je suis sur Ubuntu 10.04 en tant que machine virtuelle sur mon Mac à l'aide de virtualbox. Mon idée était de mettre en place une série virtuel de connexion et d'écriture entre l'hôte et l'invité. Espérons que quelque chose d'aussi simple que de cat "Hello World" > /tmp/fake_serial
dans un terminal hôte, et, pour que ce soit lu par le programme dans le lien ci-dessus.
Est-ce possible? J'ai essayé d'ajouter un port série à l'aide de virtual box et lorsque je tente d'exécuter la commande ci-dessus, j'obtiens un message d'erreur disant que je ne peux pas écrire à un socket.
La deuxième option, j'ai pensé est d'utiliser quelque chose comme minicom
à l'intérieur de l'OS invité à vous connecter à dire /dev/ttyS1
et écrire des messages pour mon code pour lire en même temps. Encore une fois, en supposant que le taux de transmission et les autres paramètres sont OK, serait-ce possible?
Je n'ai pas beaucoup d'expérience de travail avec les ports série, donc j'apprécierais toutes les suggestions sur la meilleure façon de le faire. Merci à l'avance.
OriginalL'auteur James | 2013-04-08
Vous devez vous connecter pour publier un commentaire.
Afin de le faire fonctionner j'ai juste ajouté une autre machine virtuelle Ubuntu sur VirtualBox, et relié les deux ensemble via un port série virtuel. Mon principal, la machine virtuelle d'origine, que j'utilise beaucoup de développement sera dénommé VM1. La nouvelle machine virtuelle, avec un petit hardrive qui ne sera utilisé pour l'envoi de messages à VM1 sera appelé VM2. Ce sont à la fois Ubuntu 10.04 VMs.
Dans VirtualBox aller dans les Paramètres pour VM1, aller vers les ports, et de modifier les paramètres comme suit:
Maintenant, allez à VM2, et sélectionnez paramètres, ports, modifier comme suit:
Maintenant, tout d'abord vous avez besoin pour commencer VM1. Une fois démarré puis démarrage VM2. Maintenant, vous pouvez ouvrir un terminal dans VM1, et le type
screen /dev/ttyS0 38400
(vous devrez peut-être exécutersudo apt-get install screen
avant que cela fonctionne). Ensuite, allez à VM2, ouvrez un terminal et tapezecho "Hello" > /dev/ttyS0
.Vous devriez voir
Hello
apparaissent dans le terminal, ouvert en VM1. Lorsque vous avez terminé l'exécution de l'écran appuyez surctrl-a k
pour le tuer, sinon, si vous essayez de faire d'autres trucs avec le port série, vous pouvez obtenir un message d'erreur disant que le port est occupé.Cela fonctionne pour moi, tant que je sudo avec l'écran de commande: "sudo écran /dev/ttyS0 38400"
OriginalL'auteur James
Lorsque j'ai eu à faire quelques port série de test à partir de mon réel de la machine virtuelle j'ai fini par faire une "boucle" essais de type. J'ai pris deux USB-Série de convertisseurs et un RS232 F-F adaptateur et connecté mon ordinateur à lui-même. Puis dans VirtualBox sous Paramètres->USB, vous pouvez acheminer un des deux ports USB-Série de convertisseurs d'être "possédé" par votre VirtualBox.
Une fois que vous branchez dans les convertisseurs un va enregistrer avec le Mac et l'autre avec Ubuntu "ordinateur", puis vous pouvez le faire en série de la communication normale entre les deux machines.
Vous pouvez également être en mesure de émuler un port série virtuel à l'aide d'un pty ("pseudo-teletype" de l'appareil), mais je ne suis pas positif sur celui-là car je crois que la capacité de faire qui a été verrouillé vers le bas dans les noyaux plus récents.
OriginalL'auteur Mike
J'ai couru dans une situation similaire à l'exécution d'un QNX invité à l'aide de VirtualBox 5.0.10 sur une Ubuntu 14.04 hôte.
Ma solution semble assez générale pour s'appliquer à l'affaire précitée.
J'ai configuré la machine virtuelle invitée de la même manière que Kells1986 installation de son VM1:
Dans le cadre du "Serial Ports"/"Usb1" onglet:
Selon la VirtualBox manuel:
Un
domain socket
est un Mécanisme IPC sur les systèmes UNIX semblable à un tuyau.Je me suis connecté à la "pipe" à la fin de la port série virtuel sur Ubuntu hôte à l'aide de la
socat
commande:OriginalL'auteur Safayet Ahmed