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


3

Es wurde versucht, ein Python-Programm zu schreiben, um einen simulierten Datenstrom zu erstellen und diesen über eine Named Pipe an eine virtuelle VMware-Maschine weiterzuleiten. Auf dem Host werden Ubuntu 11.10 und VMware Player 5.0.0 ausgeführt. Auf dem VM läuft Ubuntu Netbook 10.04. Ich kann die Pipe auf dem lokalen Computer zum Laufen bringen, aber ich kann die Pipe nicht dazu bringen, Daten über den virtuellen seriellen Port an die Programme zu übergeben, die auf dem virtuellen Computer 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 ))
  • Prüfen Sie, ob das Python-Programm auf dem Host-Computer ausgeführt wird (zeigt 235959 an, wenn Daten durch die Pipe geleitet werden).

$ 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"

  • Prüfen Sie, ob der serielle Anschluss 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 dieser Programme zeigt Daten aus dem Python-Programm an.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.