Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windows服务是否是;“正确”;与必须运行windows的嵌入式系统上的硬件交互的选择?_C#_Windows_Service_Camera_Embedded - Fatal编程技术网

C# windows服务是否是;“正确”;与必须运行windows的嵌入式系统上的硬件交互的选择?

C# windows服务是否是;“正确”;与必须运行windows的嵌入式系统上的硬件交互的选择?,c#,windows,service,camera,embedded,C#,Windows,Service,Camera,Embedded,我正在开发一个嵌入式系统,该系统涉及通过USB从多个摄像头模块收集数据。该计划最初是使用一个小型Linux系统,但相机的Linux驱动程序不支持使用它的任何功能(硬件触发、原始拍摄、某些像素格式等)。制造商提供了一个很好的C#SDK,所有东西都可以在Windows上运行。我们现在正在研究使用一个小型的Windows系统,比如新的Intel Compute Stick或Liva 我想写一个软件来收集摄像机的数据,因为它们是由系统的另一部分触发的硬件,并将数据写入一个可移动磁盘。它应该可以通过TCP

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

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


我最关心的是遇到安全/权限问题。我一直在读一些东西,表明服务包含在“非交互式”窗口站中,我不确定这对于访问设备等意味着什么。运行所有这些的机器将完全无头,所以它必须一直工作。我会继续自己研究如何在这里做正确的事情,但如果有相关经验的人能给我一个“是”或“不是”的建议,并给出一个很好的理由,那将对我大有裨益

我曾在一家公司工作,该公司在windows上使用火线摄像头开发实时视觉系统。软件只是作为应用程序运行。这使得处理和调试更加简单。它大部分是在C++中完成的。然而,如果您没有硬实时要求(软件需要在50毫秒内完成任务),那么C#就可以了


您可以将其作为服务运行,但无需特别考虑。

需要考虑以下几点:

  • 访问硬件/驱动程序是否有任何限制或必需的权限,以及哪个windows标识允许您的服务(提升)访问
  • 是否需要与用户界面进行任何交互
在我看来,如果没有额外的细节,如果不需要用户界面,windows服务似乎可以达到这个目的

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


[注:我与Top Shelf或其开发者无关]

是的,触发是通过硬件完成的(飞行控制计算机的一个上升边缘,用于告诉摄像机同时捕捉所有镜头),这是唯一真正的实时功能。windows系统只需尽可能快地从摄像机中取出数据,并将其写入某种(最好是可移动的)存储器。它的“接口”将只是通过TCP/IP发送的一些简单命令,如“开始/停止收集数据”,这些命令将来自任务管理计算机。我正在以自己的(管理员特权)用户帐户运行visual studio相机SDK附带的测试应用程序,它不会触发任何UAC/etc消息。对于这个特定的组件,安全性并不是一个真正的问题,所以我可以以管理员的身份运行我编写的东西(不管是服务还是应用程序)。我只是想确保不会有人冒昧地说“哦,你绝对不能从windows服务的上下文中访问(网络摄像头| usb |媒体|任何东西)子系统”。我主要是*NIX开发人员,你能告诉我:P?windows服务只是普通的应用程序代码,只是限制了在没有任何用户界面组件的情况下工作。通常适用于后台处理和监控。