在VMware虛擬機器(linux主機和客戶端)上使用命名管道模擬串口

在VMware虛擬機器(linux主機和客戶端)上使用命名管道模擬串口

嘗試編寫一個 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 程式的任何資料。

相關內容