【问题标题】:Windows Service unable to open COM portWindows 服务无法打开 COM 端口
【发布时间】: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


【解决方案1】:

很抱歉所有来到这里寻找问题解决方案的人,但我的解决方案是更改第 3 方 DLL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2016-12-08
    • 2021-06-22
    相关资源
    最近更新 更多