C# Unity Serial.ReadLine()问题
所以我有一个Arduino发送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将永远挂
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中完美地读取。