首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C#编程计时器计数器

用C#编程计时器计数器
EN

Stack Overflow用户
提问于 2020-04-16 22:20:14
回答 2查看 66关注 0票数 0

我正在开发一个C#应用程序,它应该接收来自神经反馈软件的数据,并将其传输到乐高NXT砖块。每当在神经反馈软件中达到某个目标时,该软件通过TCP向C#应用程序发送值1,如果没有达到该目标,则将0发送到C#。然后,C#应用程序将信息发送到我的NXT车(使用蓝牙通信):如果NXT接收到1,它应该移动;如果接收到0,则应该立即停止。

由于这些值有时会在很短的时间内发生变化,因此NXT无法快速而准确地响应(通过移动或停止其移动)。例如:当它从1变为0,然后又变成1,如果1之间的距离周期太短,那么它会给人一种NXT总是移动的印象。

为了解决这个问题,一个解决方案是编程一个“计时器计数器”:基本上,为了让NXT移动,那么目标(在神经反馈软件中)至少要遵守1秒(也就是说,不受干扰-值从1到0)。换句话说,如果C#应用程序接收值1而不更改至少1秒(或更长时间),那么它应该命令NXT最终移动(并保持移动,而C#不接收0值)。

我知道Windows窗体上有计时器功能,但我无法从它中编程一个“计数器”。此外,我也试图做一些研究,但我开始相信,也许“计时器计数器”不是最好的方式来描述我正在寻找的.

注意:在我的NXT砖块中没有代码。基本上,C#应用程序(通过特定的库)将所有的移动命令发送给NXT机器人。

EN

回答 2

Stack Overflow用户

发布于 2020-04-16 22:51:37

如果你保留最后的N个命令,看看在Y的范围内是否有0,如果有,你是否停止了移动?

换句话说,假设前进为默认状态,并跟踪在最后N个命令中有多少个停止(0)。如果它通过了一个阈值(您将定义),它将停止,只有在接收到另一组N1命令时才会再次启动。

时间可能不是你需要的维度,但如果你需要时间,你可能会应用我在计时器中描述的逻辑。

保留接收到的所有最后N条命令,并使其默认向前移动。然后,创建一个计时器,在每一个滴答中,检查所得到的命令,并决定是否必须继续移动或停止。

票数 0
EN

Stack Overflow用户

发布于 2020-05-03 14:51:20

保持时间变量。每次发送0时,将其值设置为当前时间。

程序启动-时间变量设置为当前时间。

每次接收到零时,将时间变量设置为当前时间。停止移动到NXT机器人。

每次接收时,检查当前时间和时间变量之间的时间差是否大于1秒。如果是这样的话,那么发送一个命令来移动到NXT机器人。

我建议在应用程序中有一个可以更改的值,以便可以调整时间。

保持一个变量,因为如果机器人在移动,那么你只需要发送停止并开始移动,当机器人在移动和不移动之间发生变化。

你用的是什么神经反馈装置?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61261011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档