Windows 10物联网核心,共享SPI数据



我的windows 10 IOT核心应用程序使用SPI收集许多实体。有一些很好的例子可以启动计时器来获取SPI数据、更新数据以及将UI元素绑定到这些数据。结果是,只要SPI获得了有关更改实体的一些数据,驱动UI的数据就会更新,并且绑定到该数据的任何UI元素都会更新。我甚至可以通过使用双向绑定来跟踪列表中所选项目,来更改此页面上显示的数据子集。

就像许多例子一样,我的代码结构如下:

public async void Init_SPI()
        {
           ....
            periodicTimer = new Timer(this.TimerCallback, null, 0, 10);
        } // public async void Init_SPI()
 private void TimerCallback(object state)
        {
            /* UI updates must be invoked on the UI thread */
            var task =
             this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            { ... update states of data that many be bound to UI element

我的问题:

我不知道如何根据上面的内容更新多个页面的数据,因为this.variable指的是启动计时器的页面的UI线程。

如果更新一个静态类并让多个页面持续轮询该静态数据以使UI跟踪这些大量元素,效率会太低。

我目前唯一的想法是将所有XAML页面编码在一个页面中,并在这些"虚拟"页面之间添加选项卡。我宁愿有多个页面来保持这些页面的功能分离。

任何关于如何从SPI端口上读取的数据更新多个页面的建议都将不胜感激。

谨致问候,John

很抱歉很晚才给出答案,但我的解决方案是仍然创建"真实"页面,但只将数据"中继"到当前可见的页面。因此,每当一个页面变得可见时,我都会在{ ... update states of data [...]上面制作代码片段的内部,以指出页面。这可以通过一个简单的switch语句来实现,或者通过一个带有HandleSpiData(TheSpiData)方法的简单接口来实现,甚至可以使用一个简单Action<YourSpiData>

最新更新