public static bool PrintStockBox_TXT(string strBox, string strProModel, PrintHelperEx[] strPrintArray, ref string ErrMsg) { // string strTest = string.Empty; openport("6"); //Ex:USB try { StreamReader sr = new StreamReader(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName) + "\\BOXFormat.txt", Encoding.GetEncoding("GB2312")); string strCMD = sr.ReadToEnd(); strCMD = strCMD.Replace("[型号]", strProModel); strCMD = strCMD.Replace("[日期]", DateTime.Now.ToString("yyyyMMdd")); strCMD = strCMD.Replace("[BOXID]", strBox); strCMD = strCMD.Replace("[条码]", strBox); // string[] tmpArray = StrSplitHelp.StringSplit(strCMD, "[GLASSID]"); // string[] strarray = str.Split(new char[]{); //替换模版中LOTNO for (int k = 0; k < 10; k++) { if (k < strPrintArray.Length) { strCMD = strCMD.Replace("[LOTNO" + (k + 1) + "]", strPrintArray[k].Value); if (strPrintArray[k].Item.Count() > 0) { for (int j = 0; j < 40; j++) { if (j < strPrintArray[k].Item.Count()) { Regex r = new Regex("(\\[GLASSID" + (k + 1) + "\\]){1}"); strCMD = r.Replace(strCMD, strPrintArray[k].Item[j].GlassID, 1, 0); } else { strCMD = strCMD.Replace("[GLASSID" + (k + 1) + "]", " "); break; } } } else strCMD = strCMD.Replace("[GLASSID" + (k + 1) + "]", " "); } else { strCMD = strCMD.Replace("[LOTNO" + (k + 1) + "]", " "); strCMD = strCMD.Replace("[GLASSID" + (k + 1) + "]", " "); } } string[] tmpstrArray = StrSplitHelp.StringSplit(strCMD, "\r\n"); foreach (string item in tmpstrArray) { string strTmp = item; //TODO:打印到文件 // Common.TestHelper.WriteDataLine("D:\\testBox.txt", strTmp.Trim(), ref ErrMsg); byte[] by = System.Text.Encoding.Default.GetBytes(strTmp.Trim()); sendcommand(by); // strTest += strTmp + "\r\n"; } closeport(); return true; } catch (Exception ex) { ErrMsg = ex.Message; return false; } }
public static bool PrintStockBox_EXT(string strBox, string strProModel, PrintHelperEx[] strPrintArray, ref string ErrMsg) { // string strTest = string.Empty; openport("6"); //Ex:USB try { string name = string.Empty; string strPrintLotNO = string.Empty; string strLogoName = string.Empty; try { name = ConfigurationManager.AppSettings["CoLtdName"].ToString(); strPrintLotNO = ConfigurationManager.AppSettings["IsPrintLOTNO"].ToString(); strLogoName = ConfigurationManager.AppSettings["LogoName"].ToString(); } catch (Exception ex) { ErrMsg = "打印未成功:配置文件的配置不正确,请检查"; return false; } bool isPrintLotNO = strPrintLotNO.ToUpper().Equals("YES"); string strCMD = @"^Q80,3 ^W100 ^H5 ^P1 ^S2 ^AD ^C1 ^R8 ~Q+8 ^O0 ^D0 ^E12 ~R200 ^XSET,ROTATION,0 ^L Dy2-me-dd Th:m:s Dy2-me-dd Th:m:s Lo,14,125,758,128 Lo,24,583,768,586 "; string printProModel = string.Format("AZ2,18,20,1,1,0,0,型号:{0}\r\n", strProModel); string printDate = string.Format("AZ2,18,54,1,1,0,0,日期:{0}\r\n", DateTime.Now.ToString("yyyy-MM-dd")); string printBOXID = string.Format("AZ2,4,88,1,1,0,0,BOXID:{0}\r\n", strBox); //string printBOXIDBarCode = string.Format("BQ,346,59,2,6,60,0,0,{0}\r\n", strBox); string printBOXIDBarCode = string.Format("BQ,320,57,2,6,60,0,0,{0}\r\n", strBox); //string printName = string.Format("AZ2,430,599,1,1,0,0,{0}\r\n", name); string printName = string.Format("AZ2,15,599,1,1,0,0,{0}\r\n", name); //string printImage = string.Format("Y658,26,{0}\r\n", strLogoName); string printImage = string.Format("Y668,36,{0}\r\n", strLogoName); StringBuilder sbTmp = new StringBuilder().Append(printProModel).Append(printDate).Append(printBOXID).Append(printBOXIDBarCode).Append(printName).Append(printImage); strCMD += sbTmp.ToString(); string strEnd = @"E "; StringBuilder sb = new StringBuilder(); int printX = 15;//初始坐标X int printY = 134;//初始坐标Y int iCurrentX = printX; int iCurrentY = printY; int indexX = 270;//每个GlassID X轴间隔 int indexY = 21;//每个GlassID Y轴间隔 int i = 0; int MaxRowCount = 21;//Y轴最大行数 bool IsModel2 = false;//是否使用4列模版 int j = 0;//记录数(换行算两条) //先算记录数(换行算两条) foreach (var item in strPrintArray) { if (isPrintLotNO) { string temp = CutStr(26, item.Value);//超过26位换行 if (temp.Equals(item.Value)) { j++; } else//LOTNO换行 { j += 2; } } foreach (var detail in item.Item) { j++; } } if (j > 63) { indexX = 200;//每个GlassID X轴间隔 IsModel2 = true; } foreach (var item in strPrintArray) { if (i == MaxRowCount)//Y轴只能打下20 { iCurrentY = printY; j++; iCurrentX += indexX; i = 0; } //sb.Append(string.Format("AZ1,{0},{1},1,1,0,0,{2}\r\n", iCurrentX, iCurrentY, " ")); //iCurrentY += indexY; //i++; if (isPrintLotNO) { if (i == MaxRowCount)//Y轴只能打下20 { iCurrentY = printY; iCurrentX += indexX; i = 0; } string temp = CutStr(26, item.Value);//超过26位换行 if (temp.Equals(item.Value)) { sb.Append(string.Format("AZ1,{0},{1},1,1,0,0,{2}\r\n", iCurrentX, iCurrentY, item.Value)); iCurrentY += indexY; i++; } else//LOTNO换行 { string str1 = temp; string str2 = item.Value.Replace(temp, ""); sb.Append(string.Format("AZ1,{0},{1},1,1,0,0,{2}\r\n", iCurrentX, iCurrentY, str1)); iCurrentY += indexY; i++; if (i == MaxRowCount)//Y轴只能打下20 { iCurrentY = printY; iCurrentX += indexX; i = 0; } sb.Append(string.Format("AZ1,{0},{1},1,1,0,0,{2}\r\n", iCurrentX, iCurrentY, str2)); iCurrentY += indexY; i++; } } foreach (var detail in item.Item) { if (i == MaxRowCount)//Y轴只能打下20 { iCurrentY = printY; iCurrentX += indexX; i = 0; } if (!IsModel2 && CutStr(17, detail.GlassID).Equals(detail.GlassID))//glassid超过17位或记录数超过63,换更小字体 sb.Append(string.Format("AB,{0},{1},1,1,0,0,{2}\r\n", iCurrentX, iCurrentY, detail.GlassID)); else sb.Append(string.Format("AA,{0},{1},1,1,0,0,{2}\r\n", iCurrentX, iCurrentY, detail.GlassID)); iCurrentY += indexY; i++; } } string[] tmpstrArray = StrSplitHelp.StringSplit(strCMD + sb.ToString() + strEnd, "\r\n"); foreach (string item in tmpstrArray) { string strTmp = item; //TODO:打印到文件 //Common.TestHelper.WriteDataLine("D:\\testBox.txt", strTmp.Trim(), ref ErrMsg); byte[] by = System.Text.Encoding.Default.GetBytes(strTmp.Trim()); sendcommand(by); // strTest += strTmp + "\r\n"; } closeport(); return true; } catch (Exception ex) { ErrMsg = ex.Message; return false; } }