.Net的POS无法检测到打印机

时间:2013-01-01 10:17:48

标签: c# asp.net winforms pos-for-.net

我正在使用POS for .Net framework version 1.12 for my project。

Microsoft POS for .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无法检测到打印机,只能打开带有数据的模拟器。

谁能帮助我吗?

2 个答案:

答案 0 :(得分:1)

我开发了一个运行Windows CE作为操作系统的POS应用程序但是对于该POS,制造商提供了一个自定义DLL来调用我在C#代码中使用的打印机操作。请咨询POS制造商,看看他们是否提供相同的自定义dll。

答案 1 :(得分:1)

您的代码行

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)为您的打印机设置逻辑名称(使用打印机附带的软件或Pos for .Net SDK附带的POSDM实用程序)并将上述行更改为

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

(3)只需将所需的打印机设置为默认打印机,然后保留代码。