Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过符号条形码扫描仪DS4208的SNAPI.dll API进行图像捕获_C#_Barcode Scanner - Fatal编程技术网

C# 通过符号条形码扫描仪DS4208的SNAPI.dll API进行图像捕获

C# 通过符号条形码扫描仪DS4208的SNAPI.dll API进行图像捕获,c#,barcode-scanner,C#,Barcode Scanner,我想通过SNAPI API从Symbol(目前为Zebra)条码扫描仪DS4208(我们也在使用另一款但与Zebra兼容的型号)捕获图像。 条形码捕获/识别工作得很好,但看起来像SnapiDLL.SNAPI_SnapShot(hScanner)调用无法正常工作:没有收到任何消息。 下面是一段小而简化的代码片段: // Set image format short[] parms = new short[2] { (short)SnapiParamIds.ImageFileType, (short

我想通过SNAPI API从Symbol(目前为Zebra)条码扫描仪DS4208(我们也在使用另一款但与Zebra兼容的型号)捕获图像。 条形码捕获/识别工作得很好,但看起来像SnapiDLL.SNAPI_SnapShot(hScanner)调用无法正常工作:没有收到任何消息。 下面是一段小而简化的代码片段:

// 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(即无错误),但我的消息处理程序未收到任何消息

Zebra SDK中使用CoreScanner驱动程序和OCX的p.S.C#应用程序运行良好,能够捕获图像和视频。但出于某些原因,我希望避免安装CoreScanner驱动程序;对于条形码扫描,小而简单的SNAPI.dll工作得很好,我希望它也能用于图像捕获-可能是我做错了什么


p.p.S.各位,如果您没有使用符号条形码扫描仪和SNAPI的经验,并且无法提供工作片段,请不要发表评论

在联系Zebra技术支持(他们是Symbol/Motorola条形码扫描仪业务的继承者)后,我发现x64操作系统的SNAPI.dll中的成像/视频功能已被破坏(但大多数rest API调用工作正常)。不幸的是,Zebra不再支持SNAPI,我应该使用Zebra的CoreScanner API。好消息是:这个API工作正常,正如它应该的那样。这不是一个好消息:我应该使用Zebra提供的附加安装包。

使用供应商驱动程序,而不是标准的Microsoft驱动程序。Microsoft standard drive仅实现标准功能,并且许多硬件制造商都支持它;我只使用了一小部分标准接口。@jdweng,问题不在于使用“标准或非标准驱动程序”。顺便说一句,SNAPI.dll是“符号本机应用程序编程接口”的缩写(因此它是供应商标准的驱动程序和API)。我很好奇,根据API文档,为什么它不能正常工作:那些DoEvents()调用看起来非常不健康,它们表明你把它做得太简单了,没有创建Winforms或WPF应用程序。具有调度器循环的类型,确保您能够正确接收WM_uu消息。DoEvents()无法工作,创建快照需要太多时间。当然,您编写的消息处理程序对于诊断任何“它不起作用”的问题都很重要。@Hans Passant,您的评论与此完全无关。应用程序中的事件处理工作正常,我从SNAPI dll接收(并处理)所有消息。我的问题不在于Windows消息处理或“错误代码”。谁制作了这个SNAPI?你应该向他们寻求技术支持,而不是像这样的通用网站。