首页 > 基础资料 博客日记
聊一聊 MES系统如何实现多种标签打印并支持不同打印机
2026-05-25 14:30:03基础资料围观15次
这篇文章介绍了聊一聊 MES系统如何实现多种标签打印并支持不同打印机,分享给大家做个参考,收藏极客资料网收获更多编程知识

在实际生产过程中,同一道工序往往需要打印多种规格的标签,例如彩盒标签与卡通标签。这些标签的格式和纸张规格通常不同,而纸张规格的差异也意味着需要使用不同的打印机。为此,MES 系统通过全局监听打印任务,并支持针对不同打印任务灵活配置对应的打印机,从而实现高度可配置的打印管理。所有打印数据均来源于服务端,模板文件中仅需定义变量即可。
1.制作模板文件,这里需要用到bartender软件,模板做成什么样,MES打印出来就是什么样子,MES负责将真实的数据放进模板里面打印出来。

2.创建打印服务程序,用来监听客户端的打印请求,关键代码如下:
using ax_mes_print.Model; namespace ax_mes_print.Service; public class CartonPrintService : IPrintService { private readonly HttpHelper _httpHelper; private readonly ILogger<CartonPrintService> _logger; private readonly BartenderLabelHelper _bartenderLabelHelper; private const string folderName = "Carton"; public CartonPrintService(HttpHelper httpHelper, ILogger<CartonPrintService> logger, BartenderLabelHelper bartenderLabelHelper) { _httpHelper = httpHelper; _logger = logger; _bartenderLabelHelper = bartenderLabelHelper; } public async Task<PrintResponse> ExecutePrintAsync(string printParameter) { var requestParameter = DeserializePrintRequest(printParameter); if (requestParameter == null) { return PrintResponse.Error("打印参数有误!"); } if (string.IsNullOrWhiteSpace(requestParameter.CartonSN)) { return PrintResponse.Error("卡通箱号不能为空!"); } var LabelTemplateInfoList = await QueryLabelTemplateInfoAsync(requestParameter.ProductCode); if (LabelTemplateInfoList.Count == 0) { return PrintResponse.Error("未找卡通模板文件,请先上传!"); } var cartonDataData = await QueryCartonDataAsync(requestParameter.CartonSN); if (cartonDataData == null || cartonDataData.Item2.Length == 0) { return PrintResponse.Error("未找到卡通数据,打印失败!"); } var directory = FileHelper.CreateOrDeleteFolder(folderName); foreach (var item in LabelTemplateInfoList) { await _httpHelper.DownloadFileAsync(item.AccessUrl, folderName, item.FileName); var printReuslt = _bartenderLabelHelper.BartenderPrint(SetPrintName(requestParameter.PrintName), Path.Combine(directory, item.FileName), cartonDataData.Item1, cartonDataData.Item2); if (printReuslt != string.Empty) { return PrintResponse.Error(printReuslt); } } return PrintResponse.Success("打印命令发送成功,请查看打印机!"); } private CartonPrintWebSocketRequest? DeserializePrintRequest(string printParameter) { if (string.IsNullOrWhiteSpace(printParameter)) { return null; } var request = JsonConvert.DeserializeObject<CartonPrintWebSocketRequest>(printParameter); if (request is null) { return null; } return request; } private async Task<CartonDataData> QueryCartonDataAsync(string cartonSN) { var queryCartonDataResponse = null; return queryCartonDataResponse.Data; } private async Task<List<LabelTemplateInfo>> QueryLabelTemplateInfoAsync(string productCode) { var queryLabelTemplateInfoResponse = null; return queryLabelTemplateInfoResponse.Data; } }
3.启动 MES 打印服务,该服务程序会监听客户端的打印请求,然后将打印任务传递给打印机。

4.在 MES 里面启动连接打印机,根据打印内容不同可以选择不同的打印机,如果忘了选择打印机,则系统以默认打印机为准.



如图所示,我们在配置页面根据不同的打印类型设置了不同的打印机,当页面显示已连接的时候,MES通过打印服务将需要打印的内容传递给打印机,完成打印。

大家如有更好的方案,欢迎一起讨论!!
文章来源:https://www.cnblogs.com/axmes/p/20153782
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:

