Попытка написать программу на 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 = "ИСТИНА"
serial0.startConnected = "ИСТИНА"
serial0.fileType = "pipe"
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.