【问题标题】:Arduino serial monitor and java resets variablesArduino 串行监视器和 java 重置变量
【发布时间】:2010-01-23 11:42:21
【问题描述】:

我编写了一个小应用程序来打开连接到我的 Arduino 板的 LED 灯。应用程序通过 USB 端口发送特定字节值以打开 LED,并发送特定值以将其关闭。奇怪的是,由于某种原因,当我在 arduino 开发环境中使用串行监视器打开 LED,然后关闭串行监视器时,LED 在没有输入正确字节值的情况下关闭,同样的情况也发生在我的 java 测试中应用程序。令我困惑的是,在我的 C# 应用程序中,我可以发送正确的字节值来打开 LED,然后关闭我的应用程序并且 LED 仍然亮着。我完全不明白为什么会这样。

【问题讨论】:

  • 如果您包含有关您正在使用的 Arduino 板的信息(因为它们的行为方式不尽相同)以及您的主机环境是什么(Linux、Windows , 苹果电脑)。请参阅下面的答案。

标签: c# java serial-port usb arduino


【解决方案1】:

来自Arduino Uno http://arduino.cc/en/Main/ArduinoBoardUno的描述:

This setup has other implications. When the Uno is connected to either 
a computer running Mac OS X or Linux, it resets each time a connection 
is made to it from software (via USB).

如果您在 Windows 下使用 C#,则主板不会在 USB 连接时重置。我假设您在其他平台上运行 Java。

【讨论】:

    【解决方案2】:

    led的初始状态是什么,开还是关? 当您通过例如串行监视器打开与它们的串行连接时,Arduino 会自行重置。

    【讨论】:

    • led初始状态为off。出于某种原因,当我使用开发环境或我的 java 测试应用程序时,Arduino 似乎确实会自行重置,但在我使用 C# 时不会。
    • 数字;也许 Java 和串行监视器关闭串行连接而 C# 应用程序没有?事实上,您的 arduino 需要重置才能发送/接收串行数据。
    • 在 Arduino 上的程序的 setup() 部分中添加一段简单的代码 - 使其 LED 闪烁两次(然后将其保持在关闭状态)。这样您就可以知道它已被重置并且您的主程序已准备好输入...
    【解决方案3】:

    我刚刚在另一个线程中遇到了答案(对于 C#):

    How do I reset my Arduino Mega2560 with my C# application?

    在 C# 中设置串行端口对象 DtrEnable=true,现在当我使用 C# 连接时 Arduino 会重置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多