2009-11-02 39 views
7

Có thể lấy dữ liệu vị trí ra khỏi Google Gears, Google Gelocation API hoặc bất kỳ API vị trí web nào khác (chẳng hạn như Fire Eagle) ở định dạng như vậy với phần mềm khác như thiết bị GPS không?Giả lập GPS hoặc thiết bị nối tiếp

Đã xảy ra với tôi khi đọc số these answers cho câu hỏi của tôi về tìm vị trí WiFi, trên Super User, nếu tôi có thể mô phỏng một đơn vị GPS, nhiều dịch vụ web này có thể hoạt động như một GPS 'nghèo'. phần mềm yêu cầu nó.

Có phải là tùy chọn GPSD không?

Tốt hơn là OSX & Python, nhưng tôi sẽ quan tâm đến bất kỳ triển khai nào.

+0

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/ –

+0

GPSD đã chuyển đến một địa điểm mới: https://savannah.nongnu.org/projects/gpsd –

Trả lời

4

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.

+0

Một số công cụ thực sự hữu ích ở đó, cảm ơn. Tôi thực sự đang sử dụng OSX (thêm chi tiết vào câu hỏi gốc). –

+0

Một con chuột gps $ 20 là một điểm tốt (và một 'người nghèo-mans gps tuyệt vời!), Nhưng mục tiêu tổng thể của tôi là cung cấp một' dòng dữ liệu GPS ảo 'từ API web không GPS. –

+0

Là một sang một bên, tôi thực sự đã không nhận ra như thế nào giá rẻ GPS dongle bây giờ là: http://www.amazon.co.uk/s/ref=nb_ss_0_6?url=search-alias%3Daps&field-keywords=gps+receiver –

2

Tôi không chắc chắn làm thế nào để hoàn thành những gì bạn đang yêu cầu, nhưng tôi có thể cho một số hiểu biết về cách bạn có thể bắt đầu để hoàn thành. Vì vậy, ở đây đi:

Thiết bị GPS hiển thị tối đa hầu hết các hệ thống không có gì ngoài thiết bị nối tiếp - a.k.a. cổng COM nếu bạn đang xử lý Windows,/dev/ttySx nếu bạn đang ở * nix. Theo định nghĩa, nhiệm vụ cụ thể của cổng nối tiếp là truyền dữ liệu qua một bus, một khối tại một thời điểm. Vì vậy, sau đó nó sẽ theo một cách hợp lý rằng nếu bạn muốn mô phỏng sự hiện diện của một thiết bị GPS, bạn nên thu thập dữ liệu bạn đang tiêu thụ và đặt nó vào một luồng mà bằng cách nào đó hoạt động như một cổng nối tiếp đang hoạt động.

Có, tuy nhiên, một số biến chứng bạn có thể muốn xem xét:

  • Hầu hết các thiết bị GPS không chỉ gửi dữ liệu vị trí; cũng có thông tin về vị trí vệ tinh, chất lượng sửa chữa, ổ trục, v.v. Sau đó, một lần nữa, không ai thực hiện bất kỳ quy tắc nào nói rằng bạn để cung cấp tất cả dữ liệu đó. Có lẽ nhiều hơn thế, nhưng tôi thừa nhận rằng tôi cần tự nghiên cứu thêm về lĩnh vực này.
  • Tôi không biết bạn có thể nhận dữ liệu nhanh như thế nào khi giao dịch với Google Latitude, v.v. nhưng mọi sự chậm trễ trong việc nhận sẽ dẫn đến tạm dừng có thể nhìn thấy trong luồng dữ liệu "cổng nối tiếp" của bạn. Một lần nữa, điều này có thể không phải là một biến chứng lớn như nó có vẻ, bởi vì các thiết bị GPS được biết là "burst" dữ liệu trên xe buýt anyway, nhưng tôi chắc chắn sẽ giữ một mắt trên đó. Bạn muốn đảm bảo luôn có một lượng dữ liệu dư thừa, không phải thiếu hụt.

Trên đường đi, bạn cũng sẽ phải chuyển đổi tọa độ bạn nhận được thành các câu GPS hợp lệ. Bạn có thể tìm thấy thông số kỹ thuật cho những người đó, nhưng tôi chắc chắn sẽ kết bạn với tiêu chuẩn NMEA - mặc dù nó là một tiêu chuẩn thiếu sót, nhưng đó là điều mà mọi người dường như đồng ý.

Hy vọng điều này sẽ giúp bạn, ít nhất một chút. Có chi tiết cụ thể nào khác cho vấn đề của bạn mà bạn nghĩ có thể hữu ích khi trả lời câu hỏi này không?

+0

Cũng lưu ý: Tôi không quá quen thuộc với GPSD, nhưng có, nó có thể là một lựa chọn cho bạn nếu tôi hiểu bạn một cách chính xác, cho những gì bạn đã đề cập trong câu hỏi của bạn. –

+1

Một số chi tiết tốt ở đó - có bất kỳ thư viện/sản phẩm hiện có nào có thể mô phỏng các cổng nối tiếp không? –

+0

Đã thêm một số chi tiết khác. mục tiêu của tôi cho câu hỏi ban đầu. –

0

Tôi chưa xem xét nhiều, nhưng bạn đã cân nhắc sử dụng Skyhook's SDK chưa? Nó có thể cung cấp cho bạn một số những gì bạn đang tìm kiếm. Nó có sẵn cho tất cả các hệ điều hành máy tính để bàn và di động lớn.

+0

Skyhook có GPS 'ảo' (có thể tải xuống sau khi bạn đăng ký), tương tự như cổng Franson GPS nhưng Windows/mobile chỉ –

1

Hãy xem Franson GPS Gate cho phép bạn kết nối với Google Earth trong số những thứ khác (như mô phỏng GPS, v.v.). Là cửa sổ chỉ mặc dù nhưng tôi nghĩ rằng bạn có thể nhận được một số ý tưởng hữu ích từ nó.

+0

Đây chính xác là thứ tôi đang tìm kiếm, nhưng lý tưởng là mã nguồn hoàn thành nó. Tốt thứ mặc dù :) –

Các vấn đề liên quan