private void SetInput(eDisplayInput input) { string sInput; switch (input) { case eDisplayInput.Default: { sInput = "HDMI.1"; break; } case eDisplayInput.Hdmi1: case eDisplayInput.Hdmi2: case eDisplayInput.Hdmi3: case eDisplayInput.Hdmi4: { sInput = $"HDMI.{(ushort)input}"; break; } case eDisplayInput.DisplayPort1: { sInput = "DP"; break; } case eDisplayInput.DisplayPort2: { throw new NotSupportedException("Planar display only has one DP input"); } case eDisplayInput.OpsSlot: { sInput = "OPS"; break; } default: { sInput = "HDMI.1"; break; } } string Command = $"Source.Select(Zone.1)={sInput}\r"; tcpClient.SendString(Command); }
private void TcpClient_DataReceived(object sender, DataReceivedArgs e) { /* * Parse the data sent by the display, check for changes * in properties that the IDisplay interfaces uses, and * raise events accordingly */ //example response: "MULTI.VIEW:QUAD" string[] ResponseValues = e.DataString.ToUpper().Split(':'); string PropThatChanged = ResponseValues[0]; string NewValue = ResponseValues[1]; if (PropThatChanged.IndexOf("DISPLAY.POWER") >= 0) { _power = (NewValue.IndexOf("ON") >= 0); PowerStateChanged?.Invoke(this, new PowerEventArgs { State = _power, uState = _power ? (ushort)1 : (ushort)0 }); } else if (PropThatChanged.IndexOf("AUDIO.VOLUME") >= 0) { int sentValue = int.Parse(NewValue); //convert string value to int double scaledPercentage = (sentValue / 100) * ushort.MaxValue; //scale int to proportion of ushort value (65535) _volume = (ushort)Math.Floor(scaledPercentage); //convert to ushort VolumeChanged?.Invoke(this, new VolumeEventArgs() { CurrentLevel = _volume }); } else if (PropThatChanged.IndexOf("MULTI.VIEW") >= 0) { _quadDisplay = (NewValue.IndexOf("QUAD") >= 0); QuadViewChanged?.Invoke(this, new QuadViewEventArgs() { State = _quadDisplay, uState = _quadDisplay ? (ushort)1 : (ushort)0 }); } else if (PropThatChanged.IndexOf("SOURCE.SELECT(ZONE.1)") >= 0) { switch (NewValue) { case ("OPS"): { _input = eDisplayInput.OpsSlot; break; } case ("HDMI.1"): { _input = eDisplayInput.Hdmi1; break; } case ("HDMI.2"): { _input = eDisplayInput.Hdmi2; break; } case ("HDMI.3"): { _input = eDisplayInput.Hdmi3; break; } case ("HDMI.4"): { _input = eDisplayInput.Hdmi4; break; } case ("DP"): { _input = eDisplayInput.DisplayPort1; break; } } InputChanged?.Invoke(this, new InputEventArgs() { CurrentInput = _input, uCurrentInput = (ushort)_input }); } }