生产制造追溯系统-再说条码打印(代码片段)

allen0118 allen0118     2022-12-06     803

关键词:

前言

在之前的博客中我介绍了如何实现生产现场的条码打印,我们的生活中到处都是条码,一维码、二维码随处可见,更别说一家从事生产制造加工的工厂了,而条码种类繁多、离线打印等情况就直接导致了条码管控上的难度,甚至会出现较为严重的品质事件,上一个版本中我是通过Web应用程序调用 WinForm 中的函数进行打印,WinForm中嵌套了 WebBrowser 来浏览网页,通过这几年的实际运用,这个方法基本能够满足大部分需求,但还是美中不足,由于 WebBrowser 所示用的浏览器内核比较低,导致很多样式无法兼容,尽管网络上有一些方法去改变这个问题(比如webkit,cef,修改注册表等等),但总是或多或少有一些问题。

新的方案,告别 WinForm & WebBrowser

我们本次以生产线 卡通包装 工位为例,进行描述:

通常情况下,操作员会扫描多个彩盒条码,这个扫描的数量一个到多个不等,每一个彩盒上面都有一个唯一的条形码或二维码,当彩盒扫描完成以后需要结束装箱,此时系统应该直接将对应的卡通标贴打印出来,操作员从打印机上撕下卡通标贴并贴于卡通箱,在此之前我们需要提前将卡通标贴的打印模板制作出来并上传至系统中,操作界面如下,支持同一个产品打印多张标贴

技术图片

此时,我们需要编写一个 Api 来获取服务器上面的模板文件以及需要打印出来的数据列表,关键代码如下:

     string ServerUrl = XmlHelper.GetXmlReader(path, "Config", "Server");
            string Api = XmlHelper.GetXmlReader(path, "Config", "Api");


            //通过 API 获取模板文件*******************************************************************
            string _Btw_Url = Api + "?action=get_carton_label&carton_sn=" + _carton_sn;
            HttpHelper http_btw = new HttpHelper();
            //创建Httphelper参数对象
            HttpItem item_btw = new HttpItem()
            
                URL = _Btw_Url,//URL必需项   
                ContentType = "application/json", 
            ;
          
            HttpResult req_result_btw = http_btw.GetHtml(item_btw);           
            string btw_str = req_result_btw.Html;
            JObject obj_btw = (JObject)JsonConvert.DeserializeObject(btw_str);
            DataTable dt = Library.JsonLib.ToDataTable(obj_btw["msg"].ToString());

            //通过 API 获取模板文件*******************************************************************

 

 WebClient web = new WebClient();             
 
            string _Api_Url = Api + "?action=get_carton_print_list&carton_sn=" + _carton_sn;
            HttpHelper http_data_list = new HttpHelper();
            //创建Httphelper参数对象
            HttpItem item_data_list = new HttpItem()
            
                URL = _Api_Url,//URL必需项   
                ContentType = "application/json", 
            ;
            
            HttpResult req_result_data_list = http_data_list.GetHtml(item_data_list); 
            string print_str = req_result_data_list.Html;  
            JObject obj = (JObject)JsonConvert.DeserializeObject(print_str);
            string _Key = obj["msg"]["key"].ToString();
            string _Value = obj["msg"]["value"].ToString(); 
            string splitKey = "*";
            string[] keys = _Key.Split(splitKey.ToCharArray(), StringSplitOptions.None);
            string[] values = _Value.Split(splitKey.ToCharArray(), StringSplitOptions.None);
             
            for (int i = 0; i < dt.Rows.Count; i++)
            
                _file_url = ServerUrl + "app/cartonlabel/" + dt.Rows[i]["LABEL_FILE"].ToString();
                _file_name = System.Guid.NewGuid().ToString() + "_" + dt.Rows[i]["LABEL_FILE"].ToString();
                web.DownloadFile(_file_url, _directory + _file_name);
                _print();
            

 

Api 编写完成之后我们进行发布,发布到本地指定一个文件夹留作备用,现在我们还差一步,那就是如何通过网页在客户端本地打印?大家都知道我们的网站是部署在服务器而非客户端本地的,但是打印的条码必须出现在客户端本地的打印机,此时你可以考虑通过网络共享打印机的办法来实现,但是这种方法非常不稳定,一些安全方面的设置就足以让你内流满面,因此我们可以考虑使用 CassiniDev 来实现,大致思路如下:

  • 新建一个批处理或者其它类型的程序。
  • 在项目中引用 CassiniDev 文件至。
  • 在本地new一个服务实例并启动。

通过如下代码即可启动该服务:

 

