设备控制之矩阵状态显示

在做设备控制的时候,比较麻烦的是连接到矩阵输出端上的设备(比如:投影机,显示器)的信号显示问题,

下面说下我用的方法:

首先建个接口:

public interface IUseVideoMatrix {
bool UseVideoOutput(int output);
void BindVideoSignal(int input, int output);
}

UseVideoOutput用于判断设备是否连到矩阵的输出端output,如果返回true,则通过BindVideoSignal将矩阵对应的

输入端input绑定给此设备。

每个连到矩阵输出端的设备对应的UserControl继承此接口,比如Odin设备的每个输入端接在矩阵的输出端上,

下图为Odin的界面:

Odin设备对应的UserControl如下:

代码
public partial class OdinPanel : UserControl, IUseVideoMatrix {
public OdinPanel() {
InitializeComponent();

Register();
}

private void Register() {
VideoOutput2Label.Add(
1, label1); //1表示矩阵的输出端1
VideoOutput2Label.Add(2, label2);
VideoOutput2Label.Add(
3, label3);
VideoOutput2Label.Add(
4, label4);
VideoOutput2Label.Add(
5, label5);
VideoOutput2Label.Add(
6, label6);
VideoOutput2Label.Add(
7, label7);
VideoOutput2Label.Add(
8, label8);
}

public bool UseVideoOutput(int output) {
return VideoOutput2Label.ContainsKey(output);
}

public void BindVideoSignal(int input, int output) {
if(input < 0 || input > Room.Instance.VideoMatrix.VideoInputNames.Count) { return; }

Label label
= VideoOutput2Label[output];
label.Text
= Room.Instance.VideoMatrix.GetInputNameByInput(input);
}

private Dictionary<int, Label> VideoOutput2Label = new Dictionary<int, Label>();
}

此UserControl继承并实现了IUseVideoMatrix。

 

在管理类里建个IUseVideoMatrix的列表,并将继承此接口的UserControl添加到列表中,如下:

代码
public void InstallUseMatrixPanel() {
UseVideoMatrixPanels.Add(odinPanel1);
UseVideoMatrixPanels.Add(recordPanel1);
UseVideoMatrixPanels.Add(voicePanel1);
UseVideoMatrixPanels.Add(multiplierPanel1);
}

private List<IUseVideoMatrix> UseVideoMatrixPanels = new List<IUseVideoMatrix>();

 

在收到矩阵切换的命令时,遍列此列表,如果UseVideoOutput返回true,则调用BindVideoSignal刷新设备对应的信号,

代码如下:

代码
private void VideoMatrixNotifyHandler(Notify notify) {
VideoMatrixNotify videoMatrixNotify
= notify as VideoMatrixNotify;
int input = videoMatrixNotify.Input;
int output = videoMatrixNotify.Output;
foreach (var each in UseVideoMatrixPanels) {
if (each.UseVideoOutput(output)) {
each.BindVideoSignal(input, output);
}
}
}

posted on 2010-07-18 22:01  cjfwu  阅读(452)  评论(1编辑  收藏  举报

导航