上升沿和下降沿在我们开发上位机时使用率非常高,常见于消息触发、脉冲归档等。但是在C#中没有类似PLC中的上升沿、下降沿那样的指令,需要我们自己编码来实现。

首先我们创建一个用于生成上升沿和下降沿的类,命名为“GetPN”。

然后输入以下代码:

namespace Test
{class GetPN{bool _P = false;bool _N = false;public bool P(bool Value){if (Value && !_P){_P = true;return true;}if (!Value)_P = false;return false;}public bool N(bool Value){if (!Value && _N){_N = false;return true;}if (Value)_N = true;return false;}}
}

代码逻辑比较简单,基本就是以前300/400时代SCL上升沿和下降沿逻辑的翻版。下面以一个简单的例子说明下这个类如何使用。首先声明并实例化,然后在线程中调用里面的GetP或者GetN方法即可。

bool testSignal = false;
private void Form1_Load(object sender, EventArgs e)
{Task.Run(th);
}private void th()
{GetPN pn = new GetPN();while (true){if (pn.P(testSignal)){this.Invoke(new Action(() => this.Text = "已捕获到上升沿"));}if (pn.N(testSignal)){this.Invoke(new Action(() => this.Text = "已捕获到下降沿"));}}}private void button1_Click(object sender, EventArgs e)
{testSignal = true;}private void button2_Click(object sender, EventArgs e)
{testSignal = false;
}

在上面的例子中,我们分别用2个按钮模拟信号的置位和复位操作,然后在线程中调用GetP和GetN方法分别捕捉上升沿和下降沿。当捕捉到信号变化以后使用窗体上的标题文本进行提示。

获取上升沿下降沿的类使用非常广泛,我们的很多控件中都有这种应用。

HwLib(慧兰博)技术团队专注于高端自动化技术,如果您对我们的技术教程感兴趣的话,可以X宝上搜索店铺“hwlib”或者“慧兰博”

关于HwLib(慧兰博)技术团队的更多信息:www.hwlib.com.cn

HwLib(慧兰博)技术团队技术资料:

https://www.jianguoyun.com/p/DR20ZAEQq_K3CBivk5kD

或者

https://pan.baidu.com/s/1NzDd4nWeH7qDtzJghbe-oQ

提取码:1234

--  END  --

[C#小技巧]如何捕捉上升沿和下降沿相关推荐

  1. 自媒体追热点小技巧,教你快速捕捉最新热点

    追热点创作内容的好处多多,相信自媒体人都亲身体验过,不过,如何快速获取最新热点抢占流量呢?今天,总结了自媒体大神追热点的小技巧,快速捕捉最新热点! 1.常规热点 什么叫做常规热点?就是每年必然会发生的 ...

  2. javascript开发技巧训练_学好这些小技巧,帮你写出更好地JavaScript

    近几年来随着前端发展的日益成熟,JavaScript的日渐受到重视,以及Node.js方案变得越来越可行,我们对JavaScript程序员的需求也正在持续增长. 图片源自网络,仅做配文展示 从需求比例 ...

  3. Google 都在用的 6 个休息小技巧,让你工作效率翻倍

    以前上学时,每节课 40 - 50 分钟,然后会休息 10 分钟. 工作后,没有了约束,自己平时忙碌一段时间,也会刷下朋友圈,看个小视频休息一下,我管这叫做劳逸结合,能提高工作效率. 但是,我最近读到 ...

  4. 问:关于上升沿和下降沿触发的讨论

    问:关于上升沿和下降沿触发的讨论 答:发现一些同仁提出上升沿和下降沿计数的问题,工作中也碰到一些同事问及此问题.现在我把我多年 来一直采用的办法奉上,但愿对初学者有所帮助.  以一个最简单的计数器为例 ...

  5. autocad自动图框_AutoCAD中的小技巧,你用过几个?

    大多数人对于Autocad的功能只用到十之一二.AutoCAD中有很多小技巧,在压力容器设计中,熟练使用能够大大提高制图的效率. 这些技巧和Autocad版本无关,和Autocad的插件无关,类似于太 ...

  6. 6条shell小技巧,让脚本显得不再业余

    6条shell小技巧,让脚本显得不再业余 原创作者: 58沈剑 来自公众号:架构师之路 画外音:说实话,技术思路类文章(WHY, HOW),比技术实践类(WHAT)更难写. 如何能让自己的shell显 ...

  7. 10个提升MySQL性能的小技巧

    从工作量分析到索引的三条规则,这些专家见解肯定会让您的MySQL服务器尖叫. 在所有的关系数据库中,MySQL已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困境之 ...

  8. 使用Verdi或DVE分析波形的一些小技巧

    本文记录使用Verdi或DVE查看delta cycle的方法和分享一些分析波形的小技巧. 文章目录 查看Delta Cycle的方法 Verilog和SV的仿真调度机制 使用Verdi查看Delta ...

  9. cad黑色背景变成白色_盘点CAD中你可能不知道的实用小技巧

    相信对很多设计师朋友和刚学设计的小白来说CAD制图都是设计中用的较多的一个制图软件了,可是你知道吗在众多命令中其实有很多小技巧可以给我们节省不少时间呢,下面我就说说有那些实用小技巧吧! 1.文字镜像如 ...

最新文章

  1. zeptojs-跑马灯效果
  2. VS2005中ajax安装指南[转]
  3. java以太网通讯西门子plc300_西门子300以太网通讯-工业支持中心-西门子中国
  4. python 用两个栈实现一个队列
  5. c语言各类随机函数,怎样让c语言中的随机函数真正随机?
  6. Python dict() 函数
  7. Linux基金会亚太区与开源中国达成战略合作 共同推动中国开源人才培养
  8. [PHP] - 逗号和点号的区别
  9. python asyncio tcp转发_asyncio不通过tcp发送整个图像数据
  10. linux 什么数据类型 8字节,linuxea:go数值类型(8)
  11. php按按字符串长度分割,支持中文的PHP按字符串长度分割成数组代码_PHP
  12. 基于ARM-LINUX的温度传感器驱动-DS18B20
  13. jQuery中,$.extend,$obj.extend和$.fn.extend三者的区别
  14. 大数据分析平台建设项目需求报告与技术方案
  15. r语言如何计算t分布临界值_第十二讲 R-配对样本t检验
  16. Linux下的围棋软件,在Linux下和电脑下围棋
  17. HTTP请求的完全过程
  18. 计算机主板知识,电脑主板知识:主板板型、接口、做工与选购详解
  19. 第6章 面向对象基本特征
  20. 《蜗居》台词100句 血淋淋的经典

热门文章

  1. 【非常励志】论坛上看到的一个程序员的简历,高中学历三年java开发18K
  2. c语言 函数指针 菜鸟教程,C 函数指针与回调函数 | 菜鸟教程
  3. JavaScript在数组中寻找相同对象元素的问题
  4. Linux系统中的动态库和静态库
  5. 转速n(r/s)与角度degree的关系
  6. Buidler DAO 蝗虫精选(22):切入 GameFi 的必读文章
  7. 九度oj 1552 座位问题 DP
  8. 车载柴油发电机有几种固定方式?
  9. FANUC机器人如何通过示教器查看软件版本和电机相关配置信息?
  10. 九度笔记之 项目安排