C# Unity Serial.ReadLine()问题

C# Unity Serial.ReadLine()问题,c#,unity3d,arduino,serial-port,C#,Unity3d,Arduino,Serial Port,所以我有一个Arduino发送Serial.print()out 我遇到了最奇怪的问题,可能是Unity权限或OS权限(Linux) 下面是发生的情况 当Unity调用Serial.ReadLine() 统一将永远等待,基本上是悬而未决的 以为是许可,所以我加了一句 sudo adduser $USER $(stat --format="%G" /dev/ttyACM0 ) 在CMD中。现在Linux上的帐户具有权限,同样的问题也会出现 这是最奇怪的部分,Unity将永远挂

所以我有一个Arduino发送
Serial.print()
out

我遇到了最奇怪的问题,可能是Unity权限或OS权限(Linux)

下面是发生的情况

当Unity调用
Serial.ReadLine()

统一将永远等待,基本上是悬而未决的

以为是许可,所以我加了一句

sudo adduser $USER $(stat --format="%G" /dev/ttyACM0 )
在CMD中。现在Linux上的帐户具有权限,同样的问题也会出现

这是最奇怪的部分,Unity将永远挂起,直到我在挂起时将其键入CMD

cat /dev/ttyACM0
Unity现在将运行并显示
正在使用资源

所以我关闭了CMD,现在Unity运行得很好

Unity在这里向Arduino进行读写,没有任何问题

但是,每当我想从rununity->runcmd->Close CMD运行程序时,我都必须经历这个过程

另外,添加
Serial.ReadTimeout=100无法解决此问题

统一将运行,但永远不会阅读,将永远超时

到目前为止,唯一有效的解决办法就是我上面所说的

using System.IO.Ports;

public class PlayerBar : MonoBehaviour
{
    SerialPort stream = new SerialPort("/dev/ttyACM0", 9600);
    void start()
    {
       stream.Open();
       stream.WriteTimeout = 100;
    }
    void Update()
    {
        string value = "default";
        value = stream.ReadLine();
    }
}
阿杜伊诺代码

Serial.print("Distance-");
Serial.print(distance);
Serial.print("\n");
编辑:我试过一些有趣的东西

if (stream.BytesToRead > 0)
    {
      Debug.Log("Open");
    }
else
    {
      Debug.Log("Closed");
    }  
Arduino从不发送字节

直到我打开命令->运行命令->关闭命令


我认为Serial.Open()无法正确打开串行端口。

我从

显然
stream.DtrEnable=true
&&
stream.RtsEnable=true修复了此问题

SerialPort stream;
void Start()
{
   stream = new SerialPort("/dev/ttyACM0", 9600);
   stream.WriteTimeout = 300;
   stream.ReadTimeout = 5000;
   stream.DtrEnable = true;
   stream.RtsEnable = true;
   stream.Open();
}

您使用什么作为返回字符(接收和发送)?Readline可能正在查找错误的退货,或者您发送了错误的退货。它是
serial.print(Value)然后serial.print(“\n”)
一旦打开cmd->运行cat/dev/ttyACM0->关闭cmd,我就可以从serial中完美地读取。