public static bool Print(int orderId, string orderTime)
{
bool b = true; string cut = ((char)29).ToString() + ((char)86).ToString() + ((char)1).ToString() + ((char)49).ToString();//发送切纸指令
//byte[] byte_cut = System.Text.Encoding.Default.GetBytes(cut);
//string font = ((char)1D).ToString() + ((char)21).ToString() + ((char)01).ToString()+ ((char)10).ToString() ;//文字大小 byte[] fonts = new byte[] { 27, 82, 0 };//1D 21 选择字体
byte[] temp = new byte[] { 29, 33, 17 };//1D 21 选择字体大小,0x01放大一倍 byte[] bty_tmp = new byte[] { 29, 86, 1, 49 };//切纸
byte[] Internal = System.Text.Encoding.Default.GetBytes(((char)27).ToString() + ((char)64).ToString());//初始化打印机 System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient();
System.Net.Sockets.NetworkStream stream = null;
Int32 port = 9100;
//string ipPrint = ConfigurationManager.ConnectionStrings["printIP"].ConnectionString;//获取打印机名称
string ipPrint = "192.168.0.77";
//string ipPrint =Common.Comm.readXml("/xml/setting.xml", "printIP");//读取xml的IP
try
{
//client.Connect("192.168.1.77", port);
client.Connect(ipPrint, port);
stream = client.GetStream();
//是否支持写入
if (!stream.CanWrite)
{
b = false;
}
Byte[] data; //按菜品类型和时间、单号、点菜员、订单点菜备注 分组查询
string sql_query = "select tname,typeid,dname,uname,d.addtime,d.remark,count(fname)fnum"+
" from "+
" p_orderDetailInfo d,p_orderinfo o, p_deskinfo desk, p_foodinfo f, p_foodType t,users u"+
" where d.orderid=o.id and d.foodid=f.id and o.deskid=desk.id and f.typeid=t.id and u.id=d.userid"+
" and o.id=" + orderId + " and d.addtime='" + orderTime + "' " +
" group by tname,typeid,d.remark,dname,uname,d.addtime "; string sql_detail = ""; DataTable dt = DbSqlHelper.ExecuteDataSet(CommandType.Text, sql_query).Tables[0];
DataTable dt_detail = null; if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
//当前该订单的菜品信息
sql_detail = "select fname,count(fname) fnum,f.id ,userid,d.remark from "+
"p_orderDetailInfo d,p_foodinfo f "+
"where d.foodid=f.id and TypeID=" + dt.Rows[i]["typeid"] + " and d.addtime='" + orderTime + "' and orderid=" + orderId + " group by fname,f.id ,userid,d.remark"; dt_detail = DbSqlHelper.ExecuteDataSet(CommandType.Text, sql_detail).Tables[0];
stream.Write(Internal, 0, Internal.Length);
stream.Write(fonts, 0, fonts.Length);//设置字体
stream.Write(temp, 0, temp.Length);//设置字体大小--关键 string outPut = "-" + dt.Rows[i]["tname"] + "-\n" + dt.Rows[i]["dname"] + "\t点菜员 - " + dt.Rows[i]["uname"] + "\n--------------------\n"; for (int j = 0; j < dt_detail.Rows.Count; j++)
{
outPut += "\n\n"+dt_detail.Rows[j]["fname"] + "\t" + dt_detail.Rows[j]["fnum"];
if (dt_detail.Rows[j]["remark"].ToString() != "")
{
outPut += " * " + dt_detail.Rows[j]["remark"] + "\n\n";//菜品【口味】备注
}
UpdateStatus(orderId.ToString(), dt_detail.Rows[j]["id"].ToString(), orderTime);//修改该打印状态
} outPut += "\n\n" + DateTime.Now + "\n\n\n\n\n\n";
data = data = System.Text.Encoding.Default.GetBytes(outPut);
stream.Write(data, 0, data.Length);//输出文字
outPut = ""; // 一个分类打印完成后清空。切纸 //stream.Write(Internal, 0, Internal.Length);
// data = System.Text.Encoding.Default.GetBytes(cut);
//stream.Write(data, 0, data.Length); stream.Write(bty_tmp, 0, bty_tmp.Length);
//bty_tmp = new byte[] { 29, 86, 1, 49 }; } //data = System.Text.Encoding.Default.GetBytes(cut);
//stream.Write(bty_tmp, 0, bty_tmp.Length);
//stream.Write(bty_tmp, 0, bty_tmp.Length);
}
//-----------------
}
catch
{
//打印机缺纸或者纸匣打开时,不会出现异常,不用特殊代码判断,数据不会丢失.
b = false; }
finally
{
stream.Close();
stream.Dispose();
client.Close();
}
return b;
}

  

