Search code examples
c#wpfprintingepsonreceipt

POS Application Development - Receipt Printing


I've been building a POS application for a restaurant/bar.
The design part is done and for the past month I've been coding it.
Everything works fine except now I need to print. I have to print to a receipt printer connected to the computer running the software and later I'll try to print in a remote printer like a kitchen one.

I've searched for help in the matter only to find that the standard for printing in these types of printers is using POS for .NET. The thing is, this is now a bit outdated or at least it hasn't had any updates since a couple of years. There's a lot of questions being asked on how to use this library and most of the answers aren't quite easy to follow. So if anybody could give a step by step help on printing like a simple phrase ("Hello World") on a receipt printer i would be very grateful.
I'm using visual studio 2012 running on a 64 bit windows 7 and i'm coding WPF in c#.


Solution

  • POS for .NET is probably the way to go.

    Most receipt printer manufacturers will provide an OPOS service object.

    And as this MSDN article states, POS for .NET is compatible with OPOS v1.8 service objects.

    OPOS / UPOS (on which POS for .NET is based) is IMHO a poorly-designed API (designed by device manufacturers rather than application developers), but it's the best you have today.

    I don't have any specific samples but the basics are the same as OPOS - you need to Open, Claim, Enable a device, then you can call its methods (such as Print). You might try looking at an OPOS sample, for example this PosPrinter1 sample, which will probably be very similar to POS for .NET.

    This blog has some information about setting up POS for .NET that might be helpful.

    UPDATE

    Here's a VB Hello World for an OPOS printer. You first need to create a printer and add it to the registry with the required Logical Device Name = LDN. I believe the Epson ADK includes a utility to add a printer in the registry. This utility can also perform a health check on the printer to check it is installed correctly. Once you've done this, it should be easy enough to adapt the code below to POS for .NET

    OPOSPOSPrinter.Open "MyPrinter"    ' LDN of your printer   
    OPOSPOSPrinter.Claim 500           ' Timeout   
    OPOSPOSPrinter.DeviceEnabled = True  
    
    '- Print   
    OPOSPOSPrinter.PrintNormal 2, "Hello world"  
    
    '- Close the printer   
    If OPOSPOSPrinter.Claimed then   
       OPOSPOSPrinter.Release   
    End If  
    OPOSPOSPrinter.Close