windows 服务是 "correct" 与必须 运行 windows 的嵌入式系统上的硬件交互的选择吗?

Is a windows service the "correct" choice for interacting with hardware on an embedded system that must run windows?

我正在开发一个嵌入式系统,该系统涉及通过 USB 从多个摄像头模块收集数据。计划最初是使用小型 Linux 系统,但相机的 Linux 驱动程序不支持使用它的任何功能(硬件触发、原始拍摄、某些像素格式等)。制造商提供了一个很好的 C# SDK,一切都可以在 Windows 上运行。我们现在正在研究使用小型 Windows 系统,例如新的 Intel Compute Stick 或 Liva。

我想编写软件从摄像头收集数据,因为它们是由系统的另一部分触发的硬件,并将数据写入可移动磁盘。它应该可以通过 TCP/IP(硬线)进行远程控制。这听起来像是适合 windows 服务范围的东西。这是个好方法吗?

我最关心 运行 到 security/permissions 的问题。我一直在阅读表明服务包含在 "non-interactive" window 个站点中的内容,我不确定这在能够访问设备等方面意味着什么。机器 运行 所有这一切都将是完全无头的,所以它只需要一直工作。我将继续自己研究在这里做正确的事情,但如果有相关经验的人可以给我一个建议 "yes" 或 "no" 以及一个很好的理由,那会对我有所帮助出很大。

我曾经在一家公司工作,该公司在 windows 上使用火线相机制作实时视觉系统。该软件只是 运行 作为一个应用程序。这最终更容易处理和调试。其中大部分是用 C++ 完成的。但是,如果您没有严格的实时要求(该软件需要在 50 毫秒内完成操作),那么 C# 应该没问题

您可以 运行 它作为一项服务,但没有特别需要。

需要考虑的几点:

  • 访问 hardware/drivers 是否有任何限制或所需的权限,以及哪个 windows 身份将允许您的服务(提升)访问?
  • 是否需要与用户界面进行任何交互?

对我来说,如果没有额外的细节,如果不需要用户界面,windows 服务似乎可以达到目的。

我还建议使用 Top Shelf 在 .Net 中开发 windows 服务,因为它简化和抽象了所有周围的复杂性,让您专注于应用程序需要实现的目标。

[注意:我不隶属于 Top Shelf 或其开发者]