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

2502
Dave M

Попытка написать программу на Python для создания имитированного потока данных и передачи его через именованный канал на виртуальную машину VMware. На хосте работает Ubuntu 11.10 и VMware player 5.0.0. В Vm работает нетбук Ubuntu 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, если данные проходят через канал)

$ cat / tmp / gpsd2NMEA
235959

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

serial0.present = "TRUE"
serial0.startConnected = "TRUE"
serial0.fileType = "pipe"
serial0.fileName = "/ tmp / gpsd2NMEA"
serial0.pipe.endPoint = "клиент"
serial0.autodetect = "FALSE"
serial0.tryNoRxLoss = "ИСТИНА"
serial0.yieldOnMsrRead = "ИСТИНА"

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

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

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

0 ответов на вопрос

Похожие вопросы