Ejemplo n.º 1
0
        /// <summary>
        /// Switches a locomotive function
        /// </summary>
        /// <param name="functionNumber">f-number</param>
        /// <param name="functionGroup">datagroup which represents the given f-number (as byte)</param>
        public byte GetData3Byte(int functionNumber, out byte functionGroup)
        {
            byte   data3byte  = 0;
            string binaryData = string.Empty;

            functionGroup = 32;
            if (functionNumber > -1 && functionNumber < 5)
            {
                functionGroup = 32;
                binaryData    = "000" + ((_Functions.ContainsKey(0)) ? ((_Functions[0]) ? ("1") : ("0")) : ("0"));
                for (int i = 4; i > 0; i--)
                {
                    binaryData += ((_Functions.ContainsKey(i)) ? ((_Functions[i]) ? ("1") : ("0")) : ("0"));
                }
                data3byte = (byte)FlakeHelper.ConvertBinaryStringToDecimal(binaryData);
            }
            if (functionNumber > 4 && functionNumber < 9)
            {
                functionGroup = 33;
                binaryData    = "0000";
                for (int i = 8; i > 4; i--)
                {
                    binaryData += ((_Functions.ContainsKey(i)) ? ((_Functions[i]) ? ("1") : ("0")) : ("0"));
                }
                data3byte = (byte)FlakeHelper.ConvertBinaryStringToDecimal(binaryData);
            }
            if (functionNumber > 8 && functionNumber < 13)
            {
                functionGroup = 34;
                binaryData    = "0000";
                for (int i = 12; i > 7; i--)
                {
                    binaryData += ((_Functions.ContainsKey(i)) ? ((_Functions[i]) ? ("1") : ("0")) : ("0"));
                }
                data3byte = (byte)FlakeHelper.ConvertBinaryStringToDecimal(binaryData);
            }
            if (functionNumber > 12 && functionNumber < 21)
            {
                functionGroup = 35;
                for (int i = 20; i > 12; i--)
                {
                    binaryData += ((_Functions.ContainsKey(i)) ? ((_Functions[i]) ? ("1") : ("0")) : ("0"));
                }
                data3byte = (byte)FlakeHelper.ConvertBinaryStringToDecimal(binaryData);
            }
            if (functionNumber > 20 && functionNumber < 29)
            {
                functionGroup = 36;
                for (int i = 28; i > 19; i--)
                {
                    binaryData += ((_Functions.ContainsKey(i)) ? ((_Functions[i]) ? ("1") : ("0")) : ("0"));
                }
            }
            if (functionNumber < -1 || functionNumber > 28)
            {
                // if we arrive here there is an error in the choose of functionnumber (too large)
                logme.Log(i18n.FlakeComunicationMsgs.ErrorReceivingFunctionNumber, logme.LogLevel.error);
            }
            return(data3byte);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Calculate the hi and lo address
        /// </summary>
        private void CalcHiLoAddresses()
        {
            string binaryaddrress = FlakeHelper.ConvertDecimalToBinary(Address);
            string hi             = binaryaddrress.Substring(0, 8);
            string lo             = binaryaddrress.Substring(8, 8);

            Address_Hi = FlakeHelper.ConvertBinaryStringToDecimal(hi);
            Address_Lo = FlakeHelper.ConvertBinaryStringToDecimal(lo);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Construcor
 /// </summary>
 public GetCentralVersion()
     : base(i18n.FlakeComunicationCommands.GetCentralVersionName, i18n.FlakeComunicationCommands.GetCentralVersionDesc)
 {
     _ByteArray = new byte[] { 255, 254, FlakeHelper.ConvertTwoDigitHexToByte("21"), FlakeHelper.ConvertTwoDigitHexToByte("21"), FlakeHelper.ConvertTwoDigitHexToByte("00") };
     _LogMsg    = string.Format(i18n.FlakeComunicationCommandsLogMsgs.GetCentralVersion);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Construcor
 /// </summary>
 public GetCentralStateInfo()
     : base(i18n.FlakeComunicationCommands.GetCentralStateInfoName, i18n.FlakeComunicationCommands.GetCentralStateInfoDesc)
 {
     _ByteArray = new byte[] { 255, 254, FlakeHelper.ConvertTwoDigitHexToByte("21"), FlakeHelper.ConvertTwoDigitHexToByte("24"), FlakeHelper.ConvertTwoDigitHexToByte("05") };
     _LogMsg    = string.Format(i18n.FlakeComunicationCommandsLogMsgs.GetCentralStateInfo);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Calculate the checksum of a bytearray
 /// </summary>
 /// <param name="array">bytearray to calculate the checksum for</param>
 /// <param name="ignoreLeadingBytes">ignore the first two bites (LI standard)</param>
 /// <returns>returns the checksum for the given array</returns>
 private static byte CalculateChecksumByteOfArray(ref byte[] array, bool ignoreLeadingBytes = true)
 {
     return(FlakeHelper.CalculateChecksumByteOfArray(array, ignoreLeadingBytes));
 }