POS 打印屏显指令的发送

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;

namespace EPSONPOS
{
    public class POS
    {
        /// <summary>
        /// 创建文件
        /// </summary>
        /// <param name="lpFileName">端口名(文件名)</param>
        /// <param name="dwDesiredAccess">访问模式(写/读)如果为0,表示只允许获取与一个设备有关的信息</param>
        /// <param name="dwShareMode">共享模式(0表示不共享)</param>
        /// <param name="lpSecurityAttributes">指向安全属性的指针</param>
        /// <param name="dwCreationDisposition">如何创建</param>
        /// <param name="dwFlagsAndAttributes">文件属性</param>
        /// <param name="hTemplateFile">用于复制文件句柄(如果不为零,则指定一个文件句柄。
        /// 新文件将从这个文件中复制扩展属性)</param>
        /// <returns></returns>
        [DllImport("kernel32.dll ", CharSet = CharSet.Auto)]
        private static extern IntPtr CreateFile(string lpFileName,
        int dwDesiredAccess,
        int dwShareMode,
        int lpSecurityAttributes,
        int dwCreationDisposition,
        int dwFlagsAndAttributes,
        int hTemplateFile);
        [DllImport("kernel32.dll")]
        private static extern bool CloseHandle(IntPtr hObject);

        System.IO.Ports.SerialPort com;

        public POS()
        {

        }

        /// <summary>
        /// 初始化串口
        /// </summary>
        /// <param name="commport"></param>
        [Description("初始化串口")]
        public void InitComm(int commport)
        {
            try
            {
                com = new System.IO.Ports.SerialPort();
                com.BaudRate = 2400;
                com.PortName = "COM" + commport.ToString();
                com.DataBits = 8;
                com.StopBits = System.IO.Ports.StopBits.One;
                if (!com.IsOpen)
                {
                    com.Open();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 关闭串口
        /// </summary>
        [Description("关闭串口")]
        public void CloseComm()
        {
            try
            {
                if (com.IsOpen)
                {
                    com.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 是否打开串口
        /// </summary>
        /// <returns></returns>
        [Description("是否打开串口")]
        public bool isOpen()
        {
            try
            {
                if (com.IsOpen)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 开钱箱(STAR)
        /// </summary>
        [Description("开钱箱(STAR)")]
        public void OpenBoxForStar()
        {
            try
            {
                IntPtr iHandle = CreateFile("LPT1 ", 0x40000000, 0, 0, 3, 0, 0);
                if (iHandle.ToInt32() != -1)
                {
                    FileStream fs = new FileStream(iHandle, FileAccess.ReadWrite, true);
                    StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);   //写数据
                    StringBuilder sb = new StringBuilder();
                    sb.Append((char)0x1B);
                    sb.Append((char)'p');
                    sb.Append((char)0x07);//传入命令
                    sw.Write(sb.ToString());
                    sw.Close();
                    fs.Close();
                    CloseHandle(iHandle);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 开钱箱(EPSON)
        /// </summary>
        [Description("开钱箱(EPSON)")]
        public void OpenBox()
        {
            try
            {
                IntPtr iHandle = CreateFile("LPT1 ", 0x40000000, 0, 0, 3, 0, 0);
                if (iHandle.ToInt32() != -1)
                {
                    FileStream fs = new FileStream(iHandle, FileAccess.ReadWrite, true);
                    StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);   //写数据
                    StringBuilder sb = new StringBuilder();
                    sb.Append((char)0x1B);
                    sb.Append((char)'p');
                    sb.Append((char)0x00);//传入命令
                    sb.Append((char)0x3C);//传入命令
                    sb.Append((char)0xFF);//传入命令
                    sw.Write(sb.ToString());
                    sw.Close();
                    fs.Close();
                    CloseHandle(iHandle);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 打印
        /// </summary>
        /// <param name="sb"></param>
        [Description("打印")]
        public void Print(StringBuilder sb)
        {
            try
            {
                if (sb != null)
                {
                    IntPtr iHandle = CreateFile("LPT1 ", 0x40000000, 0, 0, 3, 0, 0);
                    if (iHandle.ToInt32() != -1)
                    {
                        FileStream fs = new FileStream(iHandle, FileAccess.ReadWrite, true);
                        StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);   //写数据
                        //sb.AppendLine(str);
                        sw.Write(sb.ToString());
                        sw.Close();
                        fs.Close();
                        CloseHandle(iHandle);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 合计金额(总金额)
        /// </summary>
        /// <param name="needpay"></param>
        [Description("合计金额(总金额)")]
        public void PosScreenShowNeedPay(decimal needpay)
        {
            try
            {
                if (com.IsOpen)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append((char)0x1B);
                    sb.Append((char)0x51);
                    sb.Append((char)0x41);
                    string pay = string.Format("{0:F2}", needpay);
                    for (int i = 0; i < pay.Length; i++)
                    {
                        sb.Append((char)pay[i]);
                    }
                    sb.Append((char)0x0D);
                    com.WriteLine(sb.ToString());
                    sb.Remove(0, sb.ToString().Length);
                    sb.Append((char)0x1B);
                    sb.Append((char)0x73);
                    sb.Append((char)0x32);
                    com.WriteLine(sb.ToString());
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 实收金额(收款金额)
        /// </summary>
        /// <param name="factpay"></param>
        [Description("实收金额(收款金额)")]
        public void PosScreenShowFactPay(decimal factpay)
        {
            try
            {
                if (com.IsOpen)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append((char)0x1B);
                    sb.Append((char)0x51);
                    sb.Append((char)0x41);
                    string pay = string.Format("{0:F2}", factpay);
                    for (int i = 0; i < pay.Length; i++)
                    {
                        sb.Append((char)pay[i]);
                    }
                    sb.Append((char)0x0D);
                    com.WriteLine(sb.ToString());
                    sb.Remove(0, sb.ToString().Length);
                    sb.Append((char)0x1B);
                    sb.Append((char)0x73);
                    sb.Append((char)0x33);
                    com.WriteLine(sb.ToString());
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 找零金额
        /// </summary>
        /// <param name="returnmoney"></param>
        [Description("找零金额")]
        public void PosScreenShowReturnMoney(decimal returnmoney)
        {
            try
            {
                if (com.IsOpen)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append((char)0x1B);
                    sb.Append((char)0x51);
                    sb.Append((char)0x41);
                    string pay = string.Format("{0:F2}", returnmoney);
                    for (int i = 0; i < pay.Length; i++)
                    {
                        sb.Append((char)pay[i]);
                    }
                    sb.Append((char)0x0D);
                    com.WriteLine(sb.ToString());
                    sb.Remove(0, sb.ToString().Length);
                    sb.Append((char)0x1B);
                    sb.Append((char)0x73);
                    sb.Append((char)0x34);
                    com.WriteLine(sb.ToString());
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值