// Send the Printer Wide Settings
        private bool LoadPrinterSettings(IJPMessage m, XmlNode pr)
        {
            bool success = true;

            foreach (XmlNode c in pr.ChildNodes)
            {
                if (c is XmlWhitespace)
                {
                    continue;
                }
                switch (c.Name)
                {
                case "PrintHead":
                    m.CharacterOrientation = ParseEnum <IJPCharacterOrientation>(GetXmlAttr(c, "Orientation"));
                    break;

                case "ContinuousPrinting":
                    m.RepeatIntervals = (uint)GetXmlAttrN(c, "RepeatInterval");
                    m.RepeatCount     = (ushort)GetXmlAttrN(c, "PrintsPerTrigger");
                    break;

                case "TargetSensor":
                    m.TargetSensorFilter = ParseEnum <IJPSensorFilter>(GetXmlAttr(c, "Filter"));
                    m.TimeSetup          = (ushort)GetXmlAttrN(c, "SetupValue");
                    m.TargetSensorTimer  = (ushort)GetXmlAttrN(c, "Timer");
                    break;

                case "CharacterSize":
                    m.CharacterWidth  = (ushort)GetXmlAttrN(c, "Width");
                    m.CharacterHeight = (byte)GetXmlAttrN(c, "Height");
                    break;

                case "PrintStartDelay":
                    m.PrintStartDelayForward = (ushort)GetXmlAttrN(c, "Forward");
                    m.PrintStartDelayReverse = (ushort)GetXmlAttrN(c, "Reverse");
                    break;

                case "EncoderSettings":
                    m.HiSpeedPrint            = ParseEnum <IJPHiSpeedPrintType>(GetXmlAttr(c, "HighSpeedPrinting"));
                    m.PulseRateDivisionFactor = (ushort)GetXmlAttrN(c, "Divisor");
                    m.ProductSpeedMatching    = ParseEnum <IJPProductSpeedMatching>(GetXmlAttr(c, "ExternalEncoder"));
                    break;

                case "InkStream":
                    m.InkDropUse        = (byte)GetXmlAttrN(c, "InkDropUse");
                    m.InkDropChargeRule = ParseEnum <IJPInkDropChargeRule>(GetXmlAttr(c, "ChargeRule"));
                    break;

                case "Substitution":
                    if (ijp != null)
                    {
                        LoadBuildSubstitution(c);
                    }
                    break;

                case "ClockSystem":
                    if (ijp != null && bool.TryParse(GetXmlAttr(c, ""), out bool cs))
                    {
                        ijp.SetHourMode24(cs);
                    }
                    break;

                case "TimeCount":
                    m.TimeCount = LoadTimeCount(c);
                    break;

                case "Shifts":
                    LoadShift(m.ShiftCodes, c);
                    break;

                case "Logos":
                    if (ijp != null)
                    {
                        LoadLogos(c);
                    }
                    break;
                }
            }
            return(success);
        }