Donnovan
Donnovan

Reputation: 223

I'm trying to send esc/pos data to a VKP80II printer in C# through usb

I'm trying to send a string data to my vkp80ii printer, I did this with a raw binary file and it printed but when I try to use string it doesn't do anything.

class VKP80II_Driver
{
    
    static USBH_Printer printer;
    static AutoResetEvent printerConnected = new AutoResetEvent(false);

    public static void Main()
    {
        // Subscribe to USBH event.
        USBHostController.DeviceConnectedEvent += DeviceConnectedEvent;

        // wait for printer to be connectoed.
        printerConnected.WaitOne();
   
        // Get file to print
        //byte[] buffer = Resources.GetBytes(Resources.BinaryResources.beep);
        byte[] buffer = StrToByteArray("$0AHello World");

        // Printing can take a long time, give it a 5 seconds timeout here
        printer.SendData(buffer, 0, buffer.Length, 5000);

        // Sleep forever
        Thread.Sleep(Timeout.Infinite);
    }

    // Is printer connected event
    static void DeviceConnectedEvent(USBH_Device device)
    {
        if (device.TYPE == USBH_DeviceType.Printer)
        {
            printer = new USBH_Printer(device);
            printerConnected.Set();
        }
    }

    // Parse string object to byte array
    static byte [] StrToByteArray(string str)
    {
        System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
        return encoding.GetBytes(str);
    }
}

Upvotes: 1

Views: 3999

Answers (2)

MTM SUHAIL
MTM SUHAIL

Reputation: 21

When I need such a functionality I couldn't find any library related to that. So I decided to make one.

ESC-POS-USB-NET is a free and open source .NET (C#) Implementation of the Epson ESC/POS Printing using USB Device Driver.

This library is available Open Source @ MIT license.

You can install from Nuget Packages

follow the steps below:

⏳ Installation Install Strapi with this Quickstart command to create a project instantly:

(Use nuget package manager to install (recommended))

Install-Package ESC-POS-USB-NET

or

(Use .Net Cli to install)

dotnet add package ESC-POS-USB-NET

This command install ESC-POS-USB-NET with your project.

Enjoy 🎉

❤️ Example Using C# Import ESC_POS_USB_NET Printer Class:

using ESC_POS_USB_NET.Printer;

You can find printer name from (Windows): Control Panel->Hardware and Sound->Devices and Printers-> Your Printer's Name

Test Print:

Printer printer = new Printer("Printer Name");
printer.TestPrinter();
printer.FullPaperCut();
printer.PrintDocument();

Print Image:

Printer printer = new Printer("Printer Name");
Bitmap image =new Bitmap ( Bitmap.FromFile("Icon.bmp"));
printer.Image(image);
printer.FullPaperCut();
printer.PrintDocument();

Print Barcodes:

Printer printer = new Printer("Printer Name");
printer.Append("Code 128");
printer.Code128("123456789");
printer.Separator();
printer.Append("Code39");
printer.Code39("123456789");
printer.Separator();
printer.Append("Ean13");
printer.Ean13("1234567891231");
printer.FullPaperCut();
printer.PrintDocument();

Open Drawer:

Printer printer = new Printer("Printer Name");
printer.OpenDrawer();
printer.PrintDocument();

Typography Test:

Printer printer = new Printer("Printer Name");
printer.Append("NORMAL - 48 COLUMNS");
printer.Append("1...5...10...15...20...25...30...35...40...45.48");
printer.Separator();
printer.Append("Text Normal");
printer.BoldMode("Bold Text");
printer.UnderlineMode("Underlined text");
printer.Separator();
printer.ExpandedMode(PrinterModeState.On);
printer.Append("Expanded - 23 COLUMNS");
printer.Append("1...5...10...15...20..23");
printer.ExpandedMode(PrinterModeState.Off);
printer.Separator();
printer.CondensedMode(PrinterModeState.On);
printer.Append("Condensed - 64 COLUMNS");
printer.Append("1...5...10...15...20...25...30...35...40...45...50...55...60..64");
printer.CondensedMode(PrinterModeState.Off);
printer.Separator();
printer.DoubleWidth2();
printer.Append("Font Width 2");
printer.DoubleWidth3();
printer.Append("Font Width 3");
printer.NormalWidth();
printer.Append("Normal width");
printer.Separator();
printer.AlignRight();
printer.Append("Right aligned text");
printer.AlignCenter();
printer.Append("Center-aligned text");
printer.AlignLeft();
printer.Append("Left aligned text");
printer.Separator();
printer.Font("Font A", Fonts.FontA);
printer.Font("Font B", Fonts.FontB);
printer.Font("Font C", Fonts.FontC);
printer.Font("Font D", Fonts.FontD);
printer.Font("Font E", Fonts.FontE);
printer.Font("Font Special A", Fonts.SpecialFontA);
printer.Font("Font Special B", Fonts.SpecialFontB);
printer.Separator();
printer.InitializePrint();
printer.SetLineHeight(24);
printer.Append("This is first line with line height of 30 dots");
printer.SetLineHeight(40);
printer.Append("This is second line with line height of 24 dots");
printer.Append("This is third line with line height of 40 dots");
printer.NewLines(3);
printer.Append("End of Test :)");
printer.Separator();
printer.FullPaperCut();
printer.PrintDocument();

🎈 Features:

  • Alignment: Left, Right and Center alignment.
  • BarCode: Code128, Code39, Ean13 barcodes are supported.
  • Drawer: Drawer Open facility.
  • Font Mode: Supported Bold, Underline, Expanded, Condensed modes.
  • Change Font: Change font to device specified FontA, FontB, FontC, FontD, FontE, SpecialFontA and SpecialFontB.
  • Font Width: Supported Normal, DoubleWidth2 and DoubleWidth3.
  • Image: Print BMP Image.
  • Paper Cut: Cut paper with Full & Partial Cut.
  • QrCode: Support 2D barcode (QrCode).

Upvotes: 2

Donnovan
Donnovan

Reputation: 223

answer to the question

is i had to send real bytes to to printer

example:

byte[]  newByte = new bytes [] {0x0A};

printer.SendData(newByte, 0, buffer.Length, 5000);

Upvotes: 1

Related Questions