CodeSoft 打印操作类;能获取到对应的lab变量,记得手动释放资源

    /// <summary>
    /// 适用于CodeSoft6.必须要安装CS6
    /// 适用于CodeSoft6.必须要安装CS6
    /// <para>平均2秒打一个,垃.- 圾</para>
    /// <para>优化后速度还是挺快了,要先new这个类,再调用CodeSoftPrint方法</para>
    /// <para>需要引用在在CodeSoft6安装文件下的"Lppx2.tlb"文件.命名空间为"LabelManager2" 最后变成了这个DLL Interop.LabelManager2.dll</para>
    /// <para>如果报错 更改该DLL的[嵌入互操作类型]为false</para>
    /// </summary>
    public class CodeSoftPrinterHelper
    {
        private string _LabPathName;//标签名称
        private LabelManager2.ApplicationClass _lbl;
        private LabelManager2.Document _doc;

        /// <summary>
        /// initClass
        /// </summary>
        /// <param name="LabPathName"></param>
        public CodeSoftPrinterHelper(string LabPathName)
        {
            _LabPathName = LabPathName;
            List<string> varList = new List<string>();
            if (!File.Exists(LabPathName))
            {
                throw new Exception("Lab文件不存在,请确认");
            }
            FileInfo fileInfo = new FileInfo(_LabPathName);

            //Console.WriteLine("_lbl前时间为: " + DateTime.Now.ToString("yyyy - MM - dd HH.mm.ss.fff"));
            _lbl = new LabelManager2.ApplicationClass();//这个步骤花了1600毫秒左右 一般400ms

            //Console.WriteLine("Open前时间为: " + DateTime.Now.ToString("yyyy - MM - dd HH.mm.ss.fff"));
            _lbl.Documents.Open(fileInfo.FullName, false);//调用设计好的Label文件 这个步骤也花了400毫秒左右
                                                          //Console.WriteLine("Open后 ActiveDocument前时间为: " + DateTime.Now.ToString("yyyy - MM - dd HH.mm.ss.fff"));

            _doc = _lbl.ActiveDocument;//获取变量文本 这个步骤1ms左右
                                       //Console.WriteLine("ActiveDocument后 时间为: " + DateTime.Now.ToString("yyyy - MM - dd HH.mm.ss.fff"));

        }

        /// <summary>
        /// CodeSoft6 Lab文件打印
        /// </summary>
        /// <param name="VarDict"></param>
        /// <returns></returns>
        public bool CodeSoftPrint(Dictionary<string, string> VarDict = null)
        {
            bool result = false;
            if (VarDict != null)
            {
                foreach (var varItem in VarDict)
                {
                    _doc.Variables.FormVariables.Item(varItem.Key).Value = varItem.Value;//给变量传值
                }
            }//short shortResult = 1;
            short shortResult = _doc.PrintDocument();//开始打印 打印成功为1
                                                     //打印完成后要重置变量值
            if (VarDict != null)
            {
                foreach (var varItem in VarDict)
                {
                    _doc.Variables.FormVariables.Item(varItem.Key).Value = "";//给变量传值
                }
            }
            if (shortResult == 1)
            {
                result = true;
            }
            return result;
        }

        /// <summary>
        /// 获取CS6的变量名
        /// </summary>
        /// <param name="LabPathName"></param>
        /// <returns></returns>
        public List<string> GetLabVarName()
        {
            List<string> varList = new List<string>();
            for (int i = 1; i <= _doc.Variables.Count; i++)
            {//Console.WriteLine("获取到的变量名为:" + doc.Variables.Item(i).Name.ToString());
                varList.Add(_doc.Variables.Item(i).Name.ToString());
            }
            return varList;
        }

        /// <summary>
        /// try释放lab资源
        /// </summary>
        public void CloseDisposable()
        {
            try
            {
                _doc.Close();//会关闭资源 这个步骤1ms左右
                _lbl.Documents.CloseAll();//也会关闭资源 这个步骤14ms左右
                _lbl.Quit();//退出 这个步骤1499ms左右
                GC.Collect(0);
            }
            catch (Exception) { }
        }

        /// <summary>
        /// CodeSoft6 Lab文件打印
        /// </summary>
        /// <param name="LabPathName">文件名</param>
        /// <param name="VarDict">需要的变量数</param>
        /// <returns></returns>
        public static bool CodeSoftPrint(string LabPathName, Dictionary<string, string> VarDict = null)
        {
            bool result = false;
            if (!File.Exists(LabPathName))
            {
                throw new Exception("Lab文件不存在,请确认");
            }
            FileInfo fileInfo = new FileInfo(LabPathName);

            LabelManager2.ApplicationClass lbl = new LabelManager2.ApplicationClass();
            lbl.Documents.Open(fileInfo.FullName, false);//调用设计好的Label文件
            LabelManager2.Document doc = lbl.ActiveDocument;//获取变量文本
            try
            {
                if (VarDict != null)
                {
                    foreach (var varItem in VarDict)
                    {
                        Console.WriteLine(varItem.Key + "--------------" + varItem.Value);
                        doc.Variables.FormVariables.Item(varItem.Key).Value = varItem.Value;//给变量传值
                    }
                }//doc.Printer.SwitchTo(UtilHelperPrintServer.GetDefaultPrinter());//定义打印机
                short shortResult = doc.PrintDocument();//开始打印 打印成功为1
                if (shortResult == 1)
                {
                    result = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                throw ex;
            }
            finally
            {
                doc.Close();
                lbl.Documents.CloseAll();
                lbl.Quit();//退出
                GC.Collect(0);
            }
            return result;
        }

        /// <summary>
        /// 获取CS6的变量名
        /// </summary>
        /// <param name="LabPathName"></param>
        /// <returns></returns>
        public static List<string> GetLabVarName(string LabPathName)
        {
            List<string> varList = new List<string>();
            if (!File.Exists(LabPathName))
            {
                throw new Exception("Lab文件不存在,请确认");
            }
            FileInfo fileInfo = new FileInfo(LabPathName);

            LabelManager2.ApplicationClass lbl = new LabelManager2.ApplicationClass();
            lbl.Documents.Open(fileInfo.FullName, false);//调用设计好的Label文件
            LabelManager2.Document doc = lbl.ActiveDocument;//获取变量文本 为dos
            for (int i = 1; i <= doc.Variables.Count; i++)
            {//Console.WriteLine("获取到的变量名为:" + doc.Variables.Item(i).Name.ToString());
                varList.Add(doc.Variables.Item(i).Name.ToString());
            }
            return varList;
        }
    }

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
LabVIEW是一款强大的图形化编程软件,而CodeSoft是一款用于设计和打印标签的软件。通过LabVIEW和CodeSoft的结合,我们可以实现使用LabVIEW控制CodeSoft打印标签的功能。 首先,在LabVIEW中我们可以利用其图形化编程界面搭建出我们所需的界面和逻辑,如按钮、输入框等等。然后,我们需要利用LabVIEW中提供的VI(Virtual Instrument,虚拟仪器)函数调用CodeSoft提供的相关API(应用程序接口)函数来实现与CodeSoft的通讯。 在LabVIEW中调用CodeSoft的API函数,我们需要使用LabVIEW的调用DLL(Dynamic-Link Library,动态链接库)的功能。首先,我们需要对CodeSoft提供的API函数进行导入和声明。然后,在需要使用CodeSoft功能的地方,我们可以直接通过调用相应的API函数来实现相应的操作,如设计标签模板、设置打印参数、指定打印内容等等。 在LabVIEW中和CodeSoft的通讯可以通过不同的方式进行,如COM(Component Object Model,组件对象模型)、ActiveX(ActiveX Control,活动控件)、NI-VISA(National Instruments Virtual Instrument Software Architecture,国家仪器虚拟仪器软件架构)等等。用户可以根据自己的需求和实际情况选择合适的通讯方式。 通过LabVIEW和CodeSoft的结合,我们可以实现灵活高效地控制CodeSoft来完成标签打印操作。用户可以通过LabVIEW的用户界面输入相关数据,并实时预览和调整打印内容和格式等。同时,由于LabVIEW的图形化编程特性,我们可以更直观地设计和修改打印模板,提高开发效率。 综上所述,通过LabVIEW和CodeSoft的结合,我们可以实现使用LabVIEW控制CodeSoft打印标签的功能,为标签打印和标签设计提供了便捷和高效的解决方案。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值