0

我有一个 USB 扫描仪,我通过制造商提供的 DLL 连接和使用它。

这些是我用来访问它的功能:

    [DllImport(".\\lib\\HsId600s.dll", SetLastError = true, CallingConvention = CallingConvention.Cdecl)]
    public static extern byte HsIDCis_DeviceOpen(IntPtr APPHwnd);

    [DllImport(".\\lib\\HsId600s.dll", SetLastError = true, CallingConvention = CallingConvention.Cdecl)]
    public static extern bool HsIDCis_DeviceClose();

    [DllImport(".\\lib\\HsId600s.dll", SetLastError = true, CallingConvention = CallingConvention.Cdecl)]
    public static extern byte HsIDCis_IDScan(string pImageFileName, bool bhorizontal);

所以在 C# 中,我会像这样访问扫描仪:

IntPtr h = this.Handle;
byte rslt = ID600.HsIDCis_DeviceOpen(h);
ID600.HsIDCis_IDScan(Path.Combine(Path.GetTempPath(), @"test"), false);

我首先将当前表单的句柄传递给扫描仪,然后打开一个连接。然后继续使用 IDScan 开始扫描。最后我控制表单的 WndProc 寻找扫描完成的代码,最后使用关闭与扫描仪的通信

ID600.HsIDCis_DeviceClose();

一切正常,但我正在尝试将第二台扫描仪连接到计算机。我似乎无法找到一种方法来选择与之交流的人。

如果两者都已连接,则通信将转到最后一个使用的通信。如果我把那个关掉,程序就会与另一个通信。

有任何想法吗?

4

0 回答 0