这个问题涉及处理异步数据和在C#GUI上显示。什么是最好的方法。
我正在建立一个由一堆硬件模块组成的智能EV平台,这些硬件模块通过CAN总线相互通信。有速度传感器,电池数据,GPS,3轴加速度计,3轴陀螺仪,温度,湿度,太阳能和其他几个。它们也可以无线中继到笔记本电脑上进行远程显示和记录。该设计使这个通信层通用,但在我的实现中,我使用UHF串行无线电和使用MAVLINK协议打包数据。
我正在使用Mavlink.net项目(https://github.com/dsuarezv/mavlink.net)生成可以解码我的消息的.dll。我还设置了一个基本的WPF c#app,它在屏幕上显示了一些这样的数据。我还编写了一个小型的可移植类库,它设置了mavlink .dll以通过串口接收数据,然后对消息ID进行切换,然后根据消息调用特定的事件处理程序ID。 在我的WPF应用程序中,我将方法挂钩到我感兴趣的事件处理程序中以显示数据。然后在我的方法中,我只需用数据更新我的GUI标签。例如:
NSTimer
然后
evApi.GPSPosReceived += S_GPSPosReceived;
我的平均c#经验和技能。 (电子工程师,大部分时间都在编写嵌入式c)。我有点担心如何从这里继续下去..这些是我的一些问题:
我尝试过WPF,因为它似乎是一种新的做事方式。然而,我的经验是使用WinForms,我认为用zedgraph设置图表会更容易。然而问题是如何处理跨线程调用而没有为表单上的每个控件提供一千个不同的委托。有没有比事件处理程序更好的方式来显示这些数据?我应该使用WPF还是WinForms?任何示例项目? (我看了很多但没有取得巨大的成功)
我还需要将数据记录到数据库中。我被建议使用sqlite并使用linq使事情变得非常简单和动态。这很有吸引力,因为DB可以内置到应用程序中,而不会使客户端PC上的安装变得复杂。我还需要调用数据和绘图或导出为CSV等。任何建议/帮助?
如果你知道任何类似的项目,请向我发送正确的方向!我现在想要做出好的设计选择,然后走上一条让生活变得更加困难的道路!