2009-03-31 19 views
14

Tôi đang viết một chương trình cần nhập liệu từ bộ điều khiển Xbox 360. Đầu vào sau đó sẽ được gửi không dây đến RC Helicopter mà tôi đang xây dựng.Làm cách nào để nhận dữ liệu nhập từ bộ điều khiển Xbox 360?

Cho đến nay, tôi đã học được rằng điều này có thể được thực hiện bằng cách sử dụng thư viện XInput từ DirectX hoặc khung nhập vào trong XNA.

Tôi tự hỏi nếu có bất kỳ tùy chọn nào khác có sẵn. Phạm vi của chương trình của tôi là khá nhỏ, và phải cài đặt một thư viện chơi game lớn như DirectX hoặc XNA có vẻ như quá mức. Hơn nữa, tôi muốn chương trình là nền tảng chéo và không phải của Microsoft cụ thể.

Có cách nhẹ đơn giản nào tôi có thể lấy đầu vào bộ điều khiển bằng một cái gì đó như Python?

Sửa để trả lời một số ý kiến:

Các copter sẽ có tổng số 6 cánh quạt, được sắp xếp theo cặp 3 đồng trục. Về cơ bản, nó sẽ rất giống với this, chỉ có chi phí khoảng 1.000 đô la chứ không phải là 15.000 đô la. Nó sẽ sử dụng một Arduino để xử lý onboard, và Zigbee để điều khiển không dây.

Bộ điều khiển 360 được chọn vì nó được thiết kế tốt. Nó rất tiện dụng và có tất cả các đầu vào điều khiển cần thiết. Đối với những người quen thuộc với điều khiển máy bay trực thăng, cần điều khiển bên trái sẽ điều khiển tập thể, cần điều khiển thích hợp với điều khiển sân và cuộn, và các bộ kích hoạt tương tự sẽ điều khiển cái vuốt. Các bộ kích hoạt tương tự là một tính năng lớn cho bộ điều khiển 360. PS và hầu hết những người khác không có chúng.

Tôi có một trang web cho dự án, nhưng nó vẫn còn khá thưa thớt. Tôi có kế hoạch ghi lại toàn bộ thiết kế, vì vậy cuối cùng nó sẽ rất thú vị.
http://tricopter.googlecode.com
Một lưu ý phụ, Google có thể xóa Google để có tính năng blog cho các dự án googlecode không?

Tôi muốn chương trình đầu vào bộ điều khiển 360 chạy trong cả Linux và Windows nếu có thể. Cuối cùng, tôi muốn móc bộ điều khiển trực tiếp vào một bo mạch vi điều khiển nhúng (như Arduino) để tôi không phải đi qua máy tính, nhưng nó không phải là ưu tiên cao vào lúc này.

+0

Thực sự có phải là bộ điều khiển xbox 360 không? Tại sao không phải là một phím điều khiển máy tính tiêu chuẩn hơn. Có gì đặc biệt về bộ điều khiển 360? – Kibbee

+1

Bạn sẽ lên blog hoặc viết lên khi bạn hoàn thành nó? Bạn nên liên kết với nó, tôi sẽ được quan tâm :) – alex

+2

Có lẽ ông sở hữu một bộ điều khiển 360, nhưng không phải là một phím điều khiển máy tính tiêu chuẩn. (Cá nhân tôi không biết bất kỳ ai trong những ngày này sở hữu một phím điều khiển máy tính tiêu chuẩn.) –

Trả lời

6

PyGame có thể đọc cần điều khiển, bộ điều khiển X360 hiển thị như trên PC.

+0

PyGame có sử dụng DirectInput để thực sự đọc các que không? Vì vậy, nó sẽ không hoạt động nếu bạn muốn tránh DInput như một yêu cầu. –

+0

Tôi đã thử PyGame trong đêm qua và nó hoạt động khá tốt. Tôi đã có thể lấy đầu vào điều khiển khá dễ dàng. Tôi chưa thử nghiệm nó trong Linux. – bengineerd

+1

PyGame về cơ bản là một lớp Python trên đầu trang của SDL. Tôi không nghĩ rằng nó có bất kỳ phụ thuộc directX nào. Giống như SDL, nó không thể phản hồi lực. Nó cũng xử lý hai bộ kích hoạt tương tự như một trục đơn. Tôi tin rằng DirectInput cũng vậy. Chỉ XInput và XNA cho phép sử dụng đầy đủ tính năng. – bengineerd

1

Vâng, nếu bạn thực sự không muốn thêm phụ thuộc vào DirectX, bạn có thể sử dụng Windows Joystick API cũ - Windows Multimedia -> Joystick Reference trong SDK nền tảng.

Thư viện trò chơi plaform chéo miễn phí chuẩn là Lớp Simple DirectMedia, ban đầu được viết cho các trò chơi cổng Windows cho các hệ thống Unix (Linux). Đó là một API rất cơ bản, nhẹ, có xu hướng hỗ trợ tập con tối thiểu các tính năng trên mỗi hệ thống, và nó có các ràng buộc cho hầu hết các ngôn ngữ chính. Nó có phím điều khiển rất cơ bản và hỗ trợ gamepad (không có phản hồi lực, ví dụ) nhưng nó có thể là đủ cho nhu cầu của bạn.

0

Có lẽ thư viện Mono.Xna đã thêm hỗ trợ GamePad, mà sẽ cung cấp các chức năng đa nền tảng bạn đang tìm kiếm:
http://code.google.com/p/monoxna/

Theo như những mối quan tâm về thư viện là trọng lượng quá nặng, chắc chắn, cho tùy chọn này có thể đúng ... tuy nhiên, nó có thể mở ra cơ hội để làm một số hình ảnh đẹp trong tương lai.

tuyên bố từ chối trách nhiệm: Tôi không quen thuộc với trạng thái của dự án mono xna, vì vậy có thể chưa thêm tính năng này. Nhưng vẫn còn, 'tis một tùy chọn :-)

8

Nó không phải là tất cả những khó khăn. Như anh chàng đã đề cập trước đó, bạn có thể sử dụng các thư viện SDL để đọc trạng thái của bộ điều khiển xbox và sau đó bạn có thể làm bất cứ điều gì bạn muốn với nó.

Có hướng dẫn SDL: http://sdl.beuc.net/sdl.wiki/Handling_Joysticks khá hữu ích.

Lưu ý rằng một bộ điều khiển Xbox có sau đây:

  • hai cần điều khiển:
    • phím điều khiển bên trái là trục 0 & 1;
    • trình kích hoạt bên trái là trục 2;
    • cần điều khiển bên phải là trục 3 & 4;
    • đúng kích hoạt là trục 5
  • một hat (D-pad)
  • 11 nút SDL
    • hai trong số đó là trung tâm điều khiển nhấn
  • hai trigger (đóng vai trò như trục, xem ở trên)

SDL v1.3 sắp tới cũng sẽ hỗ trợ phản hồi về lực (aka. h aptic).

Tôi giả sử, vì chuỗi này đã được vài năm, bạn đã làm điều gì đó, vì vậy bài đăng này chủ yếu để thông báo cho khách truy cập trong tương lai.