Sử dụng một ống có tên để mô phỏng một cổng nối tiếp trên máy ảo VMware (máy chủ và máy khách linux)


3

Cố gắng viết một chương trình python để tạo một luồng dữ liệu mô phỏng và cung cấp nó, thông qua một đường ống có tên, đến một máy ảo VMware. Máy chủ đang chạy Ubuntu 11.10 và VMware player 5.0.0. Vm đang chạy netbook Ubuntu 10.04. Tôi có thể làm cho đường ống hoạt động trên máy cục bộ nhưng tôi không thể lấy đường ống để truyền dữ liệu qua cổng nối tiếp ảo đến các chương trình chạy trên máy ảo.

  #!/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 ))
  • Kiểm tra xem chương trình python có hoạt động trên máy chủ không (hiển thị 235959 nếu dữ liệu được truyền qua đường ống)

$ mèo / tmp / gpsd2NMEA
235959

  • Cổng nối tiếp như được định nghĩa trong tệp VMware .vmx:

serial0.present = "TRUE"
serial0.startConnected = "TRUE"
serial0.fileType = "ống"
serial0.fileName = "/ tmp / gpsd2NMEA"
serial0.pipe.endPoint = "khách hàng"
serial0.autodetect = "FALSE"
serial0.tryNoRxLoss = "TRUE"
nối tiếp0.yieldOnMsrRead = "TRUE"

  • Kiểm tra xem cổng nối tiếp trong VM có nhận dữ liệu không

$ cat / dev / ttyS0
hoặc
$ minicom -D / dev / ttyS0
hoặc
$ stty -F / dev / ttyS0 cs8 -parenb -cstopb 115200
$ echo </ dev / ttyS0

  • Không ai trong số này hiển thị bất kỳ dữ liệu nào từ chương trình python.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.