1

我正在使用UWP 条形码示例。

我正在尝试将 UWP PointOfService API 与运行 Windows 10 Mobile Enterprise 的 Panasonic FZ-F1 一起使用。我无法获得支持的符号,因为scanner.GetSupportedSymbologiesAsync()总是返回一个 null System.__ComObject。使用本机视图,在调试设备时属于 IUnknown 类型。

0x00007ff8ca8ba278 {Windows.Devices.PointOfService.dll!const Windows::Internal::AsyncOperation<struct Windows::Foundation::IAsyncOperation<struct Windows::Foundation::Collections::IVectorView<unsigned int> *>, struct Windows::Foundation::IAsyncOperationCompletedHandler<struct Windows::Foundation::Collections::IVectorView<unsigned int> *>, class Windows::Internal::CMarshaledInterfaceResult<struct Windows::Foundation::Collections::IVectorView<unsigned int> >, class Windows::Internal::ComTaskPoolHandler,struct Windows::Internal::INilDelegate,struct Microsoft::WRL::AsyncOptions<-1,0,&struct _GUID const GUID_CAUSALITY_WINDOWS_PLATFORM_ID,2> >::`vftable'{for `Microsoft::WRL::Details::ImplementsHelper<struct Microsoft::WRL::RuntimeClassFlags<3>,1,struct Windows::Foundation::IAsyncOperation<struct Windows::Foundation::Collections::IVectorView<unsigned int> *>, struct Windows::Internal::IAsyncOperationLocal,struct Microsoft::WRL::CloakedIid<struct Windows::Internal::IAsyncDeferral>,struct Microsoft::WRL::CloakedIid<struct Windows::Internal::IComPoolTask>,struct Microsoft::WRL::CloakedIid<struct Windows::Internal::IAsyncFireCompletion> >'}} {...}

我还在 Windows 10 16299 上使用 Honeywell Xenon 1900g 对此进行了测试,但它在那里也不起作用。这是那里的错误。

$exception  {System.NullReferenceException: Object reference not set to an instance of an object.
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at SDKTemplate.Scenario3_ActiveSymbologies.<ScenarioStartScanButton_Click>d__8.MoveNext()} System.NullReferenceException

StackTrace  "   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at SDKTemplate.Scenario3_ActiveSymbologies.<ScenarioStartScanButton_Click>d__8.MoveNext()"  string

我需要能够支持长度为10的TfInt(I2of5),由于无法设置长度属性而无法扫描。我曾尝试使用claimScanner.GetSymbologyAttributesAsync(BarcodeSymbologies.TfInt)定义条形码,但它失败并出现以下异常。

{System.Exception: The request is not supported. (Exception from HRESULT: 0x80070032)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at SDKTemplate.Scenario4_SymbologyAttributes.<SymbologySelection_Changed>d__13.MoveNext()}  System.Exception

FZ-F1 确实支持 TfInt (I2of5)。使用其预加载的 Barcode Reader 演示应用程序(我假设它是使用 Windows 8.1 Handheld API 创建的),我可以在那里分配长度,它可以按预期工作。

目前,经过一些测试,我发现 API 默认为 TfInt (I2of5) Length1、Length2 或 AnyLength(我不确定当前设置的内容)使用 14 的长度,因此有一个可能的解决方法,即我们可以将所有条形码更改为使用 14 的长度。如果长度低于 14,则无法扫描。

任何人都可以深入了解这个 API 是否真的适用于我尝试过的事情。他们创建的样本就像它一样有效,但根据我的经验,它没有。(将此添加到文档中将非常有帮助)

4

1 回答 1

1

在与 Microsoft 和 Panasonic 开票后,结果如下。

从松下:

GetSupportedSymbologiesAsync:目前,此 API 无法正确返回支持的符号。此问题将在 RS3 上修复。但是,我认为这个问题对 UWP 用户应用程序的影响不大,因为 FZ-F1 支持的符号系统没有变化。

GetSymbologyAttributesAsync: 不支持此 API。

我遇到的问题与无法使用设备上的 Panasonic Barcode Reader 应用程序配置 Interleaved 2 of 5 符号系统有关。我错误地认为,由于我无法使用该应用程序,因此我必须在代码中执行此操作。事实证明,条形码阅读器中应用的设置不起作用的原因是设备需要运行以下命令才能应用条形码阅读器中的设置 - 否则应用符号系统默认值。

认领扫描仪后...

await claimedScanner.SetActiveProfileAsync("OEMProfile");

这是 Panasonic 支持文档,他们在其中发布了此要求,因为这是一个持续的支持问题,我在 2017 年 10 月首次与他们联系。

http://pc-dl.panasonic.co.jp/dl/docs/076321?dc[]=002012&no=3&p1=221&q=FZ-F1&score=1.43731880187988&sri=12077714&trn_org=2

这是一个工作示例项目。如果您使用的符号系统需要设置长度,并且您没有使用默认长度,这可能会对您有所帮助。

https://1drv.ms/u/s!Am4H1xOfJ2mxgQ_pqOia9wj46oKq

于 2018-02-07T03:50:17.897 回答