【发布时间】:2020-07-30 07:52:44
【问题描述】:
我正在开发一个 C# 应用程序,它应该从 Neurofeedback 软件接收数据并将其传输到 Lego NXT 积木。每次在 Neurofeedback 软件内部达到某个目标时,该软件都会通过 TCP 套接字向 C# 应用程序传输值 1,如果未达到目标,则向 C# 发送 0。然后,C#应用程序将信息发送到我的NXT汽车(使用蓝牙通信):如果NXT收到1,它应该移动;如果它收到 0,那么它应该立即停止。
由于有时这些值会在很短的时间内发生变化,因此 NXT 无法快速准确地做出响应(通过移动或停止移动)。例如:当它从 1 变为 0 再变为 1 时,如果 1 之间的区间周期太短,则会给人以 NXT 一直在移动的印象。
为了解决这个问题,一个解决方案是编写一个“计时器”:基本上,为了让 NXT 移动,那么目标(在 Neurofeedback 软件内部)应该遵守至少 1 秒(也就是说,没有中断 - 值从 1 变为 0)。换句话说,如果 C# 应用程序接收到值 1 并且至少 1 秒(或更长时间)没有改变,那么它应该命令 NXT 最终移动(并在 C# 没有接收到 0 值时继续移动)。
我知道 Windows 窗体上有一个计时器功能,但我无法从中编写一个“计数器”。此外,我也尝试进行一些研究,但我开始相信“计时器”可能不是描述我正在寻找的内容的最佳方式......
注意:我的 NXT 积木中没有代码。基本上,C# 应用程序(通过特定的库)将所有的运动命令传输到 NXT 机器人。
【问题讨论】:
-
but I couldn't manage to program a "counter" from it请解释一下您的意思。或者显示try的代码。
标签: c# sockets timer bluetooth nxt