zoukankan      html  css  js  c++  java
  • C# 网络打印机ESC指令打印小票

            public void SendSocketMsg(String ip, int port, int times, byte[] data)
            {
                try
                {
                    byte[] mData;
                    if (times == 1)
                    {
                        mData = new byte[data.Length];
                        Array.Copy(data, 0, mData, 0, data.Length);
                    }
                    else
                    {
                        mData = new byte[data.Length * times];
                        byte[][] m = new byte[times][];
                        for (int i = 0; i < times; i++)
                        {
                            m[i] = data;
                        }
                        Array.Copy(PrinterCmdUtils.byteMerger(m), 0, mData, 0, PrinterCmdUtils.byteMerger(m).Length);
                    }
    
                    #region 同步 Socket
                    Socket mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    IPAddress ipAddress = IPAddress.Parse(ip);
                    IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, port);
    
                    mySocket.Connect(ipEndPoint);
                    //mySocket.Send(data);
                    mySocket.Send(mData);
                    mySocket.Close();
                    #endregion
                }
                catch (Exception ex)
                {
                    Logger.Trace(ex.Message);
                    Logger.Trace(ex.StackTrace);
                }
            }
        public class PrintService
        {
            static byte[] b_init = PrinterCmdUtils.init_printer();
            static byte[] b_nextLine = PrinterCmdUtils.nextLine(1);
            static byte[] b_next2Line = PrinterCmdUtils.nextLine(2);
            static byte[] b_next3Line = PrinterCmdUtils.nextLine(3);
            static byte[] b_center = PrinterCmdUtils.alignCenter();
            static byte[] b_left = PrinterCmdUtils.alignLeft();
            static byte[] b_breakPartial = PrinterCmdUtils.feedPaperCutPartial();
    
            /// <summary>
            /// 会员充值小票
            /// </summary>
            /// <param name="shop"></param>
            /// <param name="num"></param>
            /// <param name="count"></param>
            /// <param name="way"></param>
            /// <param name="time"></param>
            /// <returns></returns>
            public static byte[] charge(String shop, String num, String count, String way, String time)
            {
                String shop_f = "   会员充值(" + shop + "";
                String num_f = "   会员号码:" + num;
                String count_f = "   充值金额:" + count;
                String way_f = "   充值方式:" + way;
                String time_f = "   充值时间:" + time;
    
                try
                {
                    byte[] b_title = System.Text.Encoding.GetEncoding("gbk").GetBytes(shop_f); 
                    byte[] b_num = System.Text.Encoding.GetEncoding("gbk").GetBytes(num_f);
                    byte[] b_count = System.Text.Encoding.GetEncoding("gbk").GetBytes(count_f);
                    byte[] b_way = System.Text.Encoding.GetEncoding("gbk").GetBytes(way_f);
                    byte[] b_time = System.Text.Encoding.GetEncoding("gbk").GetBytes(time_f);
                    byte[] b_no = System.Text.Encoding.GetEncoding("gbk").GetBytes("   ----------------------------------------");
                    byte[] b_breakPartial = PrinterCmdUtils.feedPaperCutPartial();
    
                    byte[][] charge_0 = { 
                        b_init, 
                        b_center, b_title,  b_next2Line, 
                        b_left,   b_count,  b_nextLine, 
                        b_way,    b_nextLine, 
                        b_time,   b_nextLine, 
                        b_no,     b_nextLine,
                        b_breakPartial,
                        PrinterCmdUtils.open_money()
                        };
    
                    byte[][] charge_1 = { 
                        b_init, 
                        b_center, b_title,  b_next2Line, 
                        b_left,   b_num,    b_nextLine, 
                        b_count,  b_nextLine, 
                        b_way,    b_nextLine, 
                        b_time,   b_nextLine, 
                        b_no,     b_nextLine,
                        b_breakPartial,
                        PrinterCmdUtils.open_money() 
                        };
    
                    if (String.IsNullOrEmpty(num))
                    {
                        return PrinterCmdUtils.byteMerger(charge_0);
                    }
                    else
                    {
                        return PrinterCmdUtils.byteMerger(charge_1);
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }

    /// <summary> /// 收银小票 Json对象拼接 /// </summary> /// <param name="head"></param> /// <param name="recv"></param> /// <param name="foot"></param> /// <returns></returns> public static byte[] jsonParse(String head, String recv, String foot, String url) { try { //二维码生成 EscCommand esc = new EscCommand(); esc.addSelectErrorCorrectionLevelForQRCode((byte)0x31); esc.addSelectSizeOfModuleForQRCode((byte)8); esc.addStoreQRCodeData(url); esc.addPrintQRCode(); ArrayList datas = esc.getCommand(); Byte[] Bytes = new Byte[datas.Count]; for (int i = 0; i < datas.Count; i++) { Bytes[i] = (Byte)datas[i]; } byte[] bytes = EscCommand.toPrimitive(Bytes); //打印小票头部 List<String> headString = new List<String>(); List<TicketHead> mHeads = JsonConvert.DeserializeObject<List<TicketHead>>(head); headString.Add(" " + mHeads[0].Ordertime); headString.Add(" NO." + mHeads[0].Shopno); headString.Add(FileUtils.getFixedWidthString(" 当班人员:" + mHeads[0].Shopuser, 36) + "餐牌号:" + mHeads[0].Card); headString.Add(" ---------------------------------------------"); List<String> newString = new List<String>(); List<Ticket> mTickets = JsonConvert.DeserializeObject<List<Ticket>>(recv); String nameTitle = " 名称 数量 售价 优惠 总额"; newString.Add(nameTitle); for (int i = 0; i < mTickets.Count; i++) { StringBuilder item = new StringBuilder(); if (("1".Equals(mTickets[i].Type) || "2".Equals(mTickets[i].Type))) { if ("".Equals(mTickets[i].Parentid)) { if (mTickets[i].Name.Length > 8) { item.Append(FileUtils.getFixedWidthString(mTickets[i].Name.Substring(0, 8), 19)); item.Append(mTickets[i].Num.PadRight(4)); item.Append(String.Format("{0:F2}", mTickets[i].Price).PadRight(8)); item.Append(String.Format("{0:F2}", mTickets[i].Rebetmoney).PadRight(8)); item.Append(String.Format("{0:F2}", mTickets[i].Money).PadRight(6)); newString.Add(" " + item.ToString()); newString.Add(" " + mTickets[i].Name.Substring(8, mTickets[i].Name.Length - 8)); } else { item.Append(FileUtils.getFixedWidthString(mTickets[i].Name, 19)); item.Append(mTickets[i].Num.PadRight(4)); item.Append(String.Format("{0:F2}", mTickets[i].Price).PadRight(8)); item.Append(String.Format("{0:F2}", mTickets[i].Rebetmoney).PadRight(8)); item.Append(String.Format("{0:F2}", mTickets[i].Money).PadRight(6)); newString.Add(" " + item.ToString()); } } else { newString.Add(" " + mTickets[i].Name); } } } newString.Add(" ---------------------------------------------"); List<String> footString = new List<String>(); List<TicketFoot> mFoots = JsonConvert.DeserializeObject<List<TicketFoot>>(foot); String moneytotal = ((float.Parse(mFoots[0].DecAmmBalance) + float.Parse(mFoots[0].DecGroupBuyMoney))).ToString("f2"); String money = ((float.Parse(mFoots[0].DecRebeatBalance) + float.Parse(mFoots[0].DecGroupBuyMoney))).ToString("f2"); footString.Add(FileUtils.getFixedWidthString(" 餐品数量:", 20) + FileUtils.getFixedWidthString(mFoots[0].Counts, 10) + "点餐金额: " + moneytotal.PadRight(4)); if (float.Parse(mFoots[0].DecWipeMoney) != 0.0f) footString.Add(FileUtils.getFixedWidthString(" 抹零优惠:", 40) + mFoots[0].DecWipeMoney); if (float.Parse(mFoots[0].DecMemberCoupon) != 0.0f) footString.Add(FileUtils.getFixedWidthString(" 会员优惠:", 40) + mFoots[0].DecMemberCoupon); if (float.Parse(money) != 0.0f) { footString.Add(FileUtils.getFixedWidthString(" 券类优惠:", 40) + money.PadRight(4)); for (int i = 0; i < mTickets.Count; i++) { if (!"1".Equals(mTickets[i].Type) && !"2".Equals(mTickets[i].Type)) { footString.Add(FileUtils.getFixedWidthString(" " + mTickets[i].Name, 20) + mTickets[i].Num); } else { if (!string.IsNullOrEmpty(mTickets[i].RebetName)) footString.Add(FileUtils.getFixedWidthString(" " + mTickets[i].RebetName, 20) + 1); } } } footString.Add(" ---------------------------------------------"); if (float.Parse(mFoots[0].DecPaidBalance) != 0.0f) footString.Add(FileUtils.getFixedWidthString(" 折后支付:", 40) + mFoots[0].DecPaidBalance); if (float.Parse(mFoots[0].Membermoney) != 0.0f) footString.Add(FileUtils.getFixedWidthString(" 会员支付:", 40) + mFoots[0].Membermoney); if (float.Parse(mFoots[0].Cashmoney) != 0.0f) footString.Add(FileUtils.getFixedWidthString(" 现金支付:", 40) + mFoots[0].Cashmoney); if (!string.IsNullOrEmpty(mFoots[0].Bankmoney)) footString.Add(FileUtils.getFixedWidthString(" " + mFoots[0].Bankmoney.Split(':')[0], 40) + mFoots[0].Bankmoney.Split(':')[1]); if (float.Parse(mFoots[0].Givechange) != 0.0f) footString.Add(FileUtils.getFixedWidthString(" 现金找零:", 40) + mFoots[0].Givechange); if (float.Parse(mFoots[0].RechMoney) != 0.0f) footString.Add(FileUtils.getFixedWidthString(" 充值金额:", 40) + mFoots[0].RechMoney); ///////////////////////////////////////////////////////////////////////////////////////// byte[][] headByte = new byte[15][]; //头部数组 headByte[0] = b_init; headByte[1] = b_center; headByte[2] = System.Text.Encoding.GetEncoding("gbk").GetBytes("欢迎光临"); headByte[3] = b_nextLine; headByte[4] = System.Text.Encoding.GetEncoding("gbk").GetBytes(mHeads[0].Shopbrand); headByte[5] = b_next2Line; headByte[6] = b_left; for (int i = 0; i < 8; i += 2) { headByte[i + 7] = System.Text.Encoding.GetEncoding("gbk").GetBytes(headString[i / 2]); headByte[i + 8] = b_nextLine; } byte[][] contentByte = new byte[newString.Count * 2][]; //中间体 for (int i = 0; i < newString.Count * 2; i += 2) { contentByte[i] = System.Text.Encoding.GetEncoding("gbk").GetBytes(newString[i / 2]); contentByte[i + 1] = b_nextLine; } byte[][] footByte = new byte[footString.Count * 2 + 23][]; //底部数组 for (int i = 0; i < footString.Count * 2; i += 2) { footByte[i] = System.Text.Encoding.GetEncoding("gbk").GetBytes(footString[i / 2]); footByte[i + 1] = b_nextLine; } footByte[footString.Count * 2] = System.Text.Encoding.GetEncoding("gbk").GetBytes(" ---------------------------------------------"); if (string.IsNullOrEmpty(mHeads[0].Memberid)) { footByte[footString.Count * 2 + 1] = b_center; footByte[footString.Count * 2 + 2] = b_center; } else { footByte[footString.Count * 2 + 1] = b_nextLine; footByte[footString.Count * 2 + 2] = System.Text.Encoding.GetEncoding("gbk").GetBytes(" 会员号:" + mHeads[0].Memberid); } footByte[footString.Count * 2 + 3] = b_next2Line; footByte[footString.Count * 2 + 4] = b_center; footByte[footString.Count * 2 + 5] = System.Text.Encoding.GetEncoding("gbk").GetBytes("谢谢惠顾!欢迎再次光临!"); footByte[footString.Count * 2 + 6] = b_nextLine; footByte[footString.Count * 2 + 7] = System.Text.Encoding.GetEncoding("gbk").GetBytes("如需开发票,请凭小票在一周内到门店开取"); footByte[footString.Count * 2 + 8] = b_next2Line; footByte[footString.Count * 2 + 9] = b_left; footByte[footString.Count * 2 + 10] = System.Text.Encoding.GetEncoding("gbk").GetBytes(" 门店地址:" + mHeads[0].Shopaddress); footByte[footString.Count * 2 + 11] = b_nextLine; footByte[footString.Count * 2 + 12] = System.Text.Encoding.GetEncoding("gbk").GetBytes(" 联系电话:" + mHeads[0].Shoptel); footByte[footString.Count * 2 + 13] = b_nextLine; footByte[footString.Count * 2 + 14] = System.Text.Encoding.GetEncoding("gbk").GetBytes(" 品牌网址:" + mHeads[0].Url); footByte[footString.Count * 2 + 15] = b_next2Line; footByte[footString.Count * 2 + 16] = b_center; footByte[footString.Count * 2 + 17] = b_next2Line; footByte[footString.Count * 2 + 18] = System.Text.Encoding.GetEncoding("gbk").GetBytes("微信扫一扫 畅享免费WiFi"); footByte[footString.Count * 2 + 19] = b_next2Line; footByte[footString.Count * 2 + 20] = bytes; footByte[footString.Count * 2 + 21] = b_breakPartial; footByte[footString.Count * 2 + 22] = PrinterCmdUtils.open_money(); byte[][] totalByte = new byte[38 + newString.Count * 2 + footString.Count * 2][]; Array.Copy(headByte, totalByte, headByte.Length); Array.Copy(contentByte, 0, totalByte, headByte.Length, contentByte.Length); Array.Copy(footByte, 0, totalByte, headByte.Length + contentByte.Length, footByte.Length); return PrinterCmdUtils.byteMerger(totalByte); } catch (Exception) { Logger.Trace("Head:" + head); Logger.Trace("Recv:" + recv); Logger.Trace("Foot:" + foot); Logger.Trace("url:" + url); throw; } } }
        public class PrinterCmdUtils
        {
    
            public const byte ESC = 27;    // 换码
            public const byte FS = 28;    // 文本分隔符
            public const byte GS = 29;    // 组分隔符
            public const byte DLE = 16;    // 数据连接换码
            public const byte EOT = 4;    // 传输结束
            public const byte ENQ = 5;    // 询问字符
            public const byte SP = 32;    // 空格
            public const byte HT = 9;    // 横向列表
            public const byte LF = 10;    // 打印并换行(水平定位)
            public const byte CR = 13;    // 归位键
            public const byte FF = 12;    // 走纸控制(打印并回到标准模式(在页模式下) )
            public const byte CAN = 24;    // 作废(页模式下取消打印数据 )
    
            /**
             * 打印纸一行最大的字节
             */
            private const int LINE_BYTE_SIZE = 32;
            /**
             * 分隔符
             */
            private const String SEPARATOR = "$";
            private static StringBuilder sb = new StringBuilder();
    
            /**
             * 打印机初始化
             * 
             * @return
             */
            public static byte[] init_printer()
            {
                byte[] result = new byte[2];
                result[0] = ESC;
                result[1] = 64;
                return result;
            }
    
            /**
             * 打开钱箱
             * 
             * @return
             */
            public static byte[] open_money()
            {
                byte[] result = new byte[5];
                result[0] = ESC;
                result[1] = 112;
                result[2] = 48;
                result[3] = 64;
                result[4] = 0;
                return result;
            }
    
            /**
             * 换行
             * 
             * @param lineNum要换几行
             * @return
             */
            public static byte[] nextLine(int lineNum)
            {
                byte[] result = new byte[lineNum];
                for (int i = 0; i < lineNum; i++)
                {
                    result[i] = LF;
                }
    
                return result;
            }
    
    
            /**
             * 绘制下划线(1点宽)
             * 
             * @return
             */
            public static byte[] underlineWithOneDotWidthOn()
            {
                byte[] result = new byte[3];
                result[0] = ESC;
                result[1] = 45;
                result[2] = 1;
                return result;
            }
    
            /**
             * 绘制下划线(2点宽)
             * 
             * @return
             */
            public static byte[] underlineWithTwoDotWidthOn()
            {
                byte[] result = new byte[3];
                result[0] = ESC;
                result[1] = 45;
                result[2] = 2;
                return result;
            }
    
            /**
             * 取消绘制下划线
             * 
             * @return
             */
            public static byte[] underlineOff()
            {
                byte[] result = new byte[3];
                result[0] = ESC;
                result[1] = 45;
                result[2] = 0;
                return result;
            }
    
    
            /**
             * 选择加粗模式
             * 
             * @return
             */
            public static byte[] boldOn()
            {
                byte[] result = new byte[3];
                result[0] = ESC;
                result[1] = 69;
                result[2] = 0xF;
                return result;
            }
    
            /**
             * 取消加粗模式
             * 
             * @return
             */
            public static byte[] boldOff()
            {
                byte[] result = new byte[3];
                result[0] = ESC;
                result[1] = 69;
                result[2] = 0;
                return result;
            }
    
    
            /**
             * 左对齐
             * 
             * @return
             */
            public static byte[] alignLeft()
            {
                byte[] result = new byte[3];
                result[0] = ESC;
                result[1] = 97;
                result[2] = 0;
                return result;
            }
    
            /**
             * 居中对齐
             * 
             * @return
             */
            public static byte[] alignCenter()
            {
                byte[] result = new byte[3];
                result[0] = ESC;
                result[1] = 97;
                result[2] = 1;
                return result;
            }
    
            /**
             * 右对齐
             * 
             * @return
             */
            public static byte[] alignRight()
            {
                byte[] result = new byte[3];
                result[0] = ESC;
                result[1] = 97;
                result[2] = 2;
                return result;
            }
    
            /**
             * 水平方向向右移动col列
             * 
             * @param col
             * @return
             */
            public static byte[] set_HT_position(byte col)
            {
                byte[] result = new byte[4];
                result[0] = ESC;
                result[1] = 68;
                result[2] = col;
                result[3] = 0;
                return result;
            }
    
            /**
             * 字体变大为标准的n倍
             * 
             * @param num
             * @return
             */
            public static byte[] fontSizeSetBig(int num)
            {
                byte realSize = 0;
                switch (num)
                {
                    case 1:
                        realSize = 0;
                        break;
                    case 2:
                        realSize = 17;
                        break;
                    case 3:
                        realSize = 34;
                        break;
                    case 4:
                        realSize = 51;
                        break;
                    case 5:
                        realSize = 68;
                        break;
                    case 6:
                        realSize = 85;
                        break;
                    case 7:
                        realSize = 102;
                        break;
                    case 8:
                        realSize = 119;
                        break;
                }
                byte[] result = new byte[3];
                result[0] = 29;
                result[1] = 33;
                result[2] = realSize;
                return result;
            }
    
    
            /**
             * 字体取消倍宽倍高
             * 
             * @return
             */
            public static byte[] fontSizeSetSmall()
            {
                byte[] result = new byte[3];
                result[0] = ESC;
                result[1] = 33;
    
                return result;
            }
    
            /**
             * 进纸并全部切割
             * 
             * @return
             */
            public static byte[] feedPaperCutAll()
            {
                byte[] result = new byte[4];
                result[0] = GS;
                result[1] = 86;
                result[2] = 65;
                result[3] = 0;
                return result;
            }
    
            /**
             * 进纸并切割(左边留一点不切)
             * 
             * @return
             */
            public static byte[] feedPaperCutPartial()
            {
                byte[] result = new byte[4];
                result[0] = GS;
                result[1] = 86;
                result[2] = 66;
                result[3] = 0;
                return result;
            }
    
            public static byte[] bmpToByte(Bitmap bmp)
            {
                int h = bmp.Height / 24 + 1;
                int w = bmp.Width;
                byte[][] all = new byte[4 + 2 * h + h * w][];
    
                all[0] = new byte[] { 0x1B, 0x33, 0x00 };
    
                Color pixelColor;
                // ESC * m nL nH 点阵图  
                byte[] escBmp = new byte[] { 0x1B, 0x2A, 0x21, (byte)(w % 256), (byte)(w / 256) };
    
                // 每行进行打印  
                for (int i = 0; i < h; i++)
                {
                    all[i * (w + 2) + 1] = escBmp;
                    for (int j = 0; j < w; j++)
                    {
                        byte[] data = new byte[] { 0x00, 0x00, 0x00 };
                        for (int k = 0; k < 24; k++)
                        {
                            if (((i * 24) + k) < bmp.Height)
                            {
                                pixelColor = bmp.GetPixel(j, (i * 24) + k);
                                if (pixelColor.R == 0)
                                {
                                    data[k / 8] += (byte)(128 >> (k % 8));
                                }
                            }
                        }
                        all[i * (w + 2) + j + 2] = data;
                    }
                    //换行  
                    all[(i + 1) * (w + 2)] = PrinterCmdUtils.nextLine(1);
                }
                all[h * (w + 2) + 1] = PrinterCmdUtils.nextLine(2);
                all[h * (w + 2) + 2] = PrinterCmdUtils.feedPaperCutAll();
                all[h * (w + 2) + 3] = PrinterCmdUtils.open_money();
    
                return PrinterCmdUtils.byteMerger(all);
            }
    
            // ------------------------切纸-----------------------------
            public static byte[] byteMerger(byte[] byte_1, byte[] byte_2)
            {
                byte[] byte_3 = new byte[byte_1.Length + byte_2.Length];
                System.Array.Copy(byte_1, 0, byte_3, 0, byte_1.Length);
                System.Array.Copy(byte_2, 0, byte_3, byte_1.Length, byte_2.Length);
                return byte_3;
            }
    
            public static byte[] byteMerger(byte[][] byteList)
            {
                int Length = 0;
                for (int i = 0; i < byteList.Length; i++)
                {
                    Length += byteList[i].Length;
                }
                byte[] result = new byte[Length];
    
                int index = 0;
                for (int i = 0; i < byteList.Length; i++)
                {
                    byte[] nowByte = byteList[i];
                    for (int k = 0; k < byteList[i].Length; k++)
                    {
                        result[index] = nowByte[k];
                        index++;
                    }
                }
                return result;
            }
    
            public static byte[][] byte20Merger(byte[] bytes)
            {
                int size = bytes.Length / 10 + 1;
                byte[][] result = new byte[size][];
                for (int i = 0; i < size; i++)
                {
                    byte[] by = new byte[((i + 1) * 10) - (i * 10)];
                    //从bytes中的第 i * 10 个位置到第 (i + 1) * 10 个位置;
                    System.Array.Copy(bytes, i * 10, by, 0, (i + 1) * 10);
                    result[i] = by;
                }
                return result;
            }
        }
        public class TicketHead
        {
            private String memberid;        //会员号
    
            public String Memberid
            {
                get { return memberid; }
                set { memberid = value; }
            }
            private String card;            //餐牌号
    
            public String Card
            {
                get { return card; }
                set { card = value; }
            }
            private String shopname;        //店名
    
            public String Shopname
            {
                get { return shopname; }
                set { shopname = value; }
            }
            private String shopaddress;        //店地址
    
            public String Shopaddress
            {
                get { return shopaddress; }
                set { shopaddress = value; }
            }
            private String shoptel;            //店电话
    
            public String Shoptel
            {
                get { return shoptel; }
                set { shoptel = value; }
            }
            private String shopno;            //店编号
    
            public String Shopno
            {
                get { return shopno; }
                set { shopno = value; }
            }
            private String shopuser;        //当班人员
    
            public String Shopuser
            {
                get { return shopuser; }
                set { shopuser = value; }
            }
            private String ordertime;        //点单时间
    
            public String Ordertime
            {
                get { return ordertime; }
                set { ordertime = value; }
            }
            private String url;                //网址
    
            public String Url
            {
                get { return url; }
                set { url = value; }
            }
    
            private string shopbrand;
    
            public string Shopbrand
            {
                get { return shopbrand; }
                set { shopbrand = value; }
            }
        }
        public class Ticket
        {
            private String id;
    
            public String Id
            {
                get { return id; }
                set { id = value; }
            }
            private String type;
    
            public String Type
            {
                get { return type; }
                set { type = value; }
            }
            private String parentid;
    
            public String Parentid
            {
                get { return parentid; }
                set { parentid = value; }
            }
            private String name;
    
            public String Name
            {
                get { return name; }
                set { name = value; }
            }
            private String num;
    
            public String Num
            {
                get { return num; }
                set { num = value; }
            }
            private String price;
    
            public String Price
            {
                get { return price; }
                set { price = value; }
            }
            private String money;
    
            public String Money
            {
                get { return money; }
                set { money = value; }
            }
            private String rebetmoney;
    
            public String Rebetmoney
            {
                get { return rebetmoney; }
                set { rebetmoney = value; }
            }
            private String rebetName;
    
            public String RebetName
            {
                get { return rebetName; }
                set { rebetName = value; }
            }
            private String rebetid;
    
            public String Rebetid
            {
                get { return rebetid; }
                set { rebetid = value; }
            }
            private String rebetType;
    
            public String RebetType
            {
                get { return rebetType; }
                set { rebetType = value; }
            }
            private String grouptype;
    
            public String Grouptype
            {
                get { return grouptype; }
                set { grouptype = value; }
            }
            private String groupid;
    
            public String Groupid
            {
                get { return groupid; }
                set { groupid = value; }
            }
            private String serialnumber;
    
            public String Serialnumber
            {
                get { return serialnumber; }
                set { serialnumber = value; }
            }
    
            private String addonname;
    
            public String AddOnName
            {
                get { return addonname; }
                set { addonname = value; }
            }
    
        }
        public class TicketFoot
        {
            private String decAmmBalance;        //点餐总额
    
            public String DecAmmBalance
            {
                get { return decAmmBalance; }
                set { decAmmBalance = value; }
            }
            private String decRebeatBalance;    //券内优惠
    
            public String DecRebeatBalance
            {
                get { return decRebeatBalance; }
                set { decRebeatBalance = value; }
            }
            private String decGroupBuyMoney;    //+
    
            public String DecGroupBuyMoney
            {
                get { return decGroupBuyMoney; }
                set { decGroupBuyMoney = value; }
            }
            private String decPaidBalance;        //折后支付
    
            public String DecPaidBalance
            {
                get { return decPaidBalance; }
                set { decPaidBalance = value; }
            }
            private String decMemberCoupon;        //会员优惠
    
            public String DecMemberCoupon
            {
                get { return decMemberCoupon; }
                set { decMemberCoupon = value; }
            }
            private String decWipeMoney;        //抹零优惠
    
            public String DecWipeMoney
            {
                get { return decWipeMoney; }
                set { decWipeMoney = value; }
            }
            private String wipe;                //
    
            public String Wipe
            {
                get { return wipe; }
                set { wipe = value; }
            }
            private String cashmoney;            //现金支付
    
            public String Cashmoney
            {
                get { return cashmoney; }
                set { cashmoney = value; }
            }
            private String bankmoney;            //银行卡支付
    
            public String Bankmoney
            {
                get { return bankmoney; }
                set { bankmoney = value; }
            }
            private String membermoney;            //会员支付
    
            public String Membermoney
            {
                get { return membermoney; }
                set { membermoney = value; }
            }
            private String counts;                //餐品数量
    
            public String Counts
            {
                get { return counts; }
                set { counts = value; }
            }
    
            private String givechange;            //找零
    
            public String Givechange
            {
                get { return givechange; }
                set { givechange = value; }
            }
    
            private string rechMoney;
            /// <summary>
            /// 充值金额
            /// </summary>
            public string RechMoney
            {
                get { return rechMoney; }
                set { rechMoney = value; }
            }
        }
        public class EscCommand
        {
            ArrayList Command = null;
    
            public EscCommand()
            {
                this.Command = new ArrayList();
            }
    
            public ArrayList getCommand()
            {
                return this.Command;
            }
    
            private void addArrayToCommand(byte[] array)
            {
                for (int i = 0; i < array.Length; i++)
                {
                    this.Command.Add(array[i]);
                }
            }
    
            public void addSelectErrorCorrectionLevelForQRCode(byte n)
            {
                byte[] command = { 29, 40, 107, 3, 0, 49, 69,3 };
                command[7] = n;
                addArrayToCommand(command);
            }
    
            public void addSelectSizeOfModuleForQRCode(byte n)
            {
                byte[] command = { 29, 40, 107, 3, 0, 49, 67, 3 };
                command[7] = n;
                addArrayToCommand(command);
            }
    
            public void addStoreQRCodeData(String content)
            {
                byte[] command = { 29, 40, 107, 0, 0, 49, 80, 48 };
                command[3] = ((byte)((content.Length + 3) % 256));
                command[4] = ((byte)((content.Length + 3) / 256));
                addArrayToCommand(command);
                addStrToCommand(content, content.Length);
            }
    
            private void addStrToCommand(String str, int length)
            {
                byte[] bs = null;
                if (!str.Equals(""))
                {
                    try
                    {
                        bs = System.Text.Encoding.GetEncoding("GB2312").GetBytes(str);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    if (length > bs.Length)
                    {
                        length = bs.Length;
                    }
                    for (int i = 0; i < length; i++)
                    {
                        this.Command.Add(bs[i]);
                    }
                }
            }
    
            public void addPrintQRCode()
            {
                byte[] command = { 29, 40, 107, 3, 0, 49, 81, 48 };
                addArrayToCommand(command);
            }
    
            public static byte[] toPrimitive(Byte[] array)
            {
                if (array == null)
                {
                    return null;
                }
                if (array.Length == 0)
                {
                    return new byte[]{};
                }
                byte[] result = new byte[array.Length];
                for (int i = 0; i < array.Length; i++)
                {
                    result[i] = array[i];
                }
                return result;
            }
    
        }
    byte[] data = PrintService.jsonParse(str[4], recv, str[5], str[6]);
    SendSocketMsg(str[
    1], Convert.ToInt32(str[2]), Convert.ToInt32(str[7]), data);
  • 相关阅读:
    常用的python模块
    程序人生--世界观
    JQuery与CSS之图片上放置button
    所谓的成就感,想想我们測过的那些功能
    王立平-bmp.compress()
    Android多媒体学习六:利用Service实现背景音乐的播放
    NHibernate3剖析:Mapping篇之集合映射基础(3):List映射
    freeradius 启动报错Refusing to start with libssl version OpenSSL 1.0.1
    超级简单JS网页倒计时代码
    一起talk C栗子吧(第一百一十二回:C语言实例--线程同步概述)
  • 原文地址:https://www.cnblogs.com/rinack/p/5227133.html
Copyright © 2011-2022 走看看