gpt4 book ai didi

c# - 处理 --> Arduino --> Unity 通过端口通信

转载 作者:行者123 更新时间:2023-11-30 17:29:38 31 4
gpt4 key购买 nike

我尝试做的事情: Processing 3 正在通过我的网络摄像头接收一种 QR 码 --> 它读取值并将其发送到我的 Arduino,Arduino 成功接收它并且现在可以做东西。现在我想添加另一个通信 channel ,Unity。我希望 Arduino 将处理中的值发送到 Unity。Arduino 和 Unity 之间的通信很容易,但我需要处理网络摄像 header value 。

问题:Processing 3 和 Unity 使用同一个端口(COM4、9600)。这将导致 Unity 中出现 IO 异常,提示“拒绝访问”,然后是串行端口未打开的错误。

处理3代码

...
//Open port
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
myPort.write(1);
...

Arduino代码

void setup() {
// put your setup code here, to run once:
...
Serial.begin(9600); // Start serial communication at 9600 bps
...
}

void loop() {
if (Serial.available()) { // If data is available to read,
val = Serial.read(); // read it and store it in val
}
//val contains now the data that was sent from Processing 3
//Send this data to Unity:
Serial.flush();
Serial.println(val);
}

统一代码

...
SerialPort stream = new SerialPort ("COM4", 9600); //We obviously can't open this port since its already in use by Processing 3. How to fix this?
...
// Use this for initialization
void Start () {
stream.Open(); //Throws IO exception: Access Denied error
}
// Update is called once per frame
void Update () {
string value = stream.ReadLine();
val = int.Parse(value);
if (val == 1) {
//Links van arduino
goLeft();
}else if (val == 2) {
//Rechts van arduino
goRight();
}

}

我们显然无法在 Unity 中打开该端口,因为它已被 Processing 3 使用。如何解决这个问题?通讯流:

Processing 3 --> Arduino --> Unity

最终 Unity 需要根据网络摄像头上输入的 QR 码知道您是要向左走还是向右走。

最佳答案

您不能在两个并发应用程序中使用同一个串行端口(您为什么要使用 Arduino?)一个解决方案是在应用程序之间建立链接。使用 127.0.0.1 环回连接的网络连接是创建该链接的一种久经考验的方法。

就协议(protocol)而言,您有无穷无尽的选择,我个人的偏好是使用 OSC - 处理(通过 OSCP5)和 Unity(各种插件,包括我自己的插件,我应该在某个时候公开)对消息传递,但您可以使用许多其他类型的链接(即 websockets)

关于c# - 处理 --> Arduino --> Unity 通过端口通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50833796/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com