c#调用刀片小票打印机
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#调用刀片小票打印机的更多相关文章
- 小票打印机指令集封装(支持EPSON指令)
最近写了一些关于小票打印机的程序,不难,但是记录下来,作为足迹吧. 现在市场上的小票机基本都支持EPSON指令.指令集文档 对指令集进行了自己的封装,方便以后调用: package aheiziUti ...
- C#并口热敏小票打印机打印位图包括芯片的写入
下面是打印所需要调用的代码: class LptControl { private string LptStr = "lpt1"; public LptControl(string ...
- C# Lpt 并口热敏小票打印机打印位图
class LptControl { private string LptStr = "lpt1"; public LptControl(string l_LPT_Str) { L ...
- 转:C#并口热敏小票打印机打印位图
最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: class LptControl { private s ...
- C# 热敏打印机 小票打印机 打印图片
最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: 因为我们这里主要是打印条形码和二维码,所以以条形码和二维 ...
- C#并口热敏小票打印机打印位图
原文:C#并口热敏小票打印机打印位图 最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: class ...
- 让 Odoo POS 支持廉价小票打印机
为了测试 Odoo 在实际业务中的实施,我们开了一家(马上要开第二家分店)猪肉店.由于预算有限,在实施 Odoo PoS 的时候采购了一台价格为 85 元的爱宝热敏打印机,结果连上 Odoo Posb ...
- C#调用小票打印机
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- C#Winfrom系统打印机调用/设置默认打印机
实现如下效果: 实现方式如下: using System;using System.Drawing.Printing;using System.Runtime.InteropServices;usin ...
随机推荐
- HDU 1869 六度分离 最短路
解题报告: 1967年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为“小世界现象(small world phenomenon)”的著名假说,大意是说,任何2个素不相识的人中间最多只隔着6个人, ...
- Python实现网页截图(PyQT5)
方案说明 功能要求:实现网页加载后将页面截取成长图片涉及模块:PyQT5 PIL逻辑说明: 1:完成窗口设置,利用PyQT5 QWebEngineView加载网页地址,待网页加载完成后,调用check ...
- 小白学习安全测试(二)——httrack的安装和使用
httrack是一款免费的网站镜像程序,简单理解就是可以在网站结构(网页及一些主要信息文件),下载到本地,可离线浏览,我是按照搭建成功后的console直译过来的 下面说下安装: 我都是在Linux环 ...
- ScheduledThreadExecutor定时任务线程池
ScheduledThreadPoolExecutor 继承自ThreadPoolExecutor实现了ScheduledExecutorService接口.主要完成定时或者周期的执行线程任务. 代码 ...
- 兼容IE FF 获取鼠标位置
由于Firefox和IE等浏览器之间对js解释的方式不一样,firefox下面获取鼠标位置不能够直接使用clientX来获取.网上说的一般都是触发mousemove事件才行.我这里有两段代码,思路都一 ...
- sonarLint--强大的代码审查工具(插件)
idea也有的一个插件 贴上一个eclipse的sonarlint用法 http://blog.csdn.net/limm33/article/details/51166840 不过听说从2015年1 ...
- pyhton之os.path
目录结构 file __file__表示了当前文件的path 以相对路径运行:python 1.py 结果:1.py 以绝对路径运行:python F:\python-study\test\1.py ...
- css实现导航切换
css实现导航切换 效果图: 代码如下,复制即可使用: <!DOCTYPE html> <html> <head> <title>css实现导航切换&l ...
- unmappable character for US-ASCII
编码错误编译时加-encoding UTF-8即可 :javac -encoding UTF- file.java //
- js下判断 iframe 是否加载完成的完美方法
一般来说,我们判断 iframe 是否加载完成其实与 判断JavaScript 文件是否加载完成. 采用的方法很类似: var iframe = document.createElement( ...