private string WriteCuttingDatasFunc(ushort flib, List <CuttingDataToCncDto> cuttings)
        {
            Focas1.IODBPSCD2 list = new Focas1.IODBPSCD2();
            short            i    = 0;

            foreach (var prop in list.GetType().GetProperties())
            {
                if (i >= cuttings.Count())
                {
                    break;
                }
                var feed   = cuttings[i].Feedrate.GetDecimals();
                var disp   = cuttings[i].StandardDisplacement.GetDecimalsWithReference(cuttings[i].StandardDisplacement2);
                var disp2  = cuttings[i].StandardDisplacement2.GetDecimalsWithReference(cuttings[i].StandardDisplacement);
                var supple = cuttings[i].Supple.GetDecimals();

                prop.SetValue(list, new Focas1.IODBPSCD2_data()
                {
                    slct       = 32767,
                    feed       = feed.Item1,
                    power      = cuttings[i].Power,
                    freq       = cuttings[i].Frequency,
                    duty       = cuttings[i].Duty,
                    g_press    = (short)(cuttings[i].GasPressure * 100),
                    g_kind     = cuttings[i].GasCode,
                    g_ready_t  = (short)(cuttings[i].GasSettingTime * 10),
                    displace   = (short)disp.Item1,
                    supple     = supple.Item1,
                    edge_slt   = cuttings[i].EdgeSlt,
                    appr_slt   = cuttings[i].ApprSlt,
                    pwr_ctrl   = cuttings[i].PwrCtrl,
                    displace2  = disp2.Item1,
                    gap_axis   = cuttings[i].GapAxis,
                    feed_dec   = (char)feed.Item2,
                    supple_dec = (char)supple.Item2,
                    dsp2_dec   = (char)disp2.Item2,
                    pb_power   = cuttings[i].PbPower,
                }, null);

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

            short num = LaserLibraryCuttingDataQuantity;
            var   ret = Focas1.cnc_wrpscdproc2(flib, 1, ref num, list);

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

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

            return(null);
        }
        public string WriteSingleCuttingData(ushort flib, CuttingDataToCncDto cutting)
        {
            Focas1.IODBPSCD2 list = new Focas1.IODBPSCD2();

            var feed   = cutting.Feedrate.GetDecimals();
            var disp   = cutting.StandardDisplacement.GetDecimalsWithReference(cutting.StandardDisplacement2);
            var disp2  = cutting.StandardDisplacement2.GetDecimalsWithReference(cutting.StandardDisplacement);
            var supple = cutting.Supple.GetDecimals();

            list.data1.slct       = 32767;
            list.data1.feed       = feed.Item1;
            list.data1.power      = cutting.Power;
            list.data1.freq       = cutting.Frequency;
            list.data1.duty       = cutting.Duty;
            list.data1.g_press    = (short)(cutting.GasPressure * 100);
            list.data1.g_kind     = cutting.GasCode;
            list.data1.g_ready_t  = (short)(cutting.GasSettingTime * 10);
            list.data1.displace   = (short)disp.Item1;
            list.data1.supple     = supple.Item1;
            list.data1.edge_slt   = cutting.EdgeSlt;
            list.data1.appr_slt   = cutting.ApprSlt;
            list.data1.pwr_ctrl   = cutting.PwrCtrl;
            list.data1.displace2  = disp2.Item1;
            list.data1.gap_axis   = cutting.GapAxis;
            list.data1.feed_dec   = (char)feed.Item2;
            list.data1.supple_dec = (char)supple.Item2;
            list.data1.dsp2_dec   = (char)disp2.Item2;
            list.data1.pb_power   = cutting.PbPower;

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

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

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

            return(null);
        }