上升沿和下降沿在我们开发上位机时使用率非常高,常见于消息触发、脉冲归档等。但是在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(慧兰博)技术团队的更多信息:
HwLib(慧兰博)技术团队技术资料:
或者
提取码:1234
END
往期导读
HwLib(慧兰博)公众号
专注于工业自动化高端编程应用
HwLib(慧兰博)微信号
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。