Пакет SDK для термометки NullReferenceException

Я пытаюсь создать программу, которая будет печатать на термопринтере. Я использую Visual Express 2010, C# с пакетом SDK Thermal Label от Neodynamic. Замечу, что я не использую само приложение, а просто добавляю ссылку на файл ddl для использования Thermal Label. Я следил за некоторыми учебными пособиями и ресурсами в Интернете о том, как заставить все работать, но когда я запускаю следующий код, он выдает это исключение в строке 131 (обозначено в коде):

System.NullReferenceException: ссылка на объект не указывает на экземпляр объекта.

            //Define a label
            ThermalLabel tLabel = new ThermalLabel(UnitType.Cm, 8, 0);

            //Create labels items
            TextItem tTitle = new TextItem();
            tTitle.Text = "Yummy Yummy";
            tTitle.X = 0.5;
            tTitle.Y = 0.5;
            tTitle.Height = 0.5;
            tTitle.Width = 1;

            //Add items to the label
            tLabel.Items.Add(tTitle);

            //Create a PrintJob object
            PrintJob pj = new PrintJob();
            //Thermal printer is connected through parallel port
            pj.PrinterSettings.Communication.CommunicationType = CommunicationType.Parallel;
            //^^^^^^^^^^LINE 131^^^^^^^^^
            //Set thermal printer resolution
            pj.PrinterSettings.Dpi = 203;
            //Set thermal printer language
            pj.PrinterSettings.ProgrammingLanguage = ProgrammingLanguage.EPL;
            //Set thermal printer parallel port name
            pj.PrinterSettings.Communication.ParallelPortName = "LPT1";
            //Set number of copies...
            pj.Copies = 2;
            //Print ThermalLabel object...
            pj.Print(tLabel);

Что я читал о NullReferenceExcpetion, так это то, что это происходит, когда что-то является «нулевым». Я понимаю это, но, поскольку я новичок в SDK Thermal Label, я не знаю, чего мне не хватает; что в настоящее время является «нулевым», что мне нужно назначить, если хотите. Я пытался найти другие примеры этой проблемы, но ничего не нашел.

Заранее спасибо!


person Oli    schedule 27.10.2015    source источник


Ответы (1)


Мне удалось решить мою проблему с помощью некоторых собственных экспериментов.

Несмотря на то, что это никогда не упоминалось ни в одном учебнике или документации, которую я мог найти, я нашел довольно простое решение. Перед инициализацией объекта PrintJob я просто добавил этот код для инициализации объекта PrintSettings...

//Create a PrintSettings object
PrinterSettings ps = new PrinterSettings();
ps.Communication.CommunicationType = CommunicationType.Parallel;

Изменил это...

PrintJob pj = new PrintJob();

Для этого, чтобы объект PrintSettings передавался объекту PrintJob...

PrintJob pj = new PrintJob(ps);

И удалил эту строку, так как она больше не нужна...

pj.PrinterSettings.Communication.CommunicationType = CommunicationType.Parallel;

Теперь термопринтер печатает все, что я хочу. Идеальный. Я надеюсь, что это полезно для других людей.

person Oli    schedule 27.10.2015