zwaveupnpbridgeform.cs
来自「zwave 无线通讯协议 PC controller 控制器源码」· CS 代码 · 共 1,362 行 · 第 1/5 页
CS
1,362 行
public ZensysBridgedDevice.ZWaveDeviceTypes deviceZWaveType;
public ZensysBridgedDevice.ZWaveBridgeTypes bridgeType;
public ZensysBridgedDevice.ZWaveBridgeDeviceState state;
}
private delegate void StringDelegate(string text);
private delegate string StringVoidDelegate();
private delegate void TreeDelegate(TreeViewCmds cmd, Intel.UPNP.UPnPDevice device);
private delegate void RendererTree(TreeViewCmds cmd, ZensysUPnPAvRendererDevice rendererDevice, object arg);
private delegate void ButtonsDelegate(bool bEnabled, bool bAbortEnabled);
private string Get_labelZWaveStatusText()
{
if (labelZWaveStatusText.InvokeRequired)
{
return (string)labelZWaveStatusText.Invoke(new StringVoidDelegate(Get_labelZWaveStatusText), new object[] { });
}
else
{
return labelZWaveStatusText.Text;
}
}
private void Update_labelZWaveStatusText(string text)
{
if (labelZWaveStatusText.InvokeRequired)
{
labelZWaveStatusText.Invoke(new StringDelegate(Update_labelZWaveStatusText), new object[] { text });
}
else
{
labelZWaveStatusText.Text = text;
}
}
private string ThreadSafe_labelZWaveStatusText
{
set
{
Update_labelZWaveStatusText(value);
}
get
{
return Get_labelZWaveStatusText();
}
}
/// <summary>
/// Update the UPnP device scanner treeview according to events indicated by the cmd variable
/// </summary>
/// <param name="cmd">event descriptor</param>
/// <param name="device">device on which event concerns</param>
private void updateScannerTree(TreeViewCmds cmd, Intel.UPNP.UPnPDevice device)
{
if (treeViewDeviceScanner.InvokeRequired)
{
treeViewDeviceScanner.Invoke(new TreeDelegate(updateScannerTree), new object[2] { cmd, device });
return;
}
switch (cmd)
{
case TreeViewCmds.include:
{
TreeNode treeNode = treeViewDeviceScanner.Nodes.Add(device.FriendlyName);
if (device.DeviceURN.IndexOf(":BinaryLight:", 0, device.DeviceURN.Length) >= 0)
{
treeNode.ImageIndex = 4;
}
else
{
treeNode.ImageIndex = 1;
}
treeNode.Tag = device;
mainLog.Write("UPnP device added " + device.FriendlyName + " - " + treeViewDeviceScanner.Nodes.Count.ToString("000") + " in scanner treeview");
break;
}
case TreeViewCmds.exclude:
{
foreach (TreeNode treeNode in treeViewDeviceScanner.Nodes)
{
if ((Intel.UPNP.UPnPDevice)treeNode.Tag == device)
{
treeViewDeviceScanner.Nodes.Remove(treeNode);
mainLog.Write("UPnP device removed " + device.FriendlyName + " - " + treeViewDeviceScanner.Nodes.Count.ToString("000") + " in scanner treeview");
break;
}
}
break;
}
default:
break;
}
}
private void updateUPnPRendererTree(TreeViewCmds cmd, ZensysUPnPAvRendererDevice rendererDevice, object arg)
{
return;
if (treeViewRenderer.InvokeRequired)
{
treeViewRenderer.Invoke(new RendererTree(updateUPnPRendererTree), new object[3] { cmd, rendererDevice, arg });
return;
}
switch (cmd)
{
case TreeViewCmds.include:
{
string treeNodeName = rendererDevice.Device.FriendlyName;
TreeNode treeNode;
int deviceNo = -1, tdeviceNo = -1;
foreach (TreeNode treeNo in treeViewRenderer.Nodes)
{
if (treeNo.Text.IndexOf(treeNodeName, 0) >= 0)
{
tdeviceNo = ((ZensysUPnPAvRendererDevice)treeNo.Tag).DeviceNumber;
if (tdeviceNo > deviceNo)
{
deviceNo = tdeviceNo;
}
}
}
if (deviceNo >= 0)
{
deviceNo++;
rendererDevice.DeviceNumber = deviceNo;
treeNodeName += " [" + deviceNo.ToString() + "]";
}
treeNode = new TreeNode(treeNodeName);
try
{
rendererDevice.Device.FriendlyName = treeNodeName;
treeNode.Tag = rendererDevice;
treeViewRenderer.Nodes.Add(treeNode);
mainLog.Write("device added " + treeNodeName + " - " + treeViewRenderer.Nodes.Count.ToString("000") + " in Renderer treeview");
}
catch (Exception e)
{
treeNode.Remove();
mainLog.Write("updateUPnPRendererTree: Exception - include " + e.Message);
}
break;
}
case TreeViewCmds.exclude:
{
foreach (TreeNode treeNode in treeViewRenderer.Nodes)
{
if ((ZensysUPnPAvRendererDevice)treeNode.Tag == rendererDevice)
{
try
{
rendererDevice.ConnectionManager.OnResult_GetCurrentConnectionIDs -= new MicroStack.CpConnectionManager.Delegate_OnResult_GetCurrentConnectionIDs(ConnectionManager_OnResult_GetCurrentConnectionIDs);
rendererDevice.AVTransport.OnResult_GetPositionInfo -= new MicroStack.CpAVTransport.Delegate_OnResult_GetPositionInfo(AVTransport_OnResult_GetPositionInfo);
rendererDevice.AVTransport.OnStateVariable_LastChange -= new MicroStack.CpAVTransport.StateVariableModifiedHandler_LastChange(AVTransport_OnStateVariable_LastChange);
rendererDevice.AVTransport.OnResult_GetTransportInfo -= new MicroStack.CpAVTransport.Delegate_OnResult_GetTransportInfo(AVTransport_OnResult_GetTransportInfo);
mainLog.Write("device removed " + treeNode.Text + " - " + treeViewRenderer.Nodes.Count.ToString("000") + " in Renderer treeview");
StopAVRendererBridging(treeNode, rendererDevice, rendererDevice);
treeViewRenderer.Nodes.Remove(treeNode);
}
catch (Exception e)
{
mainLog.Write("updateUPnPRendererTree : Exception - exclude " + e.Message);
}
break;
}
}
break;
}
case TreeViewCmds.GetCurrentConnectionIDs:
{
MicroStack.CpConnectionManager sender = (MicroStack.CpConnectionManager)((object[])arg)[0];
string textStr = (string)((object[])arg)[1];
int conId;
bool newId = true;
conId = GetConnectionID(textStr); /* Get conID from textstring */
foreach (TreeNode treeNode in treeViewRenderer.Nodes)
{
rendererDevice = (ZensysUPnPAvRendererDevice)treeNode.Tag;
if (rendererDevice.ConnectionManager == sender)
{
foreach (TreeNode treeN in treeNode.Nodes)
{
int cId = GetConnectionID(treeN.Text);
if ((cId < 0) || (cId == conId))
{
treeN.Text = textStr;
newId = false;
break;
}
}
if (newId)
{
try
{
TreeNode treeNo = treeNode.Nodes.Add(textStr);
treeNo.Tag = rendererDevice;
}
catch (Exception ex)
{
mainLog.Write(resourceFormManager.GetString("RendereTree") + ex.Message);
}
}
if (conId >= 0)
{
rendererDevice.ConnectionId = (uint)conId;
rendererDevice.AVTransport.GetPositionInfo((uint)conId);
}
break;
}
}
break;
}
case TreeViewCmds.GetPositionInfo:
{
MicroStack.CpAVTransport sender = (MicroStack.CpAVTransport)((object[])arg)[0];
string titlestr = (string)((object[])arg)[1];
string posStr = (string)((object[])arg)[2];
uint InstanceId = (uint)((object[])arg)[3];
int workId = (int)InstanceId;
if (workId > 0)
{
workId--;
}
foreach (TreeNode treeNode in treeViewRenderer.Nodes)
{
ZensysUPnPAvRendererDevice renderer = (ZensysUPnPAvRendererDevice)treeNode.Tag;
if (renderer.AVTransport == sender)
{
labelTitleText.Text = titlestr;
labelTitleText.Tag = treeNode.Tag; /* Current */
int index = (treeNode.Nodes[workId].Text.Length > 14) ? 14 : treeNode.Nodes[workId].Text.Length;
treeNode.Nodes[workId].Text = treeNode.Nodes[workId].Text.Substring(0, index) + " " + posStr + titlestr;
renderer.InstanceId = InstanceId;
renderer.ConnectionId = InstanceId; // ???
renderer.AVTransport.GetTransportInfo(InstanceId);
break;
}
}
mainLog.Write("PositionInfo received [" + InstanceId + "] " + titlestr);
break;
}
case TreeViewCmds.LastChange:
{
MicroStack.CpAVTransport sender = (MicroStack.CpAVTransport)((object[])arg)[0];
string NewValue = (string)((object[])arg)[1];
TreeNode treeNode = treeViewRenderer.SelectedNode;
if ((treeNode != null) && (((ZensysUPnPAvRendererDevice)treeNode.Tag).AVTransport == sender))
{
foreach (TreeNode treeNo in treeViewRenderer.Nodes)
{
if (((ZensysUPnPAvRendererDevice)treeNo.Tag).AVTransport == sender)
{
ZensysUPnPAvRendererDevice rendererDev = (ZensysUPnPAvRendererDevice)treeNo.Tag;
int sidx, eidx;
string textstr = "";
sidx = NewValue.IndexOf("<TransportState val=", 0, NewValue.Length);
if (sidx >= 0)
{
sidx += 20;
eidx = NewValue.IndexOf(">", sidx, NewValue.Length - sidx) - 1;
textstr = NewValue.Substring(sidx, eidx - sidx);
labelStatusText.Text = "";
labelStateText.Text = textstr;
labelTitleText.Text = "";
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?