您的位置:首页 > 其它

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

2014-06-06 13:59 543 查看
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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: