上升沿和下降沿在我们开发上位机时使用率非常高,常见于消息触发、脉冲归档等 。但是在C#中没有类似PLC中的上升沿、下降沿那样的指令,需要我们自己编码来实现 。
【「C#小技巧」如何捕捉上升沿和下降沿】首先我们创建一个用于生成上升沿和下降沿的类,命名为“GetPN” 。
文章插图
然后输入以下代码:
namespace Testclass GetPNbool _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方法分别捕捉上升沿和下降沿 。当捕捉到信号变化以后使用窗体上的标题文本进行提示 。
文章插图
获取上升沿下降沿的类使用非常广泛,我们的很多控件中都有这种应用 。
文章插图
推荐阅读
- 支原体会传染给小孩吗
- 小孩支原体阳性严重吗
- 陈萌|朱小伟妻子陈萌晒出产检单,已怀4个月双胞胎,网友:亚男被打脸
- 张凌赫|“新晋男友”张凌赫和“一线小花”白鹿的绯闻恋情无人塌房?
- 怎样拉伸小腿肌肉有效
- 皮肤补水小妙招,拥有完美皮肤
- 何九华|德云社秦霄贤直播,用小奶音与母亲聊天,而何九华待遇就不一样了
- 抖音祝你快乐不止圣诞?抖音最火2021元旦祝福语
- 常征|《罚罪》严国华带领的专案小组,为何像游击队?常征才是破案关键
- 孟浩然|玉米适合钓哪些鱼类?哪种玉米钓鱼效果好?详解用玉米钓鱼的技巧