c# - 通过用于 Symbol 条码扫描仪 DS4208 的 SNAPI.dll API 捕获图像
问题描述
我想通过 SNAPI API 从 Symbol(目前是 Zebra)条码扫描仪 DS4208 型号(我们还使用 Zebra 的另一个但兼容的型号)中捕获图像。条形码捕获/识别工作得很好,但看起来SnapiDLL.SNAPI_SnapShot(hScanner)调用无法正常工作:根本没有收到WM_XFERSTATUS消息。这是小而简化的代码片段:
// Set image format
short[] parms = new short[2] { (short)SnapiParamIds.ImageFileType, (short)SnapiImageTypes.Jpeg };
var retCode = SnapiDLL.SNAPI_SetParameters(parms, 2, _devHandles[0]);
Debug.WriteLine($"SNAPI_SetParameters retCode={retCode}");
Application.DoEvents();
Thread.Sleep(50);
retCode = SnapiDLL.SNAPI_SnapShot(_devHandles[0]);
Debug.WriteLine($"SNAPI_SnapShot retCode={retCode}");
Application.DoEvents();
Thread.Sleep(50);
retCode = SnapiDLL.SNAPI_PullTrigger(_devHandles[0]);
Debug.WriteLine($"SNAPI_PullTrigger retCode={retCode}");
Application.DoEvents();
Thread.Sleep(50);
返回代码始终为 0(即没有错误),但我的消息处理程序没有收到WM_XFERSTATUS消息。
Zebra 的 SDK 中的 PS C# 应用程序使用 CoreScanner 驱动程序和 OCX,运行良好,能够捕获图像和视频。但出于某些原因,我想避免安装 CoreScanner 驱动程序;对于条形码扫描来说,小而简单的 SNAPI.dll 工作得很好,我希望它也能用于图像捕获 - 可能,我做错了什么......
PPS 伙计们,如果您没有使用符号条码扫描器和 SNAPI的经验,并且无法提供工作片段,请不要发表评论!
解决方案
在联系 Zebra 技术支持(他们是 Symbol/Motorola 条形码扫描仪业务的继承者)后,我发现 x64 操作系统的 SNAPI.dll 中的成像/视频功能被破坏了(但大多数其他 API 调用都正常工作)。不幸的是,Zebra 不再支持 SNAPI,我应该使用 Zebra 的 CoreScanner API。好消息是:这个 API 运行良好,正如它应该的那样。不是一个好消息:我应该使用 Zebra 的附加安装包。
推荐阅读
- reactjs - 如何在 react-table 中为组件内容添加不区分大小写的过滤?
- tensorflow - 可变大小大于 GPU 的内存
- python - 行星倾角,用python沿着轨道跟踪旋转轴
- linux - 如何在文件名(也是子目录)中用一个空格替换双空格(CloudLinux Server 6.10 版)
- bash - 将 bash 命令重构为 tcsh 命令
- postgresql - PostgreSQL 的可重复读取允许幻读但它的文档说它不允许
- c# - 请将 SQL 转换为 LINQ 或改进我的查询
- javascript - 方形表单构建不填充 IOS 设备上的字段(Phonegap 应用程序)
- typo3 - 有没有办法在typo3 6.2.31中添加登录框
- java - 如何在 Java 中使用 Base64 对特殊字符进行编码