我正在处理热收据打印机(ARP-990KE)项目,我尝试使用以下代码打印发票,但代码GetDevice()
给我错误值不能为null。参数名称:设备
PosExplorer posExplorer = new PosExplorer(this);
DeviceInfo receiptPrinterDevice = posExplorer.GetDevice("Generic/Text Only");
return (PosPrinter)posExplorer.CreateInstance(receiptPrinterDevice); // Here it gives me null
答案 0 :(得分:1)
GetDevice似乎被你传递的"Generic/Text Only"
搞糊涂了。
PosExplorer.GetDevice(String)
方法(即接受单个参数的方法)返回给定设备类的默认设备。设备类应该是DeviceType
类(在您的情况下为DeviceType.PosPrinter
)中的常量之一。这是GetDevice(String)
期望的参数:
DeviceInfo receiptPrinterDevice = posExplorer.GetDevice(DeviceType.PosPrinter);
请注意,如果您打算使用此方法,请确保您已将打印机设置为默认设置(或者没有此类型的其他设备)。
您可能希望考虑使用更通用的替代方案。 PosExplorer.GetDevice(String, String)
在其第二个参数中接受设备名称,因此您不会仅限于默认设备:
DeviceInfo receiptPrinterDevice = posExplorer.GetDevice(DeviceType.PosPrinter, <device name>);
<device name>
可以使用
"C:\Program Files (x86)\Microsoft Point Of Service\posdm.exe" listdevices /type:PosPrinter