.net 调用小票打印机 打印票据

public class PrintInvoice     {

#region 01.获得打印机1获得吧台打印机2获得后厨打印机

/// <summary>

/// 获得打印机1获得吧台打印机2获得后厨打印机

/// </summary>

public TcpClient GetPrint(int n = 1)

{

var client = new
System.Net.Sockets.TcpClient();

var bll = new PrintAndPlaceBll();

var model = bll.GetModel(n);

var port = Common.rtnInt32(model.PrintPort);//9100

var ipPrint =
model.PrintIpAddress;//192.168.1.111

client.Connect(ipPrint, port);

return client;

}

#endregion

#region 02.初始化一个网路访问数据流

/// <summary>

/// 初始化一个网路访问数据流

/// </summary>

/// <returns></returns>

public NetworkStream BuildStream()
        {

System.Net.Sockets.NetworkStream stream = null;

return stream;

}

#endregion

#region 03.套接字和打印机通讯放回通讯流

/// <summary>

/// 套接字和打印机通讯放回通讯流

/// </summary>

/// <returns></returns>

public NetworkStream GetStream(TcpClient
client, NetworkStream stream)

{

byte[]
chushihua = new byte[] { 27, 64 };//初始化打印机

byte[] ziti = new byte[] { 27, 77, 0 };//选择字体n
=0,1,48,49

byte[] zitidaxiao = new byte[] {
29, 33, 0 };//选择字体大小

byte[] duiqifangshi = new byte[] { 27,
97, 1 };//选择对齐方式0,48左对齐1,49中间对齐2,50右对齐

stream = client.GetStream();
            //是否支持写入

if (!stream.CanWrite)
            {
               
stream = null;
            }

stream.Write(chushihua, 0,
chushihua.Length);//初始化

stream.Write(ziti, 0,
ziti.Length);//设置字体

stream.Write(zitidaxiao, 0,
zitidaxiao.Length);//设置字体大小--关键

stream.Write(duiqifangshi, 0,
duiqifangshi.Length);//居中

return stream;

}

#endregion

#region 04.把要打印的文字写入打印流

/// <summary>

/// 把要打印的文字写入打印流

/// </summary>

/// <param name="stream"></param>

/// <param name="output"></param>

public void PrintText(NetworkStream stream, string output)

{

Byte[] data = System.Text.Encoding.Default.GetBytes(output);

stream.Write(data, 0, data.Length);//输出文字

}

#endregion

#region
05.设置对齐方式0,48左对齐1,49中间对齐2,50右对齐

/// <summary>

/// 设置对齐方式0,48左对齐1,49中间对齐2,50右对齐

/// </summary>

/// <param name="stream"></param>

/// <param name="n"></param>

public void SetDuiQi(NetworkStream stream, byte n)

{

byte[] duiqifangshi = new byte[] { 27, 97, 1
};//选择对齐方式0,48左对齐1,49中间对齐2,50右对齐

stream.Write(duiqifangshi,
0, duiqifangshi.Length);

}

#endregion

#region 06.设置字体n =0,1,48,49

/// <summary>

/// 设置字体n =0,1,48,49

/// </summary>

/// <param name="stream"></param>

/// <param name="n"></param>

public void SetFont(NetworkStream stream, byte n)

{

byte[] ziti = new byte[] { 27, 77, 0
};//选择字体n =0,1,48,49

stream.Write(ziti, 0,
ziti.Length);

}

#endregion

#region 07.设置加粗1加粗0还原

/// <summary>

/// 设置加粗1加粗0还原

/// </summary>

/// <param name="stream"></param>

/// <param name="n"></param>

public void SetBold(NetworkStream stream, byte n)

{

byte[] jiacu = new byte[] { 27, 69, n };//选择加粗模式

stream.Write(jiacu, 0,
jiacu.Length);

}

#endregion

#region 08.设置字体大小0最小1,2,3

/// <summary>

/// 设置字体大小0最小1,2,3

/// </summary>

/// <param name="stream"></param>

/// <param name="n"></param>

public void SetFontSize(NetworkStream stream, byte
n)

{

byte[] zitidaxiao = new byte[] { 29, 33, n
};//选择字体大小

stream.Write(zitidaxiao, 0, zitidaxiao.Length);

}

#endregion

#region 09.切纸

/// <summary>

/// 切纸

/// </summary>

/// <param name="stream"></param>

/// <param name="n"></param>

public void QieZhi(NetworkStream stream)

{

byte[] qiezhi = new byte[] { 29, 86, 1, 49 };//切纸

stream.Write(qiezhi,
0, qiezhi.Length);

}

#endregion

#region 10.释放资源

/// <summary>

/// 释放资源

/// </summary>

/// <param name="client"></param>

/// <param name="stream"></param>

public void DiposeStreamClient(TcpClient client,
NetworkStream stream)

{

if (stream != null)

{

stream.Close();

stream.Dispose();

}

if (client != null) client.Close();

}

#endregion

#region 11.样例展示

private void Printeg()

{

var p = new PrintInvoice();

var batai = p.GetPrint();//获得吧台打印机

var liunull =
p.BuildStream();//初始化一个网络访问数据流

try

{

var liu = p.GetStream(batai,
liunull);//获得通讯打印流

p.SetFontSize(liu, 2);//字体变大

p.SetBold(liu, 1);//加粗

p.PrintText(liu,
"\n结账单\n\n");//打印文字

p.SetBold(liu, 0);//取消加粗

p.SetFontSize(liu, 0);//字体还原

p.PrintText(liu,
"北京西城                 
");//打印文字

p.PrintText(liu,
"\n----------------------------------------------\n");//打印文字

p.PrintText(liu, "账单号:1405220015      
消费方式:普通消费\n");//打印文字

p.PrintText(liu,
"时间:14-06-06 08:58   人数:4     桌号:11");//打印文字

p.PrintText(liu,
"\n----------------------------------------------\n");//打印文字

p.SetFontSize(liu, 1);//字体变大

p.SetBold(liu, 1);//加粗

p.PrintText(liu,
"品项名称      数量    
单价      金额");//打印文字

p.SetBold(liu, 0);//取消加粗
               
p.SetFontSize(liu, 0);//字体还原

p.PrintText(liu,
"\n----------------------------------------------\n");//打印文字

p.PrintText(liu, "木须肉        
2       
16        32\n");//打印文字

p.PrintText(liu,
"宫保鸡丁      
1       
20        20\n");//打印文字

p.PrintText(liu, "----------------------------------------------\n");//打印文字

p.SetFontSize(liu, 1);//字体变大
               
p.SetBold(liu, 1);//加粗

p.PrintText(liu,
"                             
小计:52.00");//打印文字

p.SetBold(liu, 0);//取消加粗

p.SetFontSize(liu,
0);//字体还原

p.PrintText(liu,
"\n----------------------------------------------\n");//打印文字

p.PrintText(liu, "\n折扣:4        
现金:100         找零:44\n\n");//打印文字

p.SetFontSize(liu, 1);//字体变大
               
p.SetBold(liu, 1);//加粗

p.PrintText(liu,
"                             
实际结算:¥48");//打印文字

p.SetBold(liu, 0);//取消加粗
               
p.SetFontSize(liu, 0);//字体还原

p.PrintText(liu,
"\n----------------------------------------------\n");//打印文字

p.PrintText(liu,
"收银员:张三                                
\n");//打印文字

p.PrintText(liu,
"服务员:李四                                
\n");//打印文字

p.PrintText(liu,
"\n客人签字:________________                  
\n");//打印文字

p.PrintText(liu, "\n==============================================\n");//打印文字

p.PrintText(liu,
"xx餐厅祝您用餐愉快!");//打印文字
               
p.PrintText(liu, "\n餐厅电话:4000000 ");//打印文字

p.PrintText(liu, "\n==============================================\n");//打印文字

p.PrintText(liu, "\n\n\n\n\n\n\n\n");//打印文字

p.QieZhi(liu);//切纸

}
            catch

{

//打印机缺纸或者纸匣打开时,不会出现异常,不用特殊代码判断,数据不会丢失.

}

finally
            {

p.DiposeStreamClient(batai, liunull);//释放资源

}

}

#endregion

}

.net 调用小票打印机 打印票据,布布扣,bubuko.com

时间: 2024-12-29 07:38:05

.net 调用小票打印机 打印票据的相关文章

转:C#并口热敏小票打印机打印位图

最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: [html] view plaincopy class LptControl { private string LptStr = "lpt1"; public LptControl(string l_LPT_Str) { LptStr = l_LPT_Str; } [StructLayout(LayoutKind.Sequential)] pr

串口小票打印机打印乱码问题

-------------------------------------- editor:YeungChi date:2016/3/29 describe:小票打印机乱码问题 文章内容:一.参数解释 二.串口连接打印机设置案例 -------------------------------------- 串口是一种非常通用的设备通信的协议: 一.参数解释 波特率 这是一个衡量符号传输速率的参数.它表示每秒钟传送的符号的个数.例如300波特表示每秒钟发送300个符号.当我们提到时钟周期时,我们就

常见小票打印机打印故障及解决方法汇总视频教程

通过对"常见小票打印机故障及解决方法汇总视频教程"课程学习,达到以下目的:1.可以独立自主安装打印机驱动以及安装打印机硬件设备 2.可以独立自主排除常见打印机故障学习教程 常见小票打印机故障:[小票打印机不打印故障]1.电脑系统参数设置不正确导致小票打印机不打印故障2.端口不正确导致不打印故障3.属性参数不正确导致不打印故障4.红灯一直闪烁不打印故障5.打印机图标突然消失不打印故障6.默认打印机不正确不打印故障 [虽然打印,但是打印不正常]1.虽然打印,但是打印的字挤压在一起,显示不正

C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)

在批量打印商品标签时一般都要加上条码或图片,而这类应用大多是使用斑马打印机,所以我也遇到了怎么打印的问题. 一种办法是用标签设计软件做好模板,在标签设计软件中打印,这种办法不用写代码,但对我来说觉得不能接受,所以尝试代码解决问题. 网上搜索一番,找不到什么资料,基本都是说发送ZPL.EPL指令到打印机,而且还是COM/LPT口连接打印机.后来研究.net的打印类库,发现是用绘图方式打印至打印机的,也叫GDI打印,于是思路有了点突破,那我可以用报表工具画好标签,运行报表时,把结果输出位图,再发送至

365小票打印机打印接口开发文档

API开发文档 接口1:打印内容 参数 说明 deviceNo 打印机编号 key 密钥 printContent 打印内容 times 固定传1 调用方式:HTTP POSTURL:http://open.printcenter.cn:8080/addOrder返回结果:JSON字符串 ----------S1小票机返回的结果有如下几种:---------- {"responseCode":0,"msg":"订单添加成功,打印完成","

C#并口热敏小票打印机打印位图包括芯片的写入

下面是打印所需要调用的代码: class LptControl { private string LptStr = "lpt1"; public LptControl(string l_LPT_Str) { LptStr = l_LPT_Str; } [StructLayout(LayoutKind.Sequential)] private struct OVERLAPPED { int Internal; int InternalHigh; int Offset; int OffSe

某小票打印机打印接口开发文档

API开发文档 接口1:打印内容 参数 说明 deviceNo 打印机编号 key 密钥 printContent 打印内容 times 固定传1 调用方式:HTTP POSTURL:http://open.printcenter.cn:8080/addOrder返回结果:JSON字符串 ----------S1小票机返回的结果有如下几种:---------- {"responseCode":0,"msg":"订单添加成功,打印完成","

C# 热敏打印机 小票打印机 打印图片

using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace POSPrinter { /// <summary> /// POSPrinter的摘要说明. /// 此类处理网络打印,使用了IP端口. /// </summary&

小票打印机乱码问题

-------------------------------------- editor:YeungChi date:2016/3/29 describe:小票打印机乱码问题 文章内容:一.参数解释 二.串口连接打印机设置案例 -------------------------------------- 串口是一种非常通用的设备通信的协议: 一.参数解释 波特率 这是一个衡量符号传输速率的参数.它表示每秒钟传送的符号的个数.例如300波特表示每秒钟发送300个符号.当我们提到时钟周期时,我们就