c#界面利用高低电平,使pictuerbox切换图片,不使用开关,利用服务器在传感器上传的数据获取到切换
这就是个假问题
高低电平这个概念太广泛了,不是一个具体的东西
你应该先确定要用一个什么传感器
然后问售前售后技术支持,这玩意怎么通信,有没有sdk或者通信协议,有没有demo
等你跟传感器通信上了,就判断传感器传上来的数值有没有变化呗
1.问题可解 --》我先用控制台模拟一个过程
using System.Reactive.Linq;
using System.Reactive.Subjects;
//高低电平,你如何跟硬件协调我们不管
//我们只纯模拟软件层面的事情
//这个subject是一个可观察数据源,你不用开关可以
//但这个东西需要可观察,你可观察就可响应,也就是rx响应式的核心思想
Subject<bool> subject = new Subject<bool>();
//我们来观测他的变化
//rx有很多操作符,其中一种操作符DistinctUntilChanged,为合并变化当值发生改变时触发
subject.DistinctUntilChanged().Subscribe(p =>
{
//下面模拟数据模拟的4次改变,这里会有4个输出
Console.WriteLine($"数据源发生值改变,当前值为:{p}");
//这里你就可以把他当信号进行切换,当然我不知道你的逻辑
//我这里仅仅认为当值变更时触发,高-》低,低-》高都触发
//实际情况你需要你根据实际情况,自己选择/组合rx的操作符进行不同策略的逻辑
});
//模拟已经获取到电平的情况
Task.Run(async () =>
{
//为了演示我不写随机,我使用一个固定的列表
//true 高,false 低
//实际对接,这里你从硬件获取
//这个数据模拟的高<->低 4次改变
bool[] source = new bool[]
{
true, true, false, false, true, true, true, false
};
foreach (var b in source)
{
subject.OnNext(b);
//为了演示,我不一次放入,我将其每隔1m放入,模拟硬件发给你的数据
await Task.Delay(1000);
}
});
Console.ReadKey();
2 问题扩展
扩展一:入代码描述,我目前仅仅观察到改变就触发,实际你要啥逻辑我们不得而知,只是演示一下我们可以用rx观测者数据源进行这类开发
扩展二:实际情况,可能需要对数据进行一些防抖操作,我们得理解硬件是很快的,但是有些东西可能会有一些数据抖动,比如 高,高,高,高,低,高,高,高
这样的一个瞬态的低,我们要不要响应