【问题标题】:Don't wait for arduino reply不要等待arduino回复
【发布时间】:2011-12-30 09:45:52
【问题描述】:

我正在使用 Arduino 和一把真正的吉他统一创建一个吉他英雄类型的游戏。

我的问题是我必须不断检查 arduino 的返回值。

如果我不断地发送一个值,我的读数就不再足够准确,并且如果我为 Arduino 编写代码时它只在接收到我的吉他输入时才发送数据,unity 程序会冻结因为它似乎一直在等待响应,所以它卡在了 Arduino 代码上。有没有办法解决这个问题?

【问题讨论】:

  • 你能发布一些代码吗?很难说出你想要达到的目标。
  • 你真的需要帮助我们更多......发布一些代码或解释为什么你真的需要检查价值。无论如何,如果您必须检查返回值并且它返回了很多值,那么没有什么可做的吗?
  • 我需要检查值,因为我需要查看播放的是哪个音符。由于评分系统,这必须不断检查。在我的更新函数中,我调用以下函数public float Getfreqval() { string valuetext = stream.ReadLine(); //Read the information freqvalue = System.Convert.ToSingle(valuetext); return freqvalue; } 流是我的serialPort。我基本上只是想知道是否有办法不让 stream.readline 等待返回的值。这是我第一次在 c# 中使用系统端口,所以这对我来说真的很新。
  • 谢谢,一开始我并没有真正理解如何使用这个事件,但现在我似乎已经开始工作了!感谢您的帮助!

标签: c# c arduino unity3d guitar


【解决方案1】:

我理解您的基本问题是:

问:我想将我的 Arduino 连接到在以下环境下运行的 C# 应用程序 窗户。

答:有两种方法可以做到:

  • 轮询

  • 事件

轮询很糟糕 :)

如果可能,正确的方法是使用事件。

假设您可以使用 C# 串行接口,那么您可以为 DataReceived 分配一个事件。

这里有一篇文章正是讨论了这一点:

http://www.johnciacia.com/2010/06/03/interacting-with-the-arduino-with-c/

寻找:

serialPort1.DataReceived += 
  new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived);

这是另一个链接:看起来“Scrobby4”发布了一些示例代码:

http://forum.unity3d.com/threads/14731-COM1-and-events

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多