Использование именованного канала для имитации последовательного порта на виртуальной машине VMware (хост и клиент Linux)

Использование именованного канала для имитации последовательного порта на виртуальной машине VMware (хост и клиент Linux)

Пытаюсь написать программу на Python для создания имитированного потока данных и передачи его через именованный канал в виртуальную машину VMware. Хост работает под управлением Ubuntu 11.10 и VMware player 5.0.0. Виртуальная машина работает под управлением Ubuntu netbook 10.04. Мне удаётся заставить канал работать на локальной машине, но я не могу заставить канал передавать данные через виртуальный последовательный порт в программы, работающие на виртуальной машине.

  #!/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 ))
  • Проверьте, работает ли программа Python на хост-машине (отображает 235959, если данные проходят через канал)

$ кошка /tmp/gpsd2NMEA
235959

  • Последовательный порт, определенный в файле VMware .vmx:

serial0.present = "ИСТИНА"
serial0.startConnected = "ИСТИНА"
serial0.fileType = "труба"
serial0.fileName = "/tmp/gpsd2NMEA"
serial0.pipe.endPoint = "клиент"
serial0.autodetect = "ЛОЖЬ"
serial0.tryNoRxLoss = "ИСТИНА"
serial0.yieldOnMsrRead = "ИСТИНА"

  • Проверьте, получает ли последовательный порт виртуальной машины данные.

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

  • Ни один из них не отображает никаких данных из программы Python.

Связанный контент