new Server(9001, "/", System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Service"), System.Net.IPAddress.Parse("127.0.0.1"), "", 0, false, false);

 在包装之前我们将该服务启动起来,我做了一个简单的界面,如下图所示:

 

技术图片

此时,我们需要用到上一步发布的 Api,将发布的 Api 文件拷贝至Service目录,这个Service目录在这个批处理程序的根目录下面,至此所有的前期工作已经做完了,现在只需要调用本地这个Api 即可。 我们选择 MO-00002 这个工单进行演示:

技术图片

 

 

技术图片

 

 

技术图片

 

下面开始扫描条码进行包装,该产品的包装容量为每一个卡通箱需要包装 4 个彩盒。

技术图片

 

技术图片

系统提示打印命令发送成功的时候,我们的打印机已经自动将标贴打印出来了,如下图所示:

技术图片

 

结论

相对之前的 WebBrowser,目前这种方式可以更好的兼容样式表,比如H5,再就是同一套系统不用分为网页端与客户端,尽管打开的是同一个网站;维护起来也要更加方便。

启封easyqfpda条码管理方案(代码片段)

...、准确、实时采集的管理要求。满足企业质量控制和质量追溯的需求在很多行业,特别是在产品价值昂贵和质量安全要求高的行业,客户对其最终成品(比如发动机、大型设备)和生产投入的原材料(比如医药、化工、食品行业... 查看详情

启封easyqfpda条码管理方案(代码片段)

...、准确、实时采集的管理要求。满足企业质量控制和质量追溯的需求在很多行业,特别是在产品价值昂贵和质量安全要求高的行业,客户对其最终成品(比如发动机、大型设备)和生产投入的原材料(比如医药、化工、食品行业... 查看详情

生产制造追溯系统

生产制造追溯系统,包括流程控制、客户资料、产品资料、工单资料等基础信息维护,全程条码化管理。系统特点:1)采用强大数据采集引擎、整合数据采集渠道,覆盖整个工厂制造现场,保证现场数据的实时、准确、全面2)全... 查看详情

条码打印(代码片段)

IntPtrver;ver=lixiang.B_Get_DLL_Version(0);strmsg+=Marshal.PtrToStringAnsi(ver);  查看详情

php农产品防伪追溯系统源码

简介:php农产品防伪追溯系统源码,该系统采用最简单易用的php+MySQL进行搭建,拥有完善的网站前后台,通过对每件产品生产线上的单品、二级包装、等各级包装赋予唯一的监管条码,在生产线上将此数据... 查看详情

可视化高智能多功能xml配置型工业条码打印标签打印解决方案

....标签种类繁琐,特别是在工业生产中,标签信息需要与生产系统相关联,动态地获取打印信息.当然我们可以为每个标签写一个生成程序,但如果标签种类成千上万,那么就需要投入大量的人力、物力.比如一个很小的布局变动也去修改... 查看详情

条码流水号打印如何防止重复?

...装的标签上都会打印上条码;特别是一些电子产品,为了追溯管理,每一个产品都会定义一个流水号作为产品的唯一身份。比如如下图所示:   但是现在打印流水号条码的时候,经常因为种种原因,会出现打印出重复的条... 查看详情

qts质量追溯系统

质量追溯系统QTS是基于提升企业质量管理水平的需要,对产品全生命周期中的核心过程进行质量协同管控,实现质量管理过程中的动态实时监控及自动汇总统计,规范车间管理流程的同时提高产品质量、降低成本。质量追溯系统... 查看详情

生产制造追溯系统

前言最近感到危机感越来越强烈了,整天忙的屁颠屁颠的,好像也没忙个所以然,总想自己做点事情,不想一直这么五天八小时的混着了,虽然还算舒坦但是总觉得不甘心,想法很多但就是不敢去尝试,也不能说是不敢去尝试,... 查看详情

生产制造追溯系统-iqc来料检验

前言相信大家都知道,任何一家工厂都有自己的仓库,用来存储采购回来的物料,那么在供应商将我们采购的物料送到工厂之后,我们都需要一个检验动作,也就是今天要说的===>IQC来料检验,这个检验动作是非常重要的一个... 查看详情

大咖说|条码打印机的场景应用及其特点

条码打印机,根据百度百科释义“条码打印机为条形码打印机的简称,也被称为标签打印机或标签机。是一种以不干胶标签、POSTEK标签、PET标签、吊牌、水洗布等为打印介质,能够大量快速打印条形码(包括流水号)文字、符号、图片... 查看详情

条码管理案例分享

...质的要求是非常高的,客户非常关注生产管理和产品的可追溯性。几万种物 查看详情

如何安装斑马zt410条码打印机?

...打印机。2、在这个例子里面选择本地打印机。单击后,系统会提供打印机的制造厂商和打印机型号的列表,可以使用Windows操作系统提供的打印驱动程序,在列表中选择打印机的驱动程序,然后单击即可。3、如果列表里面没有这... 查看详情

mes生产管理系统功能模块解析丨罗浮云计算

...过程中,MES系统能够对之前开工准备的条码和工单,进行生产制造过程信息的采集,之后,采集到的数据将与工单、工艺路径及参数、物料、质量等信息进行相互验证,起到物料防错、工序防错防漏、工艺防错的作用,同时也将... 查看详情

智能制造系统mes系统有哪些知名的品牌

...MES智能制造系统的生产过程的全程监控、生产质量的全程追溯能力,为更为企业所关注,并逐渐成为制造业企业发展的出路。MES智能制造系统对于日常生产管控的正常顺畅运行,是以对于工厂底层控制网络中信息的采集和集成为... 查看详情

基于hyperledger联盟链的汽车轨迹追溯系统(代码片段)

基于hyperledger联盟链的汽车轨迹追溯系统一、koa架构整理二、链码整理一、koa架构整理在完成之前的六个流程之后,已经完成一个简易的可交互的前后端系统,在此基础上进行系统开发之前的后端架构可移植性不好,... 查看详情

基于hyperledger联盟链的汽车轨迹追溯系统(代码片段)

基于hyperledger联盟链的汽车轨迹追溯系统一、区块链面对大数据的数据链改方案二、基于nodejs的infuxdb时序数据库后台搭建三、链码修订,改为Datahash上链一、区块链面对大数据的数据链改方案区块链是面向安全性的档案式管... 查看详情

lodop某内容关联条码后自动分页(代码片段)

...html这个“串”分页时在每页高度以第一个对象为准条码一般是固定高度,不需要关联,可直接设置具体的top值。关联,之前的博文:LODOP打印控件关联输出各内容、关联是相对位置,前面的打印项高度不定的时候,设置跟... 查看详情