private string WritePiercingDatasFunc(ushort flib, List <PiercingDataToCncDto> piercings)
        {
            Focas1.IODBPIRC list = new Focas1.IODBPIRC();
            short           i    = 0;

            foreach (var prop in list.GetType().GetProperties())
            {
                if (i >= piercings.Count())
                {
                    break;
                }

                var def_pos  = piercings[i].StandardDisplacement.GetDecimalsWithReference(piercings[i].StandardDisplacement2);
                var def_pos2 = piercings[i].StandardDisplacement2.GetDecimalsWithReference(piercings[i].StandardDisplacement);

                prop.SetValue(list, new Focas1.IODBPIRC_data()
                {
                    slct         = 32767,
                    power        = piercings[i].Power,
                    freq         = piercings[i].Frequency,
                    duty         = piercings[i].Duty,
                    i_freq       = piercings[i].StepFrequency,
                    i_duty       = piercings[i].StepDuty,
                    step_t       = piercings[i].StepTime,
                    step_sum     = piercings[i].StepQuantity,
                    pier_t       = piercings[i].PiercingTime,
                    g_press      = (short)(piercings[i].GasPressure * 100),
                    g_kind       = piercings[i].GasCode,
                    g_time       = (short)(piercings[i].GasSettingTime * 10),
                    def_pos      = (short)def_pos.Item1,
                    def_pos2     = (short)def_pos2.Item1,
                    gap_axis     = piercings[i].GapAxis,
                    def_pos2_dec = (char)def_pos2.Item2,
                    pb_power     = piercings[i].PbPower,
                }, null);

                i++;
                if (i >= LaserLibraryPiercingDataQuantity)
                {
                    break;
                }
            }

            short num = LaserLibraryPiercingDataQuantity;
            var   ret = Focas1.cnc_wrpscdpirc(flib, 101, ref num, list);

            if (ret != 0)
            {
                var err_msg = GetPiercingDataErrorMessage(flib);

                return($"写入穿孔参数错误,{err_msg}");
            }

            return(null);
        }
        public string WriteSinglePiercingData(ushort flib, PiercingDataToCncDto piercing)
        {
            Focas1.IODBPIRC list = new Focas1.IODBPIRC();

            var def_pos  = piercing.StandardDisplacement.GetDecimalsWithReference(piercing.StandardDisplacement2);
            var def_pos2 = piercing.StandardDisplacement2.GetDecimalsWithReference(piercing.StandardDisplacement);

            list.data1.slct         = 32767;
            list.data1.power        = piercing.Power;
            list.data1.freq         = piercing.Frequency;
            list.data1.duty         = piercing.Duty;
            list.data1.i_freq       = piercing.StepFrequency;
            list.data1.i_duty       = piercing.StepDuty;
            list.data1.step_t       = piercing.StepTime;
            list.data1.step_sum     = piercing.StepQuantity;
            list.data1.pier_t       = piercing.PiercingTime;
            list.data1.g_press      = (short)(piercing.GasPressure * 100);
            list.data1.g_kind       = piercing.GasCode;
            list.data1.g_time       = (short)(piercing.GasSettingTime * 10);
            list.data1.def_pos      = (short)def_pos.Item1;
            list.data1.def_pos2     = (short)def_pos2.Item1;
            list.data1.gap_axis     = piercing.GapAxis;
            list.data1.def_pos2_dec = (char)def_pos2.Item2;
            list.data1.pb_power     = piercing.PbPower;

            short num       = 1;
            short start_num = piercing.ENo;
            var   ret       = Focas1.cnc_wrpscdpirc(flib, start_num, ref num, list);

            if (ret != 0)
            {
                var err_msg = GetPiercingDataErrorMessage(flib);

                return($"写入穿孔参数错误,{err_msg}");
            }

            return(null);
        }