Как я могу подключить EV3 mindstorms через Bluetooth к игре Unity с помощью UnityScript?

Я делаю гоночную игру в Unity с помощью Unityscript, и я сделал руль с помощью робота Lego Mindstorms EV3. Я разрешаю роботу отправлять информацию по Bluetooth в игру, но не могу найти, как это сделать. У меня уже есть код для Bluetooth, работающего и работающего на C#, но я знаю, что мне нужно знать, как перевести его в unityscript. Я уже пытался найти его в гугле, но мне кажется, что у меня только какой-то софт для взлома робота, но не для того, чтобы сделать код в юнинискрипте для подключения руля.

Ниже находится код С#:

        // EV3: The EV3Messenger is used to communicate with the Lego EV3.
private EV3Messenger ev3Messenger;


            // EV3: Create an EV3Messenger object which you can use to talk to the EV3.
            ev3Messenger = new EV3Messenger();

            // EV3: Connect to the EV3 serial port over Bluetooth.
            //      If the program 'hangs' on a call to ev3Messenger.Connect, 
            //      then your EV3 is not paired with your PC yet/anymore. 
            //      To pair: Remove the EV3 from the Windows Bluetooth device list and add it again.
            ev3Messenger.Connect("COM3"); // Hardcoded serial port: put the serial port 
            // of the Bluetooth connection to your EV3 here!
        }

        /// <summary>
        /// UnloadContent will be called once per game and is the place to unload
        /// all content.
        /// </summary>
        protected override void UnloadContent()
        {
            // Unload any non ContentManager content here

            // EV3: Disconnect
            if (ev3Messenger.IsConnected)
            {
                ev3Messenger.Disconnect();
            }
        }

                // EV3: send Brake message to mailbox with name "MakeNoise"
                if (ev3Messenger.IsConnected)
                {
                    ev3Messenger.SendMessage("MakeNoise", "Brake");
                }


            // Game can be controlled by both the arrow keys and the Steer, gas and brake paddle of                         the connected EV3
            UpdatePaddlePositionUsingKeys();
            UpdatePaddlePositionUsingEV3();

            base.Update(gameTime);
        }
///Steer update
        private void UpdatePaddlePositionUsingEV3()
        {
            if (ev3Messenger.IsConnected)
            {
                // EV3: Receive a new command from mailbox "COMMAND" of the EV3
                // and use it to change the direction of the paddle or to exit the game.
                EV3Message message = ev3Messenger.ReadMessage();
                if (message != null
                    && message.MailboxTitle == "Command")
                {
                    if (message.ValueAsText == "")
                    {
                    }

                    {
                        ev3Messenger.Disconnect();
                        Exit();
                    }
                }
            }
        }

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

Я надеюсь, что вы можете мне помочь.


person Coolones    schedule 25.10.2014    source источник
comment
Этот вопрос кажется не по теме, поскольку речь идет о переводе рабочего кода с одного языка на другой.   -  person LearnCocos2D    schedule 27.10.2014
comment
Полный исходный код EV3, использованный автором вопроса, можно найти здесь: ev3messenger.codeplex.com   -  person Jan    schedule 15.09.2015


Ответы (2)


Вот несколько полезных ссылок с документацией по прошивке EV3:

В частности, вам нужно научиться отправлять прямые команды, а затем использовать их для чтение и запись почтовых ящиков Bluetooth.

Для связи с самим COM-портом с помощью javascript просто выполните небольшой поиск. Например, я нашел этот вопрос SO, который имеет довольно много разных идеи.

person David Lechner    schedule 25.10.2014

В рамках c4ev3 мы открыли исходный код нашего загрузчик EV3, который также можно использовать для отправки на устройство команд, не зависящих от подключения.

Вот как вы будете перемещать моторы в Perl (Полная версия):

use IPC::Open2; 
print open2(\*EV3OUT, \*EV3IN, "ev3 tunnel") or die "couldn't find: %!";

print EV3IN "0900xxxx8000 00 A3 00 09 00\n";
print EV3IN "0C00xxxx8000 00 A4 00 09 50 A6 00 09\n";

Это позволит найти EV3, доступный через USB, Bluetooth или Wi-Fi, и подключиться к нему, а затем отправить прямые сообщения, связанные с включением двигателей. Для получения дополнительной информации о протоколе прямых команд см. Руководство для разработчиков коммуникаций и ответ Дэвида Лехнера.

В качестве альтернативы вы можете написать программу C для EV3 с помощью c4ev3 и общаться с ней. Таким образом, вы получите более привлекательный C-API, который сможете использовать.

person a3f    schedule 08.06.2016