通过串口与脚踏开关相连的问题

wayopen 2003-07-30 06:09:31
要做一个脚踏开关。设计的是脚踏开关的两根线分别连在串口的CTS 和RTS脚上。程序里使用的是MSComm控件,程序初始化时打开串口,将RTSEnable属性设为true。在Oncom事件里捕捉CTS线变化的事件。脚踏开关的状态发生变化时,有相应的事件出现。但是这里有一个问题:开关按下去的时候,事件会相应多次。下面是我的代码:
Dim EventValue As Long
EventValue = MSComm1.CommEvent
Select Case EventValue
Case comEvCTS:
time = time + 1
Case Else:
MsgBox (CStr(EventValue))
End Select
txtNum.Text = time
txtNum.Refresh
按照我的想法,开关状态发生变化一次,全局变量time加1,但实际实验下来,却是一次加4-5不等,有时候更多。而在程序中设置断点调试的时候却是对的,即每次加1
大家帮我看看这样的思路有什么问题,提提建议,谢了!!
...全文
479 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wayopen 2003-08-01
  • 打赏
  • 举报
回复
今天实验了一下,按照clevor的方法做出来了,就是电容选择适当的大小就可以了,我用的电阻是100欧姆,电容是0.1微法的。谢谢指点!!
galle 2003-07-31
  • 打赏
  • 举报
回复
也可以加一个软件滤波进行处理!
设一个局部变量,检测到信号就加1,如果没有信号就置0如果连续N次都是1则TIME+1;N看你的需要变化一下了.
Clevor 2003-07-31
  • 打赏
  • 举报
回复
电阻100左右,104 103的电容就可以了。多试试
wayopen 2003-07-31
  • 打赏
  • 举报
回复
galle的软件滤波的方法,可能就是要用查询的方式进行了,但是我采用的是事件触发的方式。也就是开关状态变化一次触发一次事件。
wayopen 2003-07-30
  • 打赏
  • 举报
回复
谢谢回复,我要试试看。电容和电阻数量级是多少啊?电容微法级的还是皮法级的?我现在还在想去换个开关试试看,看最后能不能解决。
Clevor 2003-07-30
  • 打赏
  • 举报
回复
这个现象叫‘毛刺’。电路不是一次断开/联上的,中间会反复,很快。
加个电容到地,再串上一个小电阻就可以了。

27,383

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