我想知道如何在Arduino Uno (作为我的输入)和Godot游戏引擎(作为我的输出)之间建立串口通信?上下文是,我正在尝试使用Arduino上的传感器来移动/放置Godot上的对象,因此我需要串行端口代码或如何实现该连接的指导。
感谢您的帮助,谢谢大家!
发布于 2020-02-26 21:58:29
你可以试试插件GDSerCommPlugin。但它正在进行中,我没有测试它,所以我不知道它是否可用。
发布于 2021-07-19 23:00:28
由于这个问题已经被提出很长时间了,我认为更新是受欢迎的。由于Godot3.0,C#是完全支持的,我使用的是Godot3.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函数中的数据。
Note2:为了提高效率,在_Process函数的循环中使用ReadExisting()函数(并自己解析行)比使用Readline()函数更好。
Note3:立即发送到串行端口,例如:
port.Write("Hello\r");https://stackoverflow.com/questions/60333254
复制相似问题