在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → C#并口打印机指令打印Demo

C#并口打印机指令打印Demo

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.08M
  • 下载次数:41
  • 浏览次数:568
  • 发布时间:2019-09-03
  • 实例类别:C#语言基础
  • 发 布 人:11221
  • 文件格式:.rar
  • 所需积分:2
 相关标签: demo 打印机 指令 打印 C#

实例介绍

【实例简介】

【实例截图】

from clipboard

【核心代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO.Ports;

using Printer.SDK.API;
using System.Text.RegularExpressions;


namespace PrtWinDemo
{
    public partial class PrtWinDemoForm : Form
    {
        //Support Page Mode Models
        public List<string> PageModePrinterList = new List<string> { "POS80A", "POS80B", "POS80C", "POS80E", "POS80D","ME31" };

        private IntPtr printer;

        bool isPageModePrinter;
        string imagePath;
        int Index;
        

        public PrtWinDemoForm()
        {
            InitializeComponent();
            setButtonEnable(false);

            this.cmbPortType.SelectedIndex = 1;
            this.txtPortSetting.Text = "USB";
            this.cmbImage.SelectedIndex = 0;
        }
        private void setButtonEnable(bool isEnable)
        {
            btnConnect.Enabled = !isEnable;
            btnStop.Enabled = isEnable;
            this.grbBtn.Enabled = isEnable;
            
        }
        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {
            string modelsetting = this.txtModel.Text;
            string portsetting = this.txtPortSetting.Text;

            if (Constants.E_SUCCESS != DllAPI.PrinterCreator(ref printer, modelsetting))
                {
                    MessageBox.Show("Creator Model Failed!");
                    return;
                }

            if (Constants.E_SUCCESS == DllAPI.PortOpen(printer, portsetting))
            {
                //设置字符集
                DllAPI.SetCodePage(printer, Constants.CHARACTERSET_DEFAULT, 0);

                this.tboxInfo.Text = "Connect Succeed";
                setButtonEnable(true);
                //判断是否支持页模式
                isPageModePrinter = PageModePrinterList.Contains(modelsetting);
                if (!isPageModePrinter)
                {
                    this.btnPrintLabel.Enabled = false;
                }
            }
            else
                MessageBox.Show("Port Open Failed!");
        }
        private void btnStop_Click(object sender, EventArgs e)
        {
            this.tboxInfo.Text = "Close Port";
            DllAPI.PortClose(printer);
            setButtonEnable(false);
        }

        private void btnPrintLabel_Click(object sender, EventArgs e) 
        {
            double hMotion = 0.125, vMotion = 0.125;    // distance per dot
            int pageWidth =72, pageHeight = 500;        // mm
            int width_dots = (int)(pageWidth / hMotion);
            int height_dots = (int)(pageHeight / vMotion);
  
            if (CheckPrinterState())
            {
                DllAPI.PrinterInitialize(printer);
                DllAPI.SelectPageMode(printer);
                DllAPI.SetPrintAreaInPageMode(printer, 0, 0, width_dots, height_dots);
                DllAPI.SelectPrintDirectionInPageMode(printer, Constants.PRINT_DIRECTION_LEFT_TO_RIGHT);

                ////print CODE128
                DllAPI.SetAbsolutePrintPosition(printer, 20);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 96);
                DllAPI.PrintBarCode(printer, Constants.BARCODE_CODE128, "{A1101123456789", 1, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);

                ////print EAN13
                DllAPI.SetAbsolutePrintPosition(printer, 20);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 300);
                DllAPI.PrintBarCode(printer, Constants.BARCODE_EAN13, "2501138000002", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
                
                ////print QRCode
                DllAPI.SetAbsolutePrintPosition(printer, 20);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 400);
                DllAPI.PrintBarCode(printer, Constants.SYMBOL_QRCODE1, "QRCODE 1 123456", 5, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_NONE);

                ////print QRCode
                DllAPI.SetAbsolutePrintPosition(printer, 220);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 400);
                DllAPI.PrintBarCode(printer, Constants.SYMBOL_QRCODE2, "QRCODE 2 654321", 5, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_NONE);
                
