public static string GetTPMTrakFlagStatus(ushort handle)
 {
     FocasLibBase.IODBPMC0 f = new FocasLibBase.IODBPMC0();
     FocasLib.pmc_rdpmcrng(handle, 5, 0, 600, 600, 9, f);
     //Use the  first byte f.cdata[0] to check the pm trak flag on CNC machine and update it
     return(f.cdata[0].ToString());
 }
        public static string GetRapidTraverseOverride(ushort handle)
        {
            string str = string.Empty;

            FocasLibBase.IODBPMC0 f        = new FocasLibBase.IODBPMC0();
            FocasLibBase.IODBPMC0 iodbpmc2 = new FocasLibBase.IODBPMC0();
            FocasLib.pmc_rdpmcrng(handle, 0, 0, 14, 15, 10, f);         //pmc_rdpmcrng(0, 0, 14, 15, 10, f);
            FocasLib.pmc_rdpmcrng(handle, 0, 0, 96, 103, 16, iodbpmc2); //pmc_rdpmcrng(0, 0, 0x60, 0x67, 0x10, iodbpmc2);
            if ((iodbpmc2.cdata[0] & 128) == 128)
            {
                return(iodbpmc2.cdata[0].ToString());
            }
            switch (f.cdata[0])
            {
            case 0:
                return("100%");

            case 1:
                return("50%");

            case 2:
                return("25%");

            case 3:
                return("Slow");
            }
            return(str);
        }
        public static List <byte> ReadPMCDataTableChar(ushort handle, ushort startingAddress, ushort endingAddress)
        {
            FocasLibBase.IODBPMC0 f = new FocasLibBase.IODBPMC0();
            FocasLib.pmc_rdpmcrng(handle, 9, 1, startingAddress, endingAddress, 8 + (10 * 1), f);
            string str = string.Empty;

            return(f.cdata.ToList());
        }
 // (unsigned short FlibHndl, short adr_type, short data_type, unsigned short s_number, unsigned short e_number, unsigned short length, IODBPMC *buf)
 public static List <byte> ReadPMCRangeByte(ushort handle, short addType, ushort startingAddress, ushort endingAddress, out int ret)
 {
     //3 = X adr_type , 2 = Y adr_type
     //data_type byte = 0
     //pmc_rdpmcrng(unsigned short FlibHndl, short adr_type, short data_type, short s_number, short e_number, short length, IODBPMC *buf);
     FocasLibBase.IODBPMC0 f = new FocasLibBase.IODBPMC0();
     ret = FocasLib.pmc_rdpmcrng(handle, addType, 0, startingAddress, endingAddress, (ushort)(8 + (endingAddress - startingAddress) + 1), f);
     //if (ret != 0) throw new DivideByZeroException();
     return(f.cdata.ToList <byte>());
 }
        public static string GetFeedrateOverride(ushort handle)
        {
            FocasLibBase.IODBPMC0 f = new FocasLibBase.IODBPMC0();
            FocasLib.pmc_rdpmcrng(handle, 1, 0, 3, 3, 9, f);
            if (f.cdata[0] < 8)
            {
                return("Manual Mode");
            }
            f = new FocasLibBase.IODBPMC0();
            FocasLib.pmc_rdpmcrng(handle, 0, 0, 12, 19, 16, f);
            int num = 0xff - f.cdata[0];

            return(num.ToString() + "%");
        }
        public static List <byte> ReadPMCRangeByte(ushort handle, short addType = 5, ushort startingAddress = 7000, ushort endingAddress = 7063)
        {
            //R(Internal relay) = 5
            //D (Data table) = 9
            //data_type byte = 0
            //pmc_rdpmcrng(unsigned short FlibHndl, short adr_type, short data_type, short s_number, short e_number, short length, IODBPMC *buf);
            FocasLibBase.IODBPMC0 f = new FocasLibBase.IODBPMC0();
            short ret = FocasLib.pmc_rdpmcrng(handle, addType, 0, startingAddress, endingAddress, (ushort)(8 + (endingAddress - startingAddress) + 1), f);

            if (ret != 0)
            {
                return(null);
            }
            return(f.cdata.ToList <byte>());
        }
 public static string GetSpindleOverride(ushort handle)
 {
     FocasLibBase.IODBPMC0 f = new FocasLibBase.IODBPMC0();
     FocasLib.pmc_rdpmcrng(handle, 0, 0, 30, 37, 16, f);
     return(f.cdata[0].ToString() + "%");
 }