示例#1
0
        public void SetLED(BIPLedPositionEnum bipLedPositionEnum, PanelLEDColor panelLEDColor)
        {
            try
            {
                var    row   = GetRow(bipLedPositionEnum);
                var    index = GetIndex(bipLedPositionEnum);
                byte[] array = { 0x0 };
                byte   mask  = 0;

                switch (row)
                {
                case 1:
                {
                    array = _upperRowBytes;
                    break;
                }

                case 2:
                {
                    array = _middleRowBytes;
                    break;
                }

                case 3:
                {
                    array = _lowerRowBytes;
                    break;
                }
                }
                switch (index)
                {
                case 1:
                {
                    mask = _1BIPMask;
                    break;
                }

                case 2:
                {
                    mask = _2BIPMask;
                    break;
                }

                case 3:
                {
                    mask = _3BIPMask;
                    break;
                }

                case 4:
                {
                    mask = _4BIPMask;
                    break;
                }

                case 5:
                {
                    mask = _5BIPMask;
                    break;
                }

                case 6:
                {
                    mask = _6BIPMask;
                    break;
                }

                case 7:
                {
                    mask = _7BIPMask;
                    break;
                }

                case 8:
                {
                    mask = _8BIPMask;
                    break;
                }
                }
                switch (panelLEDColor)
                {
                case PanelLEDColor.DARK:
                {
                    //Set all to 0
                    array[0] = (array[0] &= (byte)~mask);
                    array[1] = (array[1] &= (byte)~mask);
                    break;
                }

                case PanelLEDColor.GREEN:
                {
                    //Set first byte's bit to 1
                    array[0] = array[0] |= mask;
                    array[1] = (array[1] &= (byte)~mask);
                    break;
                }

                case PanelLEDColor.YELLOW:
                {
                    //Set both byte's bit to 1
                    array[0] = array[0] |= mask;
                    array[1] = array[1] |= mask;
                    break;
                }

                case PanelLEDColor.RED:
                {
                    //Set second byte's bit to 1
                    array[0] = (array[0] &= (byte)~mask);
                    array[1] = array[1] |= mask;
                    break;
                }
                }

                /*
                 * 01000000 2nd BIP from left GREEN
                 * 00000000
                 *
                 * 01000000 2nd BIP from left YELLOW
                 * 01000000
                 *
                 * 00000000 2nd BIP from left RED
                 * 01000000
                 *
                 * 00000000 2nd BIP from left DARK
                 * 00000000
                 *
                 */

                //_upperRowBytes = { (byte)0x0, (byte)0x0 }; //byte 1 & 4
                //_middleRowBytes = { (byte)0x0, (byte)0x0 };//byte 2 & 5
                //_lowerRowBytes = { (byte)0x0, (byte)0x0 }; //byte 3 & 6
                var finalArray = new byte[7];
                finalArray[0] = 0xb8;
                finalArray[1] = _upperRowBytes[0];
                finalArray[2] = _middleRowBytes[0];
                finalArray[3] = _lowerRowBytes[0];
                finalArray[4] = _upperRowBytes[1];
                finalArray[5] = _middleRowBytes[1];
                finalArray[6] = _lowerRowBytes[1];

                SendLEDData(finalArray);
            }
            catch (Exception ex)
            {
                Common.ShowErrorMessageBox(ex);
            }
        }
示例#2
0
 public int GetRow(BIPLedPositionEnum bipLedPositionEnum)
 {
     //Position_1_1
     return(int.Parse(bipLedPositionEnum.ToString().Remove(0, 9).Substring(0, 1)));
 }
