gpt4 book ai didi

c# - 在 Unity 中读取串口 "COM3"。连接建立成功,但未调用 DataReceived Handler

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:23 24 4
gpt4 key购买 nike

我需要扫描二维码(通过扫描仪而不是相机)。扫描仪正在通过串行端口“COM3”发送数据,我需要它作为 Unity 中的字符串。所以设置连接工作正常,没有任何错误或异常,但系统没有在 SerialDataReceivedEventHandler 注册我的事件。 (参见代码:DataReceiveHandler 以及其中的所有内容似乎都很难被调用)

我使用以下设置打开端口:

端口名称是“COM3”波特率为 19200PortParity 为无端口位是 8PortStopBits 是一个

如我所说,端口正确打开。我没有收到任何错误或异常。也许你看到了一些我没有看到的东西。谢谢!

private void Start()
{
Init();
}

private void Update()
{
PortIsOpen = SP.IsOpen;
}

private void EstablishPortConnection()
{
try
{
if(SP != null)
{
SP.Close();
SP.Dispose();
SP = null;
}

if(SP == null)
{
SP = new SerialPort(PortName, BaudRate, PortParity, PortBits, PortStopBits);
SP.RtsEnable = true;
SP.DataReceived += new SerialDataReceivedEventHandler(DataRecievedHandler);
SP.Open();
}
}
catch(Exception _ex)
{
Debug.Log("Error while establishing connection! Error: " + _ex);
}
}

private void DataRecievedHandler(object _sender, SerialDataReceivedEventArgs _e)
{
Debug.Log("DataReceived");
try
{
SerialPort tmpsp = (SerialPort)_sender;
Debug.Log(tmpsp.ReadLine());
Message = tmpsp.ReadLine();
}
catch(Exception _ex)
{
Debug.Log("Error during message receiving. Error: " + _ex);
}
}

public void Init()
{
Message = "";
EstablishPortConnection();
}

最佳答案

简答:

您不能在 Unity 中使用 DataReceived 处理程序,因为它不是由 Mono 实现的。

您需要进行手动端口池才能读取,因此最好在单独的线程中运行它(因为池是阻塞的)。请参阅 derHugo 评论中提供的链接以获取更多详细信息(任何拥有删除权限的人 - 请随意删除此答案,此问题的表述比原始问题更好,因此我认为值得复制答案)

关于c# - 在 Unity 中读取串口 "COM3"。连接建立成功,但未调用 DataReceived Handler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55651301/

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