热敏标签 SDK NullReferenceException
Thermal Label SDK NullReferenceException
我正在尝试创建一个将打印到热敏打印机的程序。我正在使用 Visual Express 2010,C# 和来自 Neodynamic 的 Thermal Label SDK。我会注意到我没有使用应用程序本身,只是添加对 ddl 文件的引用以使用 Thermal Label。我已经按照网络上的一些教程和资源了解如何使事情正常进行,但是当我 运行 以下代码时,它在第 131 行(在代码中标记)抛出此异常:
System.NullReferenceException: Object reference not set to an instance of an object.
//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" 是什么。我已尝试查找此问题的其他示例,但找不到任何内容。
提前致谢!
我已经通过自己的一些实验解决了我的问题。
尽管我能找到的任何教程或文档中都没有提到这一点,但我找到了一个非常简单的解决方案。在初始化 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;
热敏打印机现在可以打印任何我想要的东西了。完美的。我希望这对其他人有帮助。
我正在尝试创建一个将打印到热敏打印机的程序。我正在使用 Visual Express 2010,C# 和来自 Neodynamic 的 Thermal Label SDK。我会注意到我没有使用应用程序本身,只是添加对 ddl 文件的引用以使用 Thermal Label。我已经按照网络上的一些教程和资源了解如何使事情正常进行,但是当我 运行 以下代码时,它在第 131 行(在代码中标记)抛出此异常:
System.NullReferenceException: Object reference not set to an instance of an object.
//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" 是什么。我已尝试查找此问题的其他示例,但找不到任何内容。
提前致谢!
我已经通过自己的一些实验解决了我的问题。
尽管我能找到的任何教程或文档中都没有提到这一点,但我找到了一个非常简单的解决方案。在初始化 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;
热敏打印机现在可以打印任何我想要的东西了。完美的。我希望这对其他人有帮助。