Usando um pipe nomeado para simular uma porta serial em uma máquina virtual VMware (host e cliente Linux)

Usando um pipe nomeado para simular uma porta serial em uma máquina virtual VMware (host e cliente Linux)

Tentando escrever um programa python para criar um fluxo de dados simulado e alimentá-lo, por meio de um canal nomeado, para uma máquina virtual VMware. O host está executando o Ubuntu 11.10 e o VMware player 5.0.0. O VM está executando o netbook Ubuntu 10.04. Consigo fazer o pipe funcionar na máquina local, mas não consigo fazer com que o pipe passe dados através da porta serial virtual para os programas em execução na 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 ))
  • Teste para ver se o programa python está funcionando na máquina host (exibe 235959 se os dados estiverem passando pelo canal)

$ gato /tmp/gpsd2NMEA
235959

  • Porta serial conforme definido no arquivo VMware .vmx:

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

  • Teste para ver se a porta serial na VM está recebendo dados

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

  • Nenhum deles exibe dados do programa python.

informação relacionada