Verwenden einer Named Pipe zum Simulieren eines seriellen Ports auf einer virtuellen VMware-Maschine (Linux-Host und -Client)

2557
Dave M

Versuch, ein Python-Programm zu schreiben, um einen simulierten Datenstrom zu erstellen und über eine Named Pipe zu einer virtuellen VMware-Maschine zu leiten. Auf dem Host werden Ubuntu 11.10 und VMware Player 5.0.0 ausgeführt. Auf der Vm läuft Ubuntu Netbook 10.04. Ich kann die Pipe auf der lokalen Maschine zum Laufen bringen, aber ich kann die Pipe nicht dazu bringen, Daten über den virtuellen seriellen Port an die Programme zu übergeben, die auf der virtuellen Maschine ausgeführt werden.

 #!/usr/bin/python import os # # Create a named pipe that will be used as the serial port on a VMware virtual machine SerialPipe = '/tmp/gpsd2NMEA' try: os.unlink(SerialPipe) except: pass os.mkfifo(SerialPipe)  # # Open the named pipe NMEApipe = os.open(SerialPipe, os.O_RDWR|os.O_NONBLOCK) # # Write a string to the named pipe NMEAtime = "235959" os.write(NMEApipe, str( '%s\n' % NMEAtime )) 
  • Testen Sie, ob das Python-Programm auf dem Host-Computer ausgeführt wird (zeigt 235959 an, wenn Daten die Pipe passieren).

$ cat / tmp / gpsd2NMEA
235959

  • Serieller Port wie in der VMware-.vmx-Datei definiert:

serial0.present = "TRUE"
serial0.startConnected = "TRUE"
serial0.fileType = "pipe"
serial0.fileName = "/ tmp / gpsd2NMEA"
serial0.pipe.endPoint = "client"
serial0.autodetect = "FALSE"
serial0.tryNoRxLoss = "TRUE"
serial0.yieldOnMsrRead = "TRUE"

  • Testen Sie, ob der serielle Port in der VM Daten empfängt

$ cat / dev / ttyS0
oder
$ minicom -D / dev / ttyS0
oder
$ stty -F / dev / ttyS0 cs8 -parenb -cstopb 115200
$ echo </ dev / ttyS0

  • Keines davon zeigt Daten aus dem Python-Programm an.
3

0 Antworten auf die Frage