Невозможно использовать EMDK для .NET - PullRequest
6 голосов
/ 15 октября 2011

Я занимаюсь разработкой мобильного приложения, которое использует сканер штрих-кода (Motorola MC75A).Я установил EMDK для .NET v2.5.

Я использую библиотеки 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'."}

нужен ли мне другойэмулятор или что-то еще?

Спасибо

Ответы [ 2 ]

10 голосов
/ 15 октября 2011

AFAIK, SCNAPI32.dll является родной dll, которая присутствует на устройствах Motorola (загружается из ПЗУ) и вызывается DLL-символами. Эмулятор не является устройством Motorola, поэтому на нем не установлены эти библиотеки. Если устройство имеет USB-кабель, вы можете подключить его с помощью ActiveSync (или Windows Mobile Center) и отладки на самом устройстве; Я не знаю, есть ли у Motorola эмуляторы.

Если вам действительно нужно протестировать приложение с помощью эмулятора по умолчанию, вы можете создать пустые Symbol.dll и Symbol.barcode2.dll, воссоздать тот же интерфейс, что и Symbol, и отладить их. Вместо того, чтобы активировать сканер, вы можете Console.WriteLine("Scanner activated"); и т. Д.

3 голосов
/ 23 февраля 2012

Я столкнулся с подобной проблемой с Symbol & Symbol.Audio. Мое сообщение об ошибке было

Не удается найти PInvoke DLL 'AudioAPI32.dll'

Оказывается, есть смоделированные режимы для некоторых устройств Symbol. Библиотеки Motorola Symbol определяют эти режимы, используя реестр устройства или эмулятора. Для доступа к реестру эмулятора вы можете использовать Visual Studio Remote Tools \ Удаленный редактор реестра

Затем просто подключитесь к вашему эмулятору (Windows Mobile 6.5.3 Professional Emulator) и убедитесь, что в 10101 * значение Simulation отсутствует как «Never».

[HKEY_LOCAL_MACHINE \ Software \ Symbol]

Если значение строки симуляции отсутствует, возможно, по умолчанию используется значение «Авто», и в этом случае эмулятор спрашивает, какой режим вы хотите использовать. Вы также можете попробовать добавить симуляцию как «Всегда».

Вы также можете добавить проверки, чтобы увидеть, доступны ли устройства, например:

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

...