                ////print PDF417  
                DllAPI.SetAbsolutePrintPosition(printer, 20);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 850);
                DllAPI.PrintSymbol(printer, Constants.SYMBOL_STANDARD_PDF417, "China 0123456 ABC  _*&", Constants.PDF417_ERROR_CORRECTION_LEVEL_0, 3, 2, Constants.ALIGNMENT_LEFT);
                //////UPCA
                DllAPI.SetAbsolutePrintPosition(printer, 20);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 1150);
                DllAPI.PrintBarCode(printer, Constants.BARCODE_UPC_A, "023150456784", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
                //////UPCE
                DllAPI.SetAbsolutePrintPosition(printer, 20);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 1350);
                DllAPI.PrintBarCode(printer, Constants.BARCODE_UPC_E, "01220000899", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);

                //////print EAN8
                DllAPI.SetAbsolutePrintPosition(printer, 20);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 1550);
                DllAPI.PrintBarCode(printer, Constants.BARCODE_EAN8, "1542656", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
                
                //////print CODE39
                DllAPI.SetAbsolutePrintPosition(printer, 20);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 1850);
                DllAPI.PrintBarCode(printer, Constants.BARCODE_CODE39, "*10401YY00002009*", 2, 100, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
                
                //////print  ITF
                DllAPI.SetAbsolutePrintPosition(printer, 20);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 2050);
                DllAPI.PrintBarCode(printer, Constants.BARCODE_ITF, "11231111032125", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);

                //////print  CODABAR
                DllAPI.SetAbsolutePrintPosition(printer, 20);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 2250);
                DllAPI.PrintBarCode(printer, Constants.BARCODE_CODABAR, "A40156A", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
                
                //////print  CODE93
                DllAPI.SetAbsolutePrintPosition(printer, 20);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 2450);
                DllAPI.PrintBarCode(printer, Constants.BARCODE_CODE93, "CODE930093", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);

                DllAPI.SetAbsolutePrintPosition(printer, 20);
                DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 2600);
                DllAPI.PrintText(printer, "PRINT TEXT TEST\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
               

                DllAPI.PrintAndReturnStandardMode(printer);
                

            }
        }

        private void btnDirectIO_Click(object sender, EventArgs e)
        {
            //byte[] writedata = new byte[] { 0x1D, 0x72, 0x01 };
            byte[] writedata = new byte[] { 0x1b, 0x76 };
            int readnum = 0;
            byte[] readdata = new byte[1];
            DllAPI.DirectIO(printer, writedata, writedata.Length, readdata, readdata.Length, ref readnum);
            if (readnum > 0)
            {
                tboxInfo.Text = "";
                for (int i = 0; i < readnum; i  )
                {
                    tboxInfo.Text  = Convert.ToString(readdata[i], 16)   " ";
                }
            }
        }

        private void btnState_Click(object sender, EventArgs e)
        {
            uint printer_state = 0;
            DllAPI.GetPrinterState(printer, ref printer_state);
            if (Constants.STS_NORMAL == printer_state)
            {
               tboxInfo.Text ="Printer state normal.";
            }
            else
            {
                CheckPrinterState();
            }
        }

        private void btnPrintReceipt_Click(object sender, EventArgs e)
        {
            if (CheckPrinterState())
            {

                DllAPI.PrinterInitialize(printer);
                DllAPI.PrintText(printer, "Receipt:270500027                Cashier:01012\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "----------------------------------------------\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "  Commodity Code         Price        Quantity\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_FONT_EMPHASIZED | Constants.TEXT_FONT_UNDERLINE_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "01.9940228004700          3.98           1.181\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "   banana                       subtotal:4.70 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "02.996100800220           6.00           0.376\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "   noodle                       subtotal:2.20 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "03.6921644701204          3.50           1    \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "   fruit juice                  subtotal:3.50 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "04.9940316000602          5.16           0.116\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "   flour                        subtotal:0.60 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "----------------------------------------------\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "Total:                  RMB             11.00 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "Payment:                RMB            101.00 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "Change:                 RMB             90.00 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "Sold Quantity:                           4    \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "  13th,Sep,2014   16:50:19\n", Constants.ALIGNMENT_CENTER, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "Thank you for patronizing\n", Constants.ALIGNMENT_CENTER, Constants.TEXT_FONT_UNDERLINE_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.PrintText(printer, "PRT-Mart\n", Constants.ALIGNMENT_CENTER, Constants.TEXT_FONT_REVERSE, Constants.TEXT_SIZE_1WIDTH | Constants.TEXT_SIZE_0HEIGHT);
                DllAPI.CutPaper(printer, Constants.FULL_CUT, 120);
                
                //int a = 0;
                //byte[] str = new byte[] { 0x1b, 0x61, 0x00, 0x1b, 0x21, 0x00, 0x1d, 0x21, 0x00, 0xCD, 0xF5, 0xCE, 0xC4, 0xD5, 0xC2,0x0d,0x0a };
                //byte[] str1 = new byte[] { 0x1b, 0x10 };
                //DllAPI.DirectIO(printer, str, 17, str1, 0, ref a);
            }
        }

        private bool CheckPrinterState()
        {
            uint s = 0;
            int result = Constants.E_SUCCESS;

            PrinterState printerState = new PrinterState();

            result = DllAPI.GetPrinterState(printer, ref s);
            if (Constants.E_SUCCESS == result)
            {
                printerState.State = s;
            }
            else
            {
                printerState.State |= PrinterState.STS_ERROR;
            }


            if (printerState.PAPEREMPTY == true)
            {
                tboxInfo.Text ="Printer paper not present,please insert the printing paper.";
                return false;
            }
            if (printerState.COVEROPEN == true)
            {
                tboxInfo.Text ="Printer paper cover open,please check paper cover.";
                return false;
            }
            if (printerState.PAPERNEAREND == true)
            {
                tboxInfo.Text = "Printer paper near end,please insert the printing paper.";
            }
            if (printerState.MSR_READY == true)
            {
                //to do
            }
            if (printerState.SMARTCARD_READY == true)
            {
                //to do
            }
            if (printerState.ERROR == true)
            {
                MessageBox.Show("Printer state error.");
                return false;
            }
            if (printerState.NOT_OPEN == true)
            {
                MessageBox.Show("Printer not open.");
                return false;
            }
            if (printerState.OFFLINE == true)
            {
              tboxInfo.Text ="Printer offline,please check printer state.";
                return false;
            }

            return true;
        }

        private void cmbPortType_SelectedIndexChanged(object sender, EventArgs e)
        {
            string porttype = this.cmbPortType.Text.ToUpper();
            if ("COM" == porttype)
                this.txtPortSetting.Text = "COM3,BAUDRATE_115200";
            else if ("NET" == porttype)
                this.txtPortSetting.Text = "Net,192.168.1.37";
            else if ("USB" == porttype)
            {
                this.txtPortSetting.Text = "USB";
            }
            else if ("LPT" == porttype)
                this.txtPortSetting.Text = "LPT1";
            else
            {
                this.txtPortSetting.Text = "Invalid";
            }
        }

        private void btnVersion_Click(object sender, EventArgs e)
        {
            int[] Version = new int[3];

            if (Constants.E_SUCCESS == DllAPI.GetFirmwareVersion(printer, Version, Version.Length))
                MessageBox.Show("Printer FirmwareVersion:"
                      Version[0].ToString()  "."
                      Version[1].ToString()   "."
                      Version[2].ToString()
                    );
        }

        private void btnDownLoadImage_Click(object sender, EventArgs e)
        {
            if (CheckPrinterState())
            {
                int result=0;
                OpenFileDialog dlg = new OpenFileDialog();
                dlg.Filter = "Image files|*.bmp;*.gif;*.jpg;*.png;";
                string imgMethod = this.cmbImage.Text;

                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    string fname = dlg.FileName;
                    if ("RasterImage" == imgMethod)
                    {
                        imagePath = fname;
                    }
                    else if ("BufferedImage" == imgMethod)
                    {
                        result = DllAPI.DefineBufferedImage(printer, fname);
                    }
                    else if ("NVImage" == imgMethod)
                    {
                        result = DllAPI.DefineNVImage(printer, fname, (byte)'1', (byte)'1');
                    }
                    Index = this.cmbImage.SelectedIndex;
                    if (Constants.E_SUCCESS == result)
                    {
                        MessageBox.Show("DownLoad Succeed.");
                        btnPrint.Enabled = true;
                    }
                    else
                    {
                        MessageBox.Show("DownLoad Failed."   result.ToString());
                        btnPrint.Enabled = false;
                    }
                }
            }
        }

        private void btnPrint_Click(object sender, EventArgs e)
        {
            switch (Index)
            {
                case 0: DllAPI.PrintImage(printer, imagePath, 0);
                        btnPrint.Enabled = false;
                        break;
                case 1: DllAPI.PrintBufferedImage(printer);
                        btnPrint.Enabled = false;
                        break;
                case 2: DllAPI.PrintNVImage(printer, (byte)'1', (byte)'1'); break;
                default:
                    break;
            }
        }

    }
}

实例下载地址

C#并口打印机指令打印Demo

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警