Thermal Label SDK NullReferenceException

本文关键字:NullReferenceException SDK Label Thermal | 更新日期: 2023-09-27 18:19:34

我正在尝试创建一个将打印到热敏打印机的程序。我使用的是Visual Express 2010,C#和Neodynamic的Thermal Label SDK。我会注意到,我并没有使用应用程序本身,只是添加了对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的内容是,当某个东西为"null"时,它就会发生。我理解这一点,但由于我是Thermal Label SDK的新手,我不知道我缺少了什么;如果你愿意,我需要分配当前为"null"的内容。我试着找到这个问题的其他例子,但什么也找不到。

提前感谢!

Thermal Label SDK NullReferenceException

我已经通过自己的一些实验解决了我的问题。

尽管在我能找到的任何教程或文档中都从未提到过这一点,但我找到了一个非常简单的解决方案。在初始化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;

热敏打印机现在可以打印我想要的任何东西。完美的我希望这对其他人有帮助。