【发布时间】:2015-05-30 08:31:36
【问题描述】:
我们有一个 Windows 服务(用 C# 编写),它使用第 3 方 DLL 与 COM 打印机通信。
已经在 4 台本地机器上测试了 windows 服务,并且在每种情况下打印机都能正常工作。
我们也有这个 Windows 服务已经部署在多个客户端的生产中,它也可以正常工作,但是现在我们将它部署到一个新客户端,并且在每次测试中,我们制作的 DLL 都无法打开 COM 端口(已经检查过看看它是否被另一个应用程序使用,什么都没有)。
但最奇怪的是,如果我们从命令行启动服务 .exe 它可以正常工作,所以我们尝试在用户连接到机器(而不是本地系统)时启动服务,即使这样它也不起作用.
这可能是什么原因造成的?有什么方法可以通过 Windows 配置或某些软件来阻止 Windows 服务与 COM 端口通信?还是有其他解释?
【问题讨论】:
-
您如何确定没有其他应用程序正在使用该串行端口? (即客户说的可能是正确的,因为没有串行端口可供使用)。
-
检查 COM 端口的使用,如下所示: MyPort = new SerialPort("COM1"); try{MyPort.Open();} catch (Exception ex){Console.WriteLine("Error opening port: {0}", ex.Message);}
-
如果没有“COM1”,那怎么会失败(如果有的话)? (是的,我去现场安装过,发现他们的硬件根本不符合系统的要求。)
-
我不明白你的意思,但请注意,如果不是作为 Windows 服务启动,该应用程序可以正常工作。
-
抱歉,问题看错了。 (看来您不能将 ACL 分配给串行端口,所以不是这样:我的第二个想法)。您在工作和不工作的情况下得到了哪些诊断:是否有任何 API 调用失败?
标签: windows service printing serial-port