嘗試編寫一個 python 程式來建立模擬資料流,並透過命名管道將其提供給 VMware 虛擬機器。主機運行Ubuntu 11.10和VMware Player 5.0.0。該虛擬機器運行的是 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 =“真”
serial0.yieldOnMsrRead =“真”
- 測試虛擬機器串口是否有資料接收
$ cat /dev/ttyS0
或
$ minicom -D /dev/ttyS0
或
$ stty -F /dev/ttyS0 cs8 -parenb -cstopb 115200
$ echo < /dev/ttyS0
- 這些都不顯示來自 python 程式的任何資料。