c#调用刀片小票打印机
生活随笔
收集整理的這篇文章主要介紹了
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的IPtry{//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#调用刀片小票打印机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 山东航母上的人都是军人吗?
- 下一篇: Winform将网页生成图片