POS для .Net не может обнаружить принтер

Я использую POS для .Net framework версии 1.12 для одного из моих проектов.

Microsoft POS для .NET — это библиотека классов, входящая в состав Microsoft Windows Embedded for Point of Service. http://msdn.microsoft.com/en-us/library/ms828083%28v=winembedded.10%29.aspx

    private PosPrinter GetReceiptPrinter()
    {
        PosExplorer posExplorer = new PosExplorer(this);
        DeviceInfo receiptPrinterDevice = posExplorer.GetDevice(DeviceType.PosPrinter);
        return (PosPrinter)posExplorer.CreateInstance(receiptPrinterDevice);
    } 

выше приведен пример кода для поиска принтера. Теперь моя проблема заключается в том, что POS не может обнаружить принтер, а только открывает симулятор с данными, когда я запускаю свое приложение.

Может кто-нибудь мне помочь ?


person Neel Patel    schedule 01.01.2013    source источник
comment
Добавляются ли сведения о вашем принтере (LDN) в файл конфигурации??   -  person TutuGeorge    schedule 19.01.2013


Ответы (2)


Я разработал приложение для POS, работающего под управлением Windows CE в качестве операционной системы, но для этого POS производитель предоставил пользовательскую dll для вызова операций принтера, которые я использовал в своем коде C#. Обратитесь к производителю POS и посмотрите, предоставляют ли они для него специальную dll.

person Deepansh Gupta    schedule 01.01.2013

Ваша строка кода

DeviceInfo receiptPrinterDevice = posExplorer.GetDevice(DeviceType.PosPrinter);

вернет по умолчанию или первый найденный PosPrinter, который в вашем случае выглядит как симулятор.

Вам нужно либо (1) перебрать коллекцию принтеров и каким-то образом выбрать нужный. то есть

foreach (DeviceInfo deviceInfo in explorer.GetDevices(DeviceType.PosPrinter))
{
    if (isThisThePrinterIWant(deviceInfo))   // user defined function (maybe lookup saved preference file)
    {
        return (PosPrinter)posExplorer.CreateInstance(deviceInfo );
    }
} // Note: GetDevices() not GetDevice()

или (2) Задайте логическое имя для вашего принтера (используя программное обеспечение, поставляемое с вашим принтером, или утилиту POSDM, включенную в Pos for .Net SDK) и измените указанную выше строку на

DeviceInfo receiptPrinterDevice = posExplorer.GetDevice(DeviceType.PosPrinter, "madeUpLogicalName");

или (3) Просто установите нужный принтер в качестве принтера по умолчанию и оставьте код таким, какой он есть.

person Dale    schedule 13.12.2013