Có một số very similar thread trên danh sách gửi thư của Python đề cập đến Windows virtual COM ports và thảo luận về khả năng giả mạo của Unix. Nếu (các) ứng dụng bạn muốn sử dụng cho phép bạn nhập vào một tệp thiết bị tty cụ thể, đây có thể là tuyến đường dễ nhất. (Yêu cầu tác giả cung cấp API plugin cho những gì bạn đang cố gắng làm hoặc mua cho mình một số $20 bluetooth GPS mouse.)
Bạn đang sử dụng OS X?
Có một dự án macosxvirtualserialport trên mã Google cung cấp trình bao bọc đồ họa xung quanh một số tính năng của tiện ích được gọi là socat. Tôi khuyên bạn nên xem xét socat nếu bạn thấy tiềm năng trong tuyến đường giả. Tôi tin rằng bạn có thể sử dụng socat để liên kết một đường ống từ một chương trình Python đến một pseudo-tty.
Hầu hết các ứng dụng Mac gốc sẽ truy vấn IOServiceMatching cho thiết bị có kIOSerialBSDRS232Type và tôi nghi ngờ rằng một pseudo-tty sẽ hiển thị dưới dạng dịch vụ IOKit.
Trong trường hợp này, trừ khi bạn có thể tìm thấy dự án đã triển khai một điều như vậy, bạn sẽ cần triển khai trình điều khiển như được mô tả trong luồng How to create virtual COM port này. Nếu bạn đang gặp rắc rối khi tạo một trình điều khiển thiết bị, bạn sẽ muốn căn cứ vào IOKit vì có khả năng truy vấn IOServiceMatching đó. Bạn có thể tìm thấy dự án Apple16X50Serial được đề cập trong bài đăng đó ở trên cùng của Apple's open source code list (truy cập main page và chọn bản phát hành OS cũ hơn nếu bạn muốn nhắm mục tiêu thứ gì đó trước 10.6).
Nếu ứng dụng của bạn hữu ích nhất với dữ liệu thời gian thực (ví dụ: ứng dụng RouteBuddy được đề cập trong chuỗi danh sách gửi thư của Python can log current positions) thì bạn sẽ muốn tìm nạp nội dung cập nhật từ nguồn web của mình (hy vọng chúng hỗ trợ việc bỏ phiếu dài) và chuyển đổi chúng thành cơ bản NMEA câu RMC. Bạn không muốn làm điều này từ bên trong mã trình điều khiển của bạn. Thay vào đó, hãy chia công việc của bạn thành các phần đất nhân và đất của người dùng có thể giao tiếp và đặt ít mã nhất có thể vào phần hạt nhân.
Nếu bạn muốn cho phép cả ứng dụng đọc và ghi vào các dịch vụ web này, đặt cược tốt nhất của bạn có thể là để mô phỏng thiết bị Garmin. Garmin đã có nhiều tài liệu hơn về giao thức của mình trong tệp IntfSpec.pdf kèm theo Device Interface SDK. Một lần nữa, bạn muốn chia nhỏ nhiều nhất có thể thành mã không gian người dùng.
Tôi không thể tìm thấy một dự án hoặc tiện ích thực hiện phía hạt nhân của giao diện nối tiếp ảo dựa trên IOKit, nhưng tôi sẽ ngạc nhiên nếu không có một nơi nào đó ẩn ở đó. Thật không may, hầu hết các câu trả lời tôi tìm thấy câu hỏi đó là như thế này, với các nhà phát triển được cho biết để có được bận rộn writing a kext.
Khi không có giải pháp Python chính xác cho câu hỏi của tôi, tôi đã bắt đầu Dự án trên Google Code sau đây, nơi tôi sẽ sao chép thông tin/mã tôi tìm thấy: http://code.google.com/p/python-virtualgps/ –
GPSD đã chuyển đến một địa điểm mới: https://savannah.nongnu.org/projects/gpsd –