Uso de una canalización con nombre para simular un puerto serie en una máquina virtual VMware (host y cliente de Linux)

Uso de una canalización con nombre para simular un puerto serie en una máquina virtual VMware (host y cliente de Linux)

Intentando escribir un programa Python para crear un flujo de datos simulado y alimentarlo, a través de una canalización con nombre, a una máquina virtual VMware. El host ejecuta Ubuntu 11.10 y VMware Player 5.0.0. La máquina virtual ejecuta la netbook Ubuntu 10.04. Puedo hacer que la tubería funcione en la máquina local, pero no puedo hacer que la tubería pase datos a través del puerto serie virtual a los programas que se ejecutan en la máquina virtual.

  #!/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 ))
  • Pruebe para ver si el programa Python está funcionando en la máquina host (muestra 235959 si los datos pasan a través de la tubería)

$ gato /tmp/gpsd2NMEA
235959

  • Puerto serie tal como se define en el archivo VMware .vmx:

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

  • Pruebe para ver si el puerto serie de la VM está recibiendo datos

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

  • Ninguno de estos muestra datos del programa Python.

información relacionada