Arduino与Godot建立串口通信?

问题描述 投票:0回答:3

我想知道如何在 Arduino Uno(作为我的输入)和 Godot 游戏引擎(作为我的输出)之间建立串行端口通信?上下文是,我正在尝试使用 Arduino 上的传感器在 Godot 上移动/放置对象,因此我需要串行端口代码或有关如何实现该连接的指导。

感谢大家的帮助,谢谢大家!

arduino godot
3个回答
1
投票

您可以尝试插件GDSerCommPlugin。但它正在进行中,我没有测试它,所以我不知道它是否可用。


1
投票

由于这个问题问了很长时间,我认为欢迎更新。 自 Godot 3.0 起,C# 得到了完全支持,我正在使用 Godot 3.3.2,我关于在 Godot 中处理串行通信的结论是:使用 C#

您将保留 Godot 的所有多平台开发优势,而无需编写任何(低级)代码行,以下是一个片段:

using System.IO.Ports; // for .NET SerialPort

然后在你的类中如果你想打开端口(假设定义了“SerialPort 端口”):

port = new SerialPort(portName, (Int32)baudRate, Parity.None, 8, StopBits.One);

然后使用_Process读取数据:

public override void _Process(float delta)
{
    if (port != null)
    {
        if (port.BytesToRead > 0)
        {
            string serData = port.ReadExisting();
            string[] str = serData.Split('\n'); // Just an example
            parseLines(str); // Your implementation
        }
    }
}

Note1: 来自 SerialPort 的“DataReceived”事件不起作用(我不知道为什么,但我认为这是由于上下文不同),但是对于 Godot,这个函数没有用,因为你可以直接检查和解析中的数据_Process 函数。

注2:为了提高效率,最好在 _Process 函数的循环中使用 ReadExisting() 函数(并自己解析行)而不是 Readline() 函数。

注3: 立即发送到串口,例如:

port.Write("Hello\r");

0
投票

C# 上的 System.IO.Ports 不是多平台的,仅适用于 Windows,我还没有尝试过 GDSerialcommPlugin,但我已经测试过 https://github.com/matrixant/serial_port 并且它适用于 Windows 和 linux。

© www.soinside.com 2019 - 2024. All rights reserved.