시뮬레이션된 데이터 스트림을 생성하고 이를 명명된 파이프를 통해 VMware 가상 머신에 공급하는 Python 프로그램을 작성하려고 합니다. 호스트는 Ubuntu 11.10 및 VMware 플레이어 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 표시).
$ 고양이 /tmp/gpsd2NMEA
235959
- VMware .vmx 파일에 정의된 직렬 포트:
serial0.present = "TRUE"
serial0.startConnected = "TRUE"
serial0.fileType = "파이프"
serial0.fileName = "/tmp/gpsd2NMEA"
serial0.pipe.endPoint = "클라이언트"
serial0.autoDetect = "FALSE"
serial0.tryNoRxLoss = "TRUE"
serial0.yieldOnMsrRead = "TRUE"
- VM의 직렬 포트가 데이터를 수신하고 있는지 테스트합니다.
$ cat /dev/ttyS0
또는
$ minicom -D /dev/ttyS0
또는
$ stty -F /dev/ttyS0 cs8 -parenb -cstopb 115200
$ echo < /dev/ttyS0
- 이들 중 어느 것도 Python 프로그램의 데이터를 표시하지 않습니다.