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