MES系统如何实现多种标签打印并支持不同打印机 .创建打印服务程序用来监听客户端的打印请求关键代码如下using ax_mes_print.Model; namespace ax_mes_print.Service; public class CartonPrintService : IPrintService { private readonly HttpHelper _httpHelper; private readonly ILoggerCartonPrintService _logger; private readonly BartenderLabelHelper _bartenderLabelHelper; private const string folderName Carton; public CartonPrintService(HttpHelper httpHelper, ILoggerCartonPrintService logger, BartenderLabelHelper bartenderLabelHelper) { _httpHelper httpHelper; _logger logger; _bartenderLabelHelper bartenderLabelHelper; } public async TaskPrintResponse 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.DeserializeObjectCartonPrintWebSocketRequest(printParameter); if (request is null) { return null; } return request; } private async TaskCartonDataData QueryCartonDataAsync(string cartonSN) { var queryCartonDataResponse null; return queryCartonDataResponse.Data; } private async TaskListLabelTemplateInfo QueryLabelTemplateInfoAsync(string productCode) { var queryLabelTemplateInfoResponse null; return queryLabelTemplateInfoResponse.Data; } }3.启动 MES 打印服务该服务程序会监听客户端的打印请求然后将打印任务传递给打印机。4.在 MES 里面启动连接打印机根据打印内容不同可以选择不同的打印机如果忘了选择打印机则系统以默认打印机为准.如图所示我们在配置页面根据不同的打印类型设置了不同的打印机当页面显示已连接的时候MES通过打印服务将需要打印的内容传递给打印机完成打印。大家如有更好的方案欢迎一起讨论