zwaveupnpbridgeform.cs
来自「zwave 无线通讯协议 PC controller 控制器源码」· CS 代码 · 共 1,362 行 · 第 1/5 页
CS
1,362 行
}
else
{
if ((TreeNode)labelStatusText.Tag != treeNode)
{
labelStateText.Text = "";
labelStatusText.Text = "";
labelTitleText.Text = "";
}
}
int conId = 0;
if (textstr.Length > 0)
{
conId = GetConnectionID(textstr); /* Get conID from textstring */
if (conId < 0)
{
conId = 0;
}
}
rendererDev.ConnectionId = (uint)conId;
sender.GetPositionInfo((System.UInt32)conId);
labelStatusText.Tag = treeNode;
break;
}
}
}
else
{
labelStateText.Text = "";
labelStatusText.Text = "";
labelTitleText.Text = "";
}
mainLog.Write("NewValue received");
break;
}
default:
break;
}
}
private void ZensysZWaveAddDevice(byte nodeId, byte nodeType, ZensysBridgedDevice.ZWaveDeviceTypes ZWaveDeviceType, ZensysBridgedDevice device, bool virtualNode)
{
string[] itemString = new string[5];
itemString[0] = nodeId.ToString("000");
switch (ZWaveDeviceType)
{
case ZensysBridgedDevice.ZWaveDeviceTypes.SWITCH_BINARY:
{
itemString[1] = resourceFormManager.GetString("BinaryPowerSwitch");
break;
}
case ZensysBridgedDevice.ZWaveDeviceTypes.SWITCH_MULTILEVEL:
{
itemString[1] = resourceFormManager.GetString("MultiLevelPowerSwitch");
break;
}
default:
itemString[1] = "Unknown";
try
{
itemString[1] = ZWaveDeviceType.ToString("g") + " (" + nodeType.ToString("x") + ")";
}
catch (Exception e)
{
mainLog.Write("ZensysZWaveAddDevice: Exception - default " + e.Message + ZWaveDeviceType.ToString("g"));
}
break;
}
itemString[2] = "";
if (device != null)
{
switch (device.BridgeType)
{
case ZensysBridgedDevice.ZWaveBridgeTypes.UPnP:
{
itemString[3] = (device.State == ZensysBridgedDevice.ZWaveBridgeDeviceState.Started) ? "UPnP" : "idle down";
break;
}
case ZensysBridgedDevice.ZWaveBridgeTypes.UPnP2ZWave:
{
itemString[3] = (device.State == ZensysBridgedDevice.ZWaveBridgeDeviceState.Started) ? "UPnP2ZWave" : "idle up";
break;
}
default:
itemString[3] = "Unknown";
break;
}
}
else
{
itemString[3] = "None";
}
Node nid = applicationLayer.GetNode(nodeId);
itemString[4] = nid.IsVirtual ? "y" : "n";
ListViewItem item = new ListViewItem(itemString);
item.Tag = (object)device;
foreach (ListViewItem itm in listViewZWaveNodes.Items)
{
byte node = Convert.ToByte(itm.SubItems[0].Text);
if (node == nodeId)
{
listViewZWaveNodes.Items.Remove(itm);
}
}
listViewZWaveNodes.Items.Add(item);
}
/// <summary>
/// Load device configuration
/// </summary>
private void ZWaveLoadFromFile()
{
FileStream fs = null;
try
{
fs = new FileStream("ZWave Bridge Configuration.xml", FileMode.Open);
if (fs != null)
{
ArrayList devices = null;
BinaryFormatter serializer = new BinaryFormatter();
devices = (ArrayList)serializer.Deserialize(fs);
fs.Close();
foreach (ZensysDeviceStorage devstore in devices)
{
switch (devstore.bridgeType)
{
case ZensysBridgedDevice.ZWaveBridgeTypes.UPnP:
{
device = ((ZWaveNode)ZWaveNodes[devstore.nodeId]).DevUPnP;
if (device != null)
{
if (devstore.deviceZWaveType == device.DeviceZWaveType)
{
device.Device.FriendlyName = devstore.friendlyName;
device.State = devstore.state;
}
}
break;
}
case ZensysBridgedDevice.ZWaveBridgeTypes.UPnP2ZWave:
break;
default:
mainLog.Write("Unknown ZWave Bridge Generic Type " + devstore.bridgeType.ToString());
break;
}
}
}
}
catch (Exception)
{
// throw new Exception("Could not make Configuration xml");
}
}
/// <summary>
/// Save current device configuration
/// </summary>
private void ZWaveSaveToFile()
{
ArrayList devices = new ArrayList();
ZensysDeviceStorage devstore = new ZensysDeviceStorage();
foreach (ZensysUPnPDevice dev in UPnPdownDeviceList)
{
devstore.friendlyName = dev.Device.FriendlyName;
devstore.deviceZWaveType = dev.DeviceZWaveType;
devstore.nodeId = dev.NodeId;
devstore.bridgeType = dev.BridgeType;
devstore.state = dev.State;
devices.Add(devstore);
}
FileStream fs = new FileStream("ZWave Bridge Configuration.xml", FileMode.Create);
BinaryFormatter serializer = new BinaryFormatter();
serializer.Serialize(fs, devices);
fs.Close();
}
/// <summary>
/// Z-Wave Bridge initialize method
/// </summary>
public void InitBridge()
{
StartUpTime = DateTime.Now;
timerAppUpTime_Tick(this, new System.EventArgs());
statusBarMain.Panels[0].Text = " ZWaveBridge ver. " + Application.ProductVersion;
statusBarMain.Panels[1].Text = " Log lines : 0";
statusBarMain.Panels[2].Text = " Bridged Devices : 0";
applicationLayer = new ApplicationLayer();
mainLog = new ZWaveLogging();
mainLog.LogEvent += new ZWaveLogging.LogEventHandler(mainLog_logChanged);
// Initialize UPnP AVRenderer Control Point
AVdevice = new ZensysUPnPAvRendererCPDevice(mainLog);
AVdevice.AvRendererCP_Eventsubscriber += new Zensys.ZensysUPnPAvRendererCPDevice.AvRendererCP_EventSubscriberHandler(AVdevice_eventHandler);
// Initialize UPnP BinaryLight Control Point
lightDevice = new ZensysUPnPLightCPDevice(mainLog); /* Not Learned YET */
lightDevice.UPnPLightCP_subscriberEvent += new Zensys.ZensysUPnPLightCPDevice.UPnPLightCP_SubscriberHandler(lightDevice_UPnPLightCP_subscriberEvent);
// Initialize UPnP Device Scanner Control Point
DevScanner = new ZensysUPnPDeviceScanner(mainLog);
DevScanner.subscriberEvent += new Zensys.ZensysUPnPDeviceScanner.SubscriberHandler(DevScanner_subscriberEvent);
// Initialize Renderer Tree View update event
updateTreeViewUPnPRenderer = new updateTreeViewRendererDelegate(updateUPnPRendererTree);
// Initialize Device Scanner Tree View update event
updateTreeViewScanner = new updateTreeViewScannerDelegate(updateScannerTree);
checkBoxAutoScroll.Checked = autoScroll;
// Set Z-Wave Application command handler for the Controller indentity
// ONE BIG ONE - 1 Application Command Handler to all command classes
applicationLayer.ApplicationCommandEvent += new EventHandler<ApplicationCommandEventArgs>(ApplicationCommandEvent);
applicationLayer.ApplicationSlaveCommandEvent += new EventHandler<ApplicationSlaveCommandEventArgs>(ApplicationSlaveCommandEvent);
applicationLayer.UnknownCommandEvent += new EventHandler<UnknownCommandEventArgs>(UnknownCommandEvent);
applicationLayer.AddNodeEvent += new EventHandler<AddNodeEventArgs>(AddNodeEvent);
applicationLayer.RemoveNodeEvent += new EventHandler<RemoveNodeEventArgs>(RemoveNodeEvent);
applicationLayer.UpdateEvent += new EventHandler<UpdateEventArgs>(UpdateEvent);
applicationLayer.SlaveEvent += new EventHandler<SlaveEventArgs>(SlaveEvent);
InitializeSerial();
// Load saved configuration
ZWaveLoadFromFile();
// Start UPnPDevices which according to saved configuration should be running/bridging
foreach (ZensysUPnPDevice zenDev in UPnPdownDeviceList)
{
if (zenDev.State == ZensysBridgedDevice.ZWaveBridgeDeviceState.Started)
{
ZWaveUPnPDeviceStart(zenDev);
}
}
}
/// <summary>
/// Z-Wave Bridge Form Load Method
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ZWaveBridgeForm_Load(object sender, System.EventArgs e)
{
InitBridge();
EnableButtons(true, false);
}
/// <summary>
/// Z-Wave Bridge Form
/// </summary>
public ZWaveBridgeForm(string[] args)
{
requestedPort = args;
//
// Required for Windows Form Designer support
//
InitializeComponent();
this.formThread = System.Threading.Thread.CurrentThread;
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose(bool disposing)
{
try
{
if (disposing)
{
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?