MagneticStripeReader.GetDefaultAsync();返回null

时间:2015-10-04 15:58:37

标签: c# windows windows-runtime windows-8.1 windows-10

我有一个usb连接的MSR阅读器,我试图通过使用here中证明的示例代码来获得它。这工作正常,但问题是当我向我的应用程序添加相同的代码时,它不起作用。 GetDefaultAsync返回null。

private static MagneticStripeReader _reader = null;

public static async void StartRead()
{
    if (await CreateDefaultMagneticStripeReaderObject())
    {
        ....
    }
}

private static async Task<bool> CreateDefaultMagneticStripeReaderObject()
{
    if (_reader == null)
    {
        _reader = await MagneticStripeReader.GetDefaultAsync();
        if (_reader == null)
            return false;
    }
    return true;
}

我的代码就像上面一样,非常类似于样本,但它不起作用。我还添加了pointOfService的设备功能。事实并非如此。

2 个答案:

答案 0 :(得分:1)

我处于完全相同的情况,我花了最后5个小时,最后我知道发生了什么。您缺少Package.appxmanifest

中的功能

'pointOfService'是您要包含的功能。此功能未在UI中显示,因此我找不到我的破坏项目和Microsoft的示例项目之间的任何差异。您无法使用UI添加该功能。您必须通过修改XML文件手动添加它。

微软的示例项目也有它 https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/MagneticStripeReader/cs/Package.appxmanifest#L53

答案 1 :(得分:0)

确保读卡器处于HID模式,而不是键盘仿真模式。那是我的一个问题。

要做到这一点真的很不稳定。 MagTek在他们的网站上有一个ActiveX控件来帮助我们......因为ActiveX很糟糕,你只能在InternetExplorer上使用它(它甚至不能用于Edge。)

转到IE:https://www.magtek.com/changemode/

弹出时启用活动X,您可以从隐藏更改为键盘并返回。