我正在编写一个小应用程序来控制一些实验室设备(一个温控室、一个电源和一个电压表)。使用WPF、C#和MVVM。想知道将更新从设备传回ViewModel和视图的模式是什么。我已经为每个设备构建了一个模型类,它公开了一些属性和方法,比如设置电源电压、打开烤箱、读取仪表的测量值。我想知道通知属性变化的最佳模式,如电源模式(从电压限制模式切换到电流限制模式)和电流室温度。我有两个不同的案例:
1)测温箱:测温箱内的温度在缓慢地移动,我需要每秒监测和显示当前读数。
2)电源:电源通常处于限压模式(保持电压恒定,让电流根据需要变化),但每隔几个小时,如果电流达到上限,就会切换到限流模式(不允许电流超过1安培,并根据需要让电压开始下降)。这完全是由电源控制的,但我需要知道当它发生时模式的切换。
我可以看到ethier在模型中设置了一个线程来轮询设备,并在温度变化或模式变化时引发事件。我还可以看到保持模型简单并将轮询放入ViewModel中。通信开销微不足道,所以想知道是否有针对这种情况的建议。
谢谢你,布莱恩
发布于 2016-10-08 02:22:21
我会考虑通过实现接口的服务类公开硬件数据。服务类可以轮询硬件并根据需要引发事件。
该接口将允许您创建用于单元测试应用程序的模拟实现,而无需连接到物理硬件。
您的应用程序的视图模型应该在其构造函数中获取服务类的一个实例,挂钩任何事件,并在准备关闭时解除挂钩。
我不会将轮询直接放在模型或视图模型中,因为它处理特定的硬件实现。如果你能尽可能地把它抽象出来,那么测试就会变得容易得多。
https://stackoverflow.com/questions/39923276
复制相似问题