6

我正在开发一个使用条形码扫描仪(摩托罗拉 MC75A)的移动应用程序。我为 .NET v2.5 安装了 EMDK。

我使用库 Symbol.dll 和 Symbol.barcode2.dll 来使用条形码扫描仪。但是当我使用 Windows Mobile 6.5 在模拟器设备上运行代码时出现错误。

代码:

Barcode2 myBarcode2 = null;
Device MyDevice = SelectDevice.Select(
"Barcode",Symbol.Barcode2.Devices.SupportedDevices);// Exception here

例外:

{"Can't find PInvoke DLL 'SCNAPI32.dll'."}

我需要另一个模拟器或其他东西吗?

谢谢

4

2 回答 2

10

AFAIK,SCNAPI32.dll 是本机 dll,它存在于摩托罗拉设备上(从 ROM 加载)并由 Symbol dll 调用。模拟器不是摩托罗拉设备,因此它没有安装这些库。如果设备有 USB 电缆,您可以使用 ActiveSync(或 Windows 移动中心)连接它并在设备本身上进行调试;不知道摩托罗拉有没有模拟器。

如果您确实需要使用默认模拟器测试应用程序,您可以创建一个空的 Symbol.dll 和 Symbol.barcode2.dll,重新创建与 Symbol 相同的接口并使用它们进行调试。而不是激活扫描仪,你可以然后Console.WriteLine("Scanner activated");等等。

于 2011-10-14T23:24:26.297 回答
3

我遇到了与 Symbol & Symbol.Audio 类似的问题。我的错误信息是

找不到 PInvoke DLL 'AudioAPI32.dll'

事实证明,某些符号“设备”有模拟模式。摩托罗拉符号库使用设备或模拟器的注册表检测这些模式。要访问 Emulator 注册表,您可以使用 Visual Studio Remote Tools \ Remote Registry Editor

然后只需连接到您的模拟器(Windows Mobile 6.5.3 Professional Emulator),并确保在

[HKEY_LOCAL_MACHINE\软件\符号]

如果没有 Simulation-string 值,默认值可能是 Auto - 在这种情况下,模拟器会询问您要使用哪种模式。您也可以尝试将模拟添加为“始终”。

您还可以添加检查以查看设备是否可用,例如:

if (Symbol.Barcode.Device.AvailableDevices == null) return;

于 2012-02-23T12:34:38.537 回答