2011-01-06 3 views
4

Там is a missle launcher, запускаемый через USBДрайвер для ракетных пусковой USB в Windows 7

alt text

Программное обеспечение для него можно найти на DreamCheeky website

То, что я хочу сделать, это быть в состоянии для управления этой машиной через мои программы. Так что эти проблемы я вижу:

  1. приобретающих Driver < ---
  2. Интерфейс этот драйвер в мои приложения C# (я буду смотреть на это позже)

Для первой части что является самым важным, я нашел несколько портов linux драйвера, но могу ли я использовать драйвер, который пришел с программой? Или я могу взять код linux и построить драйвер в Windows?

Самый полезный источник, который я нашел, - the code from the NZ Mac port, но я понятия не имею, что с ним делать.

Любые советы и подсказки. Это мое знакомство с водителями.

EDIT - Больше мыслей

я получаю чувство, что я могу просто позвонить и приема команд USB. В коде dgwilson from the NZ mac port он так:

// Control of the launcher works on a binary code – see the table below for an explanation 
// 
// | 16 | 8 | 4 | 2 | 1 | 
// |——|—|—|—|—| 
// | 0 | 0 | 0 | 0 | 1 | 1 – Up 
// | 0 | 0 | 0 | 1 | 0 | 2 – Down 
// | 0 | 0 | 0 | 1 | 1 | 3 – nothing 
// | 0 | 0 | 1 | 0 | 0 | 4 – Left 
// | 0 | 0 | 1 | 0 | 1 | 5 – Up/Left 
// | 0 | 0 | 1 | 1 | 0 | 6 – Down/left 
// | 0 | 0 | 1 | 1 | 1 | 7 – Slow left 
// | 0 | 1 | 0 | 0 | 0 | 8 – Right 
// | 0 | 1 | 0 | 0 | 1 | 9 – Up/Right 
// | 0 | 1 | 0 | 1 | 0 | 10 – Down/Right 
// | 0 | 1 | 0 | 1 | 1 | 11 – Slow Right 
// | 0 | 1 | 1 | 0 | 0 | 12 – nothing 
// | 0 | 1 | 1 | 0 | 1 | 13 – Slow Up 
// | 0 | 1 | 1 | 1 | 0 | 14 – Slow Down 
// | 0 | 1 | 1 | 1 | 1 | 15 – Stop 
// | 1 | 0 | 0 | 0 | 0 | 16 – Fire 
// 
// | Fire |RT |LT |DN |UP | 
// 

ли это, что означает, что может быть USB-библиотеку, которая будет просто послать эти команды и получать команды обратной связи?

Ответ

Это все было сделано раньше, и сидит и ждет на rocket.codeplex.com Даже вещи я думал делать (Wiimote соединение)!

ответ

1

Я только что купил Dream Cheeky Thunder Missile Launcher, который, как представляется, является преемником модели, упомянутой в этом вопросе (а также модели, которую написано для rocket.codeplex.com).

Но я не мог заставить rocket.codeplex.com работать с моей моделью (да, я использовал перегрузки конструктора, который позволяет мне поставить VendorID и DeviceID, и да, я снабжал правильные идентификаторы для моей модели), так что я написал мою собственную библиотеку.

Вот это, может быть, это поможет другим людям тоже:
MissileSharp

+0

Делает это работать на 64-битной? Если так, я проверю это. – Dann

+0

Да, у меня 64-битная машина с Win7 Home Premium, и она работает там. –

+0

Отмечено как ответ, поскольку теперь он более уместен. Извините @Nick – Dann

2

Похоже, кто-то уже сделал тяжелую работу за вас - проверить комментарий # 8 по ссылке вы публикуемую:

http://dgwilson.wordpress.com/windows-missile-launcher/#comment-2160

(Там есть окна .dll скачать и простой API ссылочного там вы можете использовать в своем приложении.)

+0

Также см. комментарий № 11 с того же сайта: http://rocket.codeplex.com/ – heavyd

+0

Первый (# 8) был мертвой ссылкой для меня, но второй ... стыдно за меня за то, что :( – Dann

1

«Возмездие» рвет ... работает как шарм, и это супер просто изменить и получить работает ...

https://github.com/codedance/Retaliation

вам необходимо скачать и установить доступ библиотеки USB к языку Python для его работы http://sourceforge.net/apps/trac/libusb-win32/wiki

с этой программой установите драйвер фильтра, это позволит вам захватить все, что отправлено через этот USB-порт, помните, какой из них, потому что он будет работать, только если вы подключите его снова в этом конкретном порту ...

после этого просто запустите retaliation.py и наслаждайтесь =)

Я внесла некоторые изменения в мой ответ, так как у меня есть старая модель ракеты-носителя, она не поставляется с «последовательностью загрузки» без стрельбы ...

elif command == "prefire": 
    send_cmd(FIRE) 
    time.sleep(4.5) 
    send_cmd(STOP) 
elif command == "firewithprefire": 
    send_cmd(FIRE) 
    time.sleep(.5) 
    send_cmd(STOP) 

Вторая команда, пожары после «погрузки», поэтому неизвестные жертвы не слышат загрузочный знак nd, так как он был «предварительно загружен», просто щелчок и ракета летают ...

также со старой версией ракеты-носителя вы можете выслать слишком высокие значения в команде перемещения и ракетная пусковая установка попытается это сделать, кажется, что более новые версии останавливают базу после того, как она пройдет после некоторых мест, более старая версия также работает, но только когда она достигает максимального значения, поэтому отправка хода (2000000, слева) заставит его пройти весь путь слева, а затем попытаться сохранить идущую влево, в основном нарушение передач, но если это уже на максимум слева, он будет игнорировать команду, поэтому я изменил ход так:

def send_move(cmd, duration_ms): 
    secs = (duration_ms/1000.0) 
    for x in range(0, int(secs)): 
     send_cmd(cmd) 
     time.sleep(1) 
     send_cmd(STOP) 

это может кажется ужасным, но это единственный способ убедиться, что он не пройдет Максимальное значение при отправке команды перемещения, особенно при использовании команды «парк», который перемещает пусковую в положение 0,0 ...

надеюсь, что это помогает кто-то =)

веселит