从c#访问2个相同的扫描仪

时间:2018-01-17 23:14:26

标签: c# usb input-devices

我有一台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();

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

如果两者都已连接,则通信将转到最后使用的通信。如果我关闭那个,该程序与另一个进行通信。

有什么想法吗?

0 个答案:

没有答案