串口开关端接CTS 和RTS. 使用MSComm控件,当按下开关时,应该是触发一次comEvCTS事件.但因为毛刺现象,每次捕获的事件一般都4、5次以上。
这个问题可以使用电阻(100左右),(104 103的)电容解决。
但我不清楚电阻、电容的接法,有哪位朋友使用过?
请不吝赐教!

解决方案 »

  1.   

    消除抖动的常用方法有两种:一是用硬件电路来实现(硬件方法),即用RC滤波器除抖动,双稳态消抖电路两种方法;另一种是用软件延时的方法来解决(软件方法)。你可以并联接一个0.1U的电容在开关两端,或者接一个电阻一个电容并联一端接地一端接开关,你试一下接哪边,LC有个公式计算时间常数,可以算出需要的参数大小,根据反应时间;或者你考虑采用软件滤波看行不行
      

  2.   

    加一个定时器就能搞定的。在Comm1_CommEvent()事件中加上如下代码:
    ......Case comEvCTS   '你原来的事件处理代码
      Timer1.Interval = 50           '在按钮被完全按下之后50ms,产生定时器事件
      Timer1.Enabled = False         '这两句可以完成抖动消除
      Timer1.Enabled = True......
    Private Sub Timer1_Timer()
        Timer1.Enabled = False
        '现在可以认为按钮已经被完全按下了
    End Sub
      

  3.   

    谢谢ffwin()兄。
    jadeluo(秀峰)兄,好像又一次看见你在我的帖子里“不好意思,没看清楚,发了VB的代码了。”呵呵。。
      

  4.   

    请教ffwin()兄: “或者接一个电阻一个电容并联一端接地一端接开关”这句我没理解是什么意思?
      

  5.   

    To  rabbit1125(兔子):
    哈。调试小程序还是VB最爽。
      

  6.   

    sorry,我表述不清
       |-----||--------|
    ---|               |---------。/。
       |-----[]--------|大概是这个样子,我也不是太懂,你问一下硬件版的朋友