【问题标题】:Communicating with attendance device and retrieving data in c#.net application在c#.net应用程序中与考勤设备通信并检索数据
【发布时间】:2017-03-21 10:56:50
【问题描述】:

我有一个型号为IN01的ZKTeco考勤设备。我正在尝试将它与 C# windows 窗体应用程序连接起来。我在 SysWOW64 文件夹中注册了 64 位版本的 Zkemkeeper.dll。我有以下代码:

 zkemkeeper.CZKEM axCZKEM1 = new zkemkeeper.CZKEM();
bool bIsConnected;
    bIsConnected = axCZKEM1.Connect_Net(192.168.1.201, Convert.ToInt32(4370));
           //    bIsConnected = axCZKEM1.Connect_Com(Convert.ToInt32(4370), 1, 9600);

   if (bIsConnected == true)
                {
                    MessageBox.Show("Device Connected Successfully");
                }
                else
                {
                    MessageBox.Show("Device Not Connect");

                }

但我从其他部分得到消息:

通过ip通信或使用串口通信

使用 puTTy 我能够与 ssh 和串行端口进行通信。提前致谢。

【问题讨论】:

  • SysWOW64 仅被系统用作System32 的镜像,用于在 64 位操作系统上运行的 32 位进程。您不应该将 anything 放在那里.事实上,你不应该在任何系统文件夹中放任何东西。您需要的所有 dll 都应放在应用程序的文件夹中
  • 把它放在你应用程序的文件夹中。 regsvr32 适用于任何路径。无论如何,注册应该是您的安装人员的责任。您不应该手动复制 dll
  • 我也把它放在了应用程序的文件夹中,但这不起作用。它没有向我显示错误消息,但每次都返回 false。
  • 当我尝试在 64 位中调试时,我从 else 部分收到消息,当我尝试使用 x86 调试时,我收到消息:Retrieving the COM class factory for component with CLSID {00853A19-BD51-419B- 9269-2DABE57EB61F} 由于以下错误而失败:80040154 未注册类(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。

标签: c#


【解决方案1】:

既然通过了“new zkemkeeper.CZKEM();”,那么我们可以确认COM dll注册成功并且应用程序已经成功加载了该DLL。

这看起来像是网络问题。几种解决方法:

  • 检查子网掩码,设备与电脑网关是否一致
  • 尝试在设备上更改 IP 并使用更新的 IP 执行您的应用程序
  • 读取axCZKEM1.GetLastError并检查错误码,如果有的话

请注意,该设备不像计算机那样智能。

【讨论】:

    【解决方案2】:

    看起来Connect_Net 需要一个字符串作为第一个参数,试试:

    bIsConnected = axCZKEM1.Connect_Net("192.168.1.201", Convert.ToInt32(4370));
    

    【讨论】:

    • 请您在问题中添加任何异常/错误详细信息。
    • 我尝试在 system32 文件夹中注册 dll 文件,但这显示了一个错误。 regsvr32 模块加载失败确保二进制文件存储在指定路径。但是在SysWOW64文件夹中注册成功。我有64位版本的操作系统。
    猜你喜欢
    • 1970-01-01
    • 2021-01-24
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2018-01-30
    相关资源
    最近更新 更多