首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从串行过滤双消息

从串行过滤双消息
EN

Stack Overflow用户
提问于 2013-04-27 14:33:07
回答 1查看 82关注 0票数 0

我有一个变量“值”,它包含从串口接收到的最后一条消息。我有一个多行textBox "txtOutput“,它显示从串行接收到的所有消息。我还有一个if语句,它过滤特定的消息来执行我放置在txtOutput_TextChanged下的一些事情,以便在每次出现新消息时更新textBox6中的数字。

代码语言:javascript
复制
    int turns = 0;
    private void txtOutput_TextChanged(object sender, EventArgs e)
    {
    if (value == 1)
    {
    textBox6.text = turns.ToString();
    turns ++;
    }}

当单击微开关时,我从连接到微处理器的串行端口接收消息"1“。微开关正在监视电机的旋转,它的转动非常缓慢。

在进一步实现RPM计数器之前,我的目标是使上面的计数系统正确无误。我现在遇到的问题是,通常微开关被按太长时间(50到100微秒),我从串行接收到几条连续的消息(2或3条),结果我计算的次数比真实的多。我已经在微控制器方面提供了一些延迟,但我不能发挥它太多,否则在不同的速度,我会遇到问题。是否有一种方法只考虑从串行接收到的一条消息,如果它们在1秒时间内连续地出现在同一类型?中。

我会感谢一些想法和样本片段。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-27 16:40:17

在微处理器中实现代码,只发送一次信号。与微开关的速度相比,微开关的关闭时间很长,因此它的关闭状态将在其打开之前被多次读取。此外,你还必须处理微开关触点的弹跳,即在微开关触点稳定之前,可能会有几个由于机械抖动而产生的短关闭/开启状态。

在我看来,以上是最好的解决方案,从源头上解决问题。

如果你想处理接收端的问题,你必须知道所有可能的频率--信号将被实时接收,否则你如何过滤接收到的信号?

编辑:您的速度如下: 12 rpm,信号之间的分钟时间:5秒,0.5rpm,信号之间的最大时间: 120秒。

所以当你收到一个信号时,你知道在下一个好信号出现之前至少需要5秒。

因此,这段代码可以过滤掉虚假信号:

代码语言:javascript
复制
 // code to filter out false signals
    DateTime lastTimeSignalReceived = DateTime.Now;
    double minimumTimeBetweenSignals = 4.9; // 12 rpm = 5 seconds between signals minimum
    int turns = 0;
    private void txtOutput_TextChanged(object sender, EventArgs e)
    {
        if (value == 1)
        {
            // the if statement is true only if at least 4.9 seconds has past since last signal
            // which should filter out false signals
            if ((DateTime.Now - lastTimeSignalReceived).TotalSeconds > minimumTimeBetweenSignals)
            {
                // at least 4.9 seconds since last signal
                textBox6.text = turns.ToString();
                turns++;

                // set lastTimeSignalReceived to new time
                lastTimeSignalReceived = DateTime.Now;
            }
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16253286

复制
相关文章

相似问题

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