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); AppEventHandler.LedLightChanged(this, HIDInstance, null, PanelLEDColor.DARK); } catch (Exception ex) { Common.ShowErrorMessageBox(ex); } }