我有一台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();
一切正常,但我正在尝试将第二台扫描仪连接到计算机。我似乎无法找到一种方法来选择与之沟通。
如果两者都已连接,则通信将转到最后使用的通信。如果我关闭那个,该程序与另一个进行通信。
有什么想法吗?