如何使用统一脚本将EV3头脑风暴通过蓝牙连接到统一游戏?

时间:2014-10-25 16:16:47

标签: bluetooth unity3d unityscript lego mindstorms

我正在使用Unityscript在Unity中进行一场比赛,我用lego mindstorms EV3机器人进行了操纵。我让te机器人通过蓝牙向游戏发送信息,但我找不到如何做到这一点。 我已经有蓝牙运行和运行C#的代码,但知道我需要知道如何将它转换为unityscript。 我已经尝试在谷歌上找到它,但我似乎只是得到了一些软件来破解机器人,但是没有用unityscript中的代码来连接转向器。

这里有C#代码:

        // 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();
                    }
                }
            }
        }

我希望你知道我在哪里可以做到这一点,甚至可以帮助我。 如果你想从我获得灵感的小乒乓游戏的原始代码,只需评论它。

我希望你能帮助我。

2 个答案:

答案 0 :(得分:2)

以下是一些有关EV3固件文档的有用链接:

特别是,您需要了解如何发送direct commands,然后将其用于read and write bluetooth mailboxes

使用javascript与COM端口进行通信,只需进行一些搜索即可。例如,我发现this SO question有很多不同的想法。

答案 1 :(得分:0)

作为c4ev3的一部分,我们开源了我们的EV3 uploader,它也可用于向设备发送与连接无关的命令。

以下是如何在Perl中移动电机(Complete version):

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";

这将探测可通过USB,蓝牙或WiFi访问的EV3并连接到它,然后发送与转动电机相关的直接消息。有关直接命令协议的更多信息,请查看LEGO的Communication Developer Manual和David Lechner的答案。

或者,您可以使用c4ev3为EV3编写C程序并与之通信。这样你就可以使用更好看的C-API。