2年前的餐饮项目,在一些饭店已经运行了1年多了。

适用于热敏刀片打印机,

运用在超市、饭店 等各种需要小票打印的场合。

打印完后,会自动切纸。

这里有一个排版的问题,对齐不是很严格。

http://www.cnblogs.com/chenqilong/archive/2013/04/18/3028358.html

c#调用刀片小票打印机的更多相关文章

  1. 小票打印机指令集封装(支持EPSON指令)

    最近写了一些关于小票打印机的程序,不难,但是记录下来,作为足迹吧. 现在市场上的小票机基本都支持EPSON指令.指令集文档 对指令集进行了自己的封装,方便以后调用: package aheiziUti ...

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

    下面是打印所需要调用的代码: class LptControl { private string LptStr = "lpt1"; public LptControl(string ...

  3. C# Lpt 并口热敏小票打印机打印位图

    class LptControl { private string LptStr = "lpt1"; public LptControl(string l_LPT_Str) { L ...

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

    最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: class LptControl { private s ...

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

    最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: 因为我们这里主要是打印条形码和二维码,所以以条形码和二维 ...

  6. C#并口热敏小票打印机打印位图

    原文:C#并口热敏小票打印机打印位图 最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了.   这是DEMO的窗体:   下面是打印所需要调用的代码: class ...

  7. 让 Odoo POS 支持廉价小票打印机

    为了测试 Odoo 在实际业务中的实施,我们开了一家(马上要开第二家分店)猪肉店.由于预算有限,在实施 Odoo PoS 的时候采购了一台价格为 85 元的爱宝热敏打印机,结果连上 Odoo Posb ...

  8. C#调用小票打印机

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  9. C#Winfrom系统打印机调用/设置默认打印机

    实现如下效果: 实现方式如下: using System;using System.Drawing.Printing;using System.Runtime.InteropServices;usin ...

随机推荐

  1. ocky勒索软件恶意样本分析1

    locky勒索软件恶意样本分析1 1 locky勒索软件构成概述 前些时期爆发的Locky勒索软件病毒这边也拿到了一个样本,简要做如下分析.样本主要包含三个程序: A xx.js文件:Jscript脚 ...

  2. Springboot分模块开发详解(2):建立子工程

    1.创建base-entity 选中base工程,右键创建一个新的maven工程 自动选择了base这个目录存放子工程 创建后,pom.xml修改成如下内容: <?xml version=&qu ...

  3. Kaggle大数据竞赛平台入门

    Kaggle大数据竞赛平台入门 大数据竞赛平台,国内主要是天池大数据竞赛和DataCastle,国外主要就是Kaggle.Kaggle是一个数据挖掘的竞赛平台,网站为:https://www.kagg ...

  4. JAVA随笔(一)

    数组变量是数组的管理者,而不是拥有者.数组变量的比较,是判断它们是否管理同一个数组.将一个数组变量赋值给 另一个数组变量并不产生新的数组.想产生新的数组只能通过new来完成. 同样,String类型的 ...

  5. 使用abstract关键字的使用

    package abstract1.demo01; //使用abstract关键字修饰的类叫做抽象类public abstract class Father { public static void ...

  6. 移动端经常出现的兼容问题,谈谈移动端应用或者wap站的一些优化技巧和心得

    移动端经常出现的兼容问题,谈谈移动端应用或者wap站的一些优化技巧和心得 1.        安卓浏览器看背景图片,有些设备会模糊. 因为手机分辨率太小,如果按照分辨率来显示网页,字会非常小,安卓手机 ...

  7. IDEA中Ctrl+Shift+F快捷键无效的解决方式

    某天突然发现idea非常重要的快捷键ctrl+shift+F无效了,网上搜了很多都说是qq快捷键冲突,但是找了下qq快捷键却没有解决,现在给大家一个解决快捷键冲突的思路: 1.查看QQ快捷键--> ...

  8. .NetCore下使用Prometheus实现系统监控和警报 (四)客户端代码处理

    在代码中使用就比较简单了 Nuget包获取下 prometheus-net prometheus-net.AspNetCore 然后添加中间件就行了 app.UseMetricServer(); 默认 ...

  9. 如果django里的视图是类(CBV),应该如何写Url的测试用例?

    晚上回家测试了很多方式,都不行. 网上搜索找不到答案, 最后还是官方文档最抵用呢. https://docs.djangoproject.com/en/2.1/topics/testing/tools ...

  10. tispark部署步骤

    正常在我们的环境使用tidb集群,都默认没有spark集群的,但之前部署tidb的时候,spark默认已经和系统编译,下面我们的工作就是搭建spark集群和tikv融合 官方是要我们下载tispark ...