示例#3
0
        public PanelLEDColor GetColor(BIPLedPositionEnum bipLedPositionEnum)
        {
            try
            {
                var    row   = GetRow(bipLedPositionEnum);
                var    index = GetIndex(bipLedPositionEnum);
                byte[] array = { 0x0 };
                byte   mask  = 0;

                switch (row)
                {
                case 1:
                {
                    array = _upperRowBytes;
                    break;
                }

                case 2:
                {
                    array = _middleRowBytes;
                    break;
                }

                case 3:
                {
                    array = _lowerRowBytes;
                    break;
                }
                }
                switch (index)
                {
                case 1:
                {
                    mask = _1BIPMask;
                    break;
                }

                case 2:
                {
                    mask = _2BIPMask;
                    break;
                }

                case 3:
                {
                    mask = _3BIPMask;
                    break;
                }

                case 4:
                {
                    mask = _4BIPMask;
                    break;
                }

                case 5:
                {
                    mask = _5BIPMask;
                    break;
                }

                case 6:
                {
                    mask = _6BIPMask;
                    break;
                }

                case 7:
                {
                    mask = _7BIPMask;
                    break;
                }

                case 8:
                {
                    mask = _8BIPMask;
                    break;
                }
                }

                //[0] & [1] == 0  --> DARK
                //[0] == 1, [1] == 0 --> GREEN
                //[0] == 1, [1] == 1 --> YELLOW
                //[0] == 0, [1] == 1 --> RED
                if ((array[0] & mask) > 1)
                {
                    if ((array[1] & mask) < 1)
                    {
                        return(PanelLEDColor.GREEN);
                    }
                    if ((array[1] & mask) > 1)
                    {
                        return(PanelLEDColor.YELLOW);
                    }
                }
                if ((array[0] & mask) < 1)
                {
                    if ((array[1] & mask) < 1)
                    {
                        return(PanelLEDColor.DARK);
                    }
                    if ((array[1] & mask) > 1)
                    {
                        return(PanelLEDColor.RED);
                    }
                }
            }
            catch (Exception ex)
            {
                Common.LogError(ex);
            }
            return(PanelLEDColor.RED);
        }
示例#4
0
 public string GetPosString(BIPLedPositionEnum bipLedPositionEnum)
 {
     //Position_1_1
     return(bipLedPositionEnum.ToString().Replace("Position_", ""));
     //1_1
 }
示例#5
0
        public PanelLEDColor GetColor(BIPLedPositionEnum bipLedPositionEnum)
        {
            try
            {
                var    row   = GetRow(bipLedPositionEnum);
                var    index = GetIndex(bipLedPositionEnum);
                byte[] array = { 0x0 };
                byte   mask  = 0;

                switch (row)
                {
                case 1:
                {
                    array = _upperRowBytes;
                    break;
                }

                case 2:
                {
                    array = _middleRowBytes;
                    break;
                }

                case 3:
                {
                    array = _lowerRowBytes;
                    break;
                }
                }

                switch (index)
                {
                case 1:
                {
                    mask = _1BIPMask;
                    break;
                }

                case 2:
                {
                    mask = _2BIPMask;
                    break;
                }

                case 3:
                {
                    mask = _3BIPMask;
                    break;
                }

                case 4:
                {
                    mask = _4BIPMask;
                    break;
                }

                case 5:
                {
                    mask = _5BIPMask;
                    break;
                }

                case 6:
                {
                    mask = _6BIPMask;
                    break;
                }

                case 7:
                {
                    mask = _7BIPMask;
                    break;
                }

                case 8:
                {
                    mask = _8BIPMask;
                    break;
                }
                }

                /*
                 * 14 Jan 2022
                 * Very weird problem, without this delay the panel GUI would show the previous color instead of current.
                 * As if it had a reference to the array as it was before the change. Can't figure this out. Just a workaround.
                 */
                Thread.Sleep(1);

                // [0] & [1] == 0  --> DARK
                // [0] == 1, [1] == 0 --> GREEN
                // [0] == 1, [1] == 1 --> YELLOW
                // [0] == 0, [1] == 1 --> RED
                if ((array[0] & mask) > 1)
                {
                    if ((array[1] & mask) < 1)
                    {
                        //Debug.WriteLine(bipLedPositionEnum + " is currently GREEN");
                        return(PanelLEDColor.GREEN);
                    }

                    if ((array[1] & mask) > 1)
                    {
                        //Debug.WriteLine(bipLedPositionEnum + " is currently YELLOW");
                        return(PanelLEDColor.YELLOW);
                    }
                }

                if ((array[0] & mask) < 1)
                {
                    if ((array[1] & mask) < 1)
                    {
                        //Debug.WriteLine(bipLedPositionEnum + " is currently DARK");
                        return(PanelLEDColor.DARK);
                    }

                    if ((array[1] & mask) > 1)
                    {
                        //Debug.WriteLine(bipLedPositionEnum + " is currently RED");
                        return(PanelLEDColor.RED);
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }

            return(PanelLEDColor.RED);
        }