【发布时间】:2013-04-30 06:04:47
【问题描述】:
我正在寻找关于这个问题的技术性更低、概念性更强的答案。
我希望使用 .NET 4.5 构建一个 WPF 应用程序来控制流动站(美化 RC Car)。这是预期的功能:
- 应用程序和流动站将通过发送和接收字符串进行无线通信 - JSON over TCP Socket。
- GUI 将通过 RTSP 显示多个视频源。
- 控制面板 - 自定义硬件 - 将通过 USB 连接到计算机,这些信号将转换为 JSON,然后通过 TCP 连接发送并提供移动指令。
- GUI 需要更新以反映控制面板的状态以及基于接收到的数据的流动站状态。
我不确定要使用哪种技术来实现这一点,但根据我的研究,BackgroundWorkers 或 Threads 和异步技术将是值得研究的事情。哪一条看起来像是一条好路?另外,我应该直接在应用程序中使用 TCP 套接字还是应该/可以使用 WCF 来提供这些数据?
在这方面的任何智慧都会很棒。提前致谢。
编辑:
这是使用的最终实现,男孩做得很好:
- 一切都围绕着使用 MVVM 模式进行。
- 控制面板和网络组件都有视图,每个视图都有一个对应的视图模型来处理后台操作。
- 更新 UI 是通过 databinding 而不是 Dispatcher 完成的。
- 无线通信是通过TCPListener异步(async/await)完成的,同时使用了Tasks。
- 串口通信是通过SerialPort和Tasks异步完成的。
- 使用ModernUI 作为接口。
- 使用 JSON.NET 进行 JSON 解析。
Here is a link to the project。它是在一个月的时间内完成的,所以它不是最漂亮的代码。今年夏天我已经改进了很多实践,所以我很高兴能在明年完成的重构版本上工作。
【问题讨论】:
-
您自己在为漫游车编程吗?在那种情况下,使用了哪些技术?
-
不,其他程序员正在这样做,但本质上,流动站端是与 Python 一起使用的树莓派。树莓派从流动站上的微控制器接收到的信号通过 TCP 通过无线发送到 GUI。
标签: c# wpf multithreading sockets asynchronous