kingno
2025-08-27 b4a7ed3e39a05bcd26d8308ff568206637cefc9e
完整版封装码打印
5个文件已修改
131 ■■■■ 已修改文件
src/Bro.M141.Process/M141Config.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M141.Process/M141Process.cs 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M141.Process/M141Process_ImageCheck.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M141.Process/MyMQTT.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M141.Process/UI/UIPrinter.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M141.Process/M141Config.cs
@@ -31,6 +31,12 @@
        public List<Printer> Printers { get; set; } = new List<Printer>();
        [Category("打印机配置")]
        [Description("是否打印封装码")]
        [DisplayName("是否打印封装码")]
        public bool Isprint { get; set; } = false;
        [Category("产品显示界面配置")]
        [Description("字体大小")]
src/Bro.M141.Process/M141Process.cs
@@ -24,11 +24,14 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing.Imaging;
using System.Drawing.Printing;
using System.IO;
using System.Linq;
using System.Text;
using Windows.ApplicationModel.Appointments;
using Windows.Devices.PointOfService;
using ZXing;
using ZXing.QrCode;
using static Bro.Common.Helper.EnumHelper;
using static Bro.Process.ProcessControl;
using static Org.BouncyCastle.Math.EC.ECCurve;
@@ -79,6 +82,8 @@
                ThHeartPlc.IsBackground = true;
                ThHeartPlc.Start();
            }
            printDocument1.PrintPage += new PrintPageEventHandler(printDocument_Print);
        }
        public override void ProcessRunStateChanged()
@@ -120,6 +125,8 @@
                LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"未设置plc");
            }
            _errorSpec = M141Config.SpecCollection.FirstOrDefault(u => u.Code == M141Config.CheckErrorSpecCode) as Spec;
            //InitialProductList();
@@ -1380,6 +1387,14 @@
                                    if (obj.zstatus == "200")
                                    {
                                        LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"产品{pList[0].PID}数据上传MES成功  {Msgreceice}");
                                        if (M141Config.Isprint && !string.IsNullOrEmpty(obj.tary_label))
                                        {
                                            StartPrint(obj.tary_label);
                                        }
                                    }
                                    else
                                    {
@@ -1806,6 +1821,93 @@
            return new ResponseMessage();
        }
        #region  打印机相关
        PrintDocument printDocument1 = new PrintDocument();
        string Printmessage = "";
        public void StartPrint(string str)
        {
            try
            {
                int ttwith = 320;
                int ttheigh = 160;
                Printmessage = str;
                this.printDocument1.DefaultPageSettings.PrinterSettings.PrinterName = "Honeywell PX240S (300 dpi)";
                this.printDocument1.DefaultPageSettings.PaperSize = new PaperSize("Custum", ttwith, ttheigh);
                this.printDocument1.PrintController = new System.Drawing.Printing.StandardPrintController();
                this.printDocument1.Print();
            }
            catch
            {
            }
        }
        //C229M2508250500002
        private void printDocument_Print(object sender, PrintPageEventArgs e)
        {
            Font fntTxt = new Font("黑体", 15, System.Drawing.FontStyle.Bold);//正文文字
            System.Drawing.Brush brush = new SolidBrush(System.Drawing.Color.Black);//画刷
            try
            {
                var g = e.Graphics;
                g.Clear(Color.White);
                BarcodeWriter writer = new BarcodeWriter();
                writer.Format = BarcodeFormat.QR_CODE;
                QrCodeEncodingOptions options = new QrCodeEncodingOptions()
                {
                    DisableECI = true,//设置内容编码
                    CharacterSet = "UTF-8",  //设置二维码的宽度和高度
                    Width = 123,
                    Height = 123,
                    Margin = 1//设置二维码的边距,单位不是固定像素
                };
                writer.Options = options;
                Bitmap map = writer.Write(Printmessage);
                e.Graphics.DrawImage(map, new System.Drawing.Point(90, 10));
                // 在二维码下方画内容文字
                using (Font font = new Font("Arial", 10))
                using (Brush brush3 = new SolidBrush(Color.Black))
                {
                    // 让文字居中到二维码下方
                    SizeF textSize = e.Graphics.MeasureString(Printmessage, font);
                    float textX = 90 + (map.Width - textSize.Width) / 2;
                    float textY = 10 + map.Height;
                    e.Graphics.DrawString(Printmessage, font, brush3, textX, textY);
                }
            }
            catch (Exception ee)
            {
                LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, ee.ToString());
            }
        }
        #endregion
    }
    public class DefectNGRecord
src/Bro.M141.Process/M141Process_ImageCheck.cs
@@ -36,7 +36,7 @@
        ManualResetEvent set2 = new ManualResetEvent(false);
        public event Action<string> StartPrinter;
        [ProcessMethod("ImageCheck", "ImageCheckOperation", "通用图片检测操作", InvokeType.TestInvoke)]
        public ResponseMessage ImageCheckOperation(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
@@ -713,8 +713,8 @@
            ResponseMessage msg = new ResponseMessage();
            Plc2 = invokeDevice as PLCBase;
            string message = "";
            StartPrinter.Invoke(message);
            string message = "nothing";
            StartPrint(message);
            return msg;
        }
src/Bro.M141.Process/MyMQTT.cs
@@ -222,11 +222,6 @@
        }
        public async Task<string> MESForProduceAsync(ProductModel pro, string zversion, int znonum, string endtray = "N", string line = "NQ216", int timeoutMs = 3000)
        {
            var guid = Guid.NewGuid().ToString();
src/Bro.M141.Process/UI/UIPrinter.cs
@@ -45,8 +45,6 @@
        {
            base.OnProcessUpdated();
            printDocument1.PrintPage += new PrintPageEventHandler(printDocument_Print);
            Process141.StartPrinter += StartPrint;
            textBox1.Text = "C229M2508250500002";
        }
@@ -437,16 +435,6 @@
            return bmp;
        }
        #region