private void comboDrive_SelectedIndexChanged(object sender, EventArgs e) { if (comboDrive.SelectedItem != null) { try { Scada.Model.SCADA_DRIVER driver = comboDrive.SelectedItem as Scada.Model.SCADA_DRIVER; DriverCom = FormManager.CreateCommunicateDriver(driver); if (DriverCom == null) { return; } try { DriverCom.InitKernel(this.Server, this.Comunication, null, driver); } catch (Exception emx) { FormManager.DisplayException(new Exception("通讯驱动初始化InitDriver失败" + emx.Message)); } try { if (DriverCom.CommunicationControl != null) { DriverCom.CommunicationControl.SetUIParameter(Comunication.IO_COMM_PARASTRING); } } catch (Exception emx) { FormManager.DisplayException(new Exception("解析通讯驱动参数失败(SetUIParameter)" + emx.Message)); } this.tabPage2.Controls.Clear(); this.tabPage2.Controls.Add(DriverCom.CommunicationControl); } catch (Exception emx) { FormManager.DisplayException(new Exception("加载通讯驱动失败" + emx.Message)); } } }
private void cb_Driver_SelectedIndexChanged(object sender, EventArgs e) { if (cb_Driver.SelectedItem != null) { try { Scada.Model.SCADA_DEVICE_DRIVER driver = cb_Driver.SelectedItem as Scada.Model.SCADA_DEVICE_DRIVER; DriverKernel = FormManager.CreateDeviceDrive(driver); DriverKernel.IsCreateControl = true; try { DriverKernel.InitKernel(Server, Communication, Device, null, driver); } catch (Exception emx) { FormManager.DisplayException(new Exception("设备驱动初始化InitDriver失败" + emx.Message)); } try { if (DriverKernel.DeviceCtrl != null) { DriverKernel.DeviceCtrl.SetUIParameter(Server, Device); } } catch (Exception emx) { FormManager.DisplayException(new Exception("解析设备驱动参数失败(SetUIParameter)" + emx.Message)); } this.tabPage2.Controls.Clear(); if (DriverKernel.DeviceCtrl != null) { this.tabPage2.Controls.Add(DriverKernel.DeviceCtrl); } } catch (Exception emx) { FormManager.DisplayException(new Exception("加载设备驱动失败" + emx.Message)); } } }
/// <summary> /// 异步初始化ListView控件 /// </summary> /// <param name="device"></param> public void InitListView(IO_SERVER Server, IO_COMMUNICATION Communication, IO_DEVICE Device) { this.ioListView.ListView.Items.Clear(); this.ioListView.Server = Server; this.ioListView.Communication = Communication; this.ioListView.Device = Device; this.ioListView.IOPath = Server.SERVER_NAME + "\\" + Communication.IO_COMM_NAME + "\\" + Device.IO_DEVICE_NAME; try { for (int i = 0; i < Device.IOParas.Count; i++) { IOListViewItem lvi = new IOListViewItem(Device.IOParas[i]); this.ioListView.AddListViewItem(lvi); } } catch (Exception ex) { FormManager.DisplayException(ex); } }
public void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e) { if (Device != null) { try { if (this.IsHandleCreated) { this.listView.BeginInvoke(new EventHandler(delegate { if (copyIds.Count > 0) { if (MessageBox.Show(this.FindForm(), "是否要粘贴复制的IO点?", "粘贴提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { for (int i = copyIds.Count - 1; i >= 0; i--) { IO_PARA newPara = copyIds[i].Copy(); string oldName = newPara.IO_NAME; newPara.IO_DEVICE_ID = Device.IO_DEVICE_ID; newPara.IO_COMM_ID = Device.IO_COMM_ID; newPara.IO_SERVER_ID = Device.IO_SERVER_ID; newPara.IO_ID = Scada.DBUtility.GUIDTo16.GuidToLongID().ToString();//分配新的ID bool existName = false; for (int p = 0; p < Device.IOParas.Count; p++) { if (newPara.IO_NAME.Trim() == Device.IOParas[p].IO_NAME.Trim()) { existName = true; break; } } //出现相同名称的时候要重新命名 if (existName) { newPara.IO_NAME = newPara.IO_NAME + "_C" + DateTime.Now.ToString("yyyyMMddHHmmss"); } //不是同一个设备的时候要考虑驱动参数 this.AddListViewItem(new IOListViewItem(newPara)); FormManager.mediator.IOLogForm.AppendText("从设备" + copyDevice.IO_DEVICE_NAME + "复制IO点" + oldName + " 到设备" + Device.IO_DEVICE_NAME + "成功,新IO名称是" + newPara.IO_NAME); Device.IOParas.Add(newPara); Thread.Sleep(400); } } } if (cutIds.Count > 0) { if (copyDevice == Device) { MessageBox.Show("不能剪贴到同一设备下"); return; } if (MessageBox.Show(this.FindForm(), "是否要粘贴剪贴的IO点?", "粘贴提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { for (int i = cutIds.Count - 1; i >= 0; i--) { IO_PARA newPara = cutIds[i].Copy(); string oldName = newPara.IO_NAME; newPara.IO_DEVICE_ID = Device.IO_DEVICE_ID; newPara.IO_COMM_ID = Device.IO_COMM_ID; newPara.IO_SERVER_ID = Device.IO_SERVER_ID; newPara.IO_ID = Scada.DBUtility.GUIDTo16.GuidToLongID().ToString();//分配新的ID bool existName = false; for (int p = 0; p < Device.IOParas.Count; p++) { if (newPara.IO_NAME.Trim() == Device.IOParas[p].IO_NAME.Trim()) { existName = true; break; } } //出现相同名称的时候要重新命名 if (existName) { newPara.IO_NAME = newPara.IO_NAME + "_C" + DateTime.Now.ToString("yyyyMMddHHmmss"); } //不是同一个设备的时候要考虑驱动参数 if (copyDevice != Device) { newPara.IO_PARASTRING = ""; this.AddListViewItem(new IOListViewItem(newPara)); FormManager.mediator.IOLogForm.AppendText("从设备" + copyDevice.IO_DEVICE_NAME + "剪贴IO点" + oldName + " 到设备" + Device.IO_DEVICE_NAME + "成功,新IO名称是" + newPara.IO_NAME + "。由于设备驱动不同,需要重新配置此IO点驱动信息"); } else { this.AddListViewItem(new IOListViewItem(newPara)); FormManager.mediator.IOLogForm.AppendText("从设备" + copyDevice.IO_DEVICE_NAME + "剪贴IO点" + oldName + " 到设备" + Device.IO_DEVICE_NAME + "成功,新IO名称是" + newPara.IO_NAME); } //增加新的IO点 Device.IOParas.Add(newPara); //删除原来的点表信息 copyDevice.IOParas.Remove(cutIds[i]); if (copyDevice == Device) { this.RemoveListViewItem(cutIds[i]); } Thread.Sleep(400); } copyDevice = null; cutIds.Clear(); copyIds.Clear(); } } })); } } catch (Exception ex) { FormManager.DisplayException(ex); } } }
private void wizardTabControl_ButtonOK(object sender, EventArgs e) { try { if (tb_paraname.Text.Trim() == "") { MessageBox.Show("请输入IO参数名称"); return; } if (cb_paratype.SelectedItem == null) { MessageBox.Show("请选择IO类型"); return; } if (cb_datatype.SelectedItem == null) { MessageBox.Show("请选择IO模拟量数据类型"); return; } //量程转换输入判断 if (this.cb_range.Checked) { if (Convert.ToDouble(this.tb_maxrange.Text) <= Convert.ToDouble(this.tb_minrange.Text)) { MessageBox.Show("量程范围不匹配"); return; } if (Convert.ToDouble(this.tb_valuemax.Text) <= Convert.ToDouble(this.tb_valuemin.Text)) { MessageBox.Show("裸数据范围不匹配"); return; } } if (cb_paratype.SelectedIndex == 5) { cb_datatype.SelectedIndex = 8; } Para.IO_ADDRESS = this.tb_address.Text.Trim(); Para.IO_ALERT_ENABLE = Convert.ToInt32(cb_alarm.Checked); Para.IO_COMM_ID = Comunication.IO_COMM_ID; Para.IO_DATATYPE = cb_datatype.SelectedItem.ToString(); Para.IO_DEVICE_ID = Device.IO_DEVICE_ID; Para.IO_ENABLEALARM = Convert.ToInt32(cb_alarm.Checked); Para.IO_ENABLERANGECONVERSION = Convert.ToInt32(cb_range.Checked); Para.IO_HISTORY = 1; Para.IO_INITALVALUE = tb_initvalue.Text; Para.IO_LABEL = tb_parachname.Text; Para.IO_MAXVALUE = tb_valuemax.Text; Para.IO_MINVALUE = tb_valuemin.Text; Para.IO_NAME = tb_paraname.Text.Trim(); Para.IO_ONE = tb_one.Text.Trim(); Para.IO_OUTLIES = tbDecimalplace.Text.Trim(); if (DeviceKernel != null) { Para.IO_PARASTRING = DeviceKernel.ParaCtrl.GetUIParameter(); } Para.IO_POINTTYPE = cb_paratype.SelectedItem.ToString(); Para.IO_RANGEMAX = tb_maxrange.Text; Para.IO_RANGEMIN = tb_minrange.Text; Para.IO_SERVER_ID = Server.SERVER_ID; Para.IO_SYSTEM = 0; Para.IO_UNIT = cb_unittype.Text.Trim(); Para.IO_ZERO = tb_zone.Text; //公式配置部分 Para.IO_FORMULA = txtFormula.Text.Trim(); //数据源设置部分 #region { Para.IO_DATASOURCE = ""; Para.IO_DATASOURCE = this.txtDataSourceIP.Text; Para.IO_DATASOURCE += "," + this.txtDataSourceName.Text; Para.IO_DATASOURCE += "," + this.cbDatabaseType.Text; Para.IO_DATASOURCE += "," + this.txtDataSourceUser.Text; Para.IO_DATASOURCE += "," + this.txtDataSourcePassword.Text; Para.IO_DATASOURCE += "," + this.txtDataSourceTable.Text; Para.IO_DATASOURCE += "," + this.txtDataSourceValueRecord.Text; Para.IO_DATASOURCE += "," + this.txtDataSourceValueRecordType.Text; Para.IO_DATASOURCE += "," + this.txtDataSourceDateRecord.Text; Para.IO_DATASOURCE += "," + this.txtDataSourceDateRecordRange.Text; Para.IO_DATASOURCE += "," + this.txtDataSourceOrderRecord.Text; Para.IO_DATASOURCE += "," + this.txtDataSourceOrderRecordType.Text; Para.IO_DATASOURCE += "," + this.txtDataSourceWhere.Text; } #endregion //报警部分设置 Para.AlarmConfig.IO_SERVER_ID = Para.IO_SERVER_ID; Para.AlarmConfig.IO_COMM_ID = Para.IO_COMM_ID; Para.AlarmConfig.IO_DEVICE_ID = Para.IO_DEVICE_ID; Para.AlarmConfig.IO_ID = Para.IO_ID; Para.AlarmConfig.IO_ENABLE_MAX = Convert.ToInt32(cb_maxenable.Checked); Para.AlarmConfig.IO_ENABLE_MAXMAX = Convert.ToInt32(cb_maxmaxenable.Checked); Para.AlarmConfig.IO_ENABLE_MIN = Convert.ToInt32(cb_minenable.Checked); Para.AlarmConfig.IO_ENABLE_MINMIN = Convert.ToInt32(cb_minminenable.Checked); if (cbo_minmin.SelectedItem != null) { Para.AlarmConfig.IO_MINMIN_TYPE = cbo_minmin.SelectedItem.ToString(); } if (cbo_min.SelectedItem != null) { Para.AlarmConfig.IO_MIN_TYPE = cbo_min.SelectedItem.ToString(); } if (cbo_max.SelectedItem != null) { Para.AlarmConfig.IO_MAX_TYPE = cbo_max.SelectedItem.ToString(); } if (cbo_maxmax.SelectedItem != null) { Para.AlarmConfig.IO_MAXMAX_TYPE = cbo_maxmax.SelectedItem.ToString(); } Para.AlarmConfig.IO_MINMIN_VALUE = nb_minmin.Value; Para.AlarmConfig.IO_MIN_VALUE = nb_min.Value; Para.AlarmConfig.IO_MAX_VALUE = nb_max.Value; Para.AlarmConfig.IO_MAXMAX_VALUE = nb_maxmax.Value; Para.AlarmConfig.IO_ALARM_LEVEL = ""; if (this.cb_alarm.Checked) { if (nb_maxmax.Value <= Para.AlarmConfig.IO_MIN_VALUE || nb_maxmax.Value <= Para.AlarmConfig.IO_MINMIN_VALUE || nb_maxmax.Value <= Para.AlarmConfig.IO_MAX_VALUE) { MessageBox.Show("超高限值不能小于等于高限、低限、超低限值"); return; } if (nb_max.Value <= Para.AlarmConfig.IO_MINMIN_VALUE || nb_max.Value <= Para.AlarmConfig.IO_MIN_VALUE) { MessageBox.Show("高限值不能小于等于低限、超低限值"); return; } if (nb_min.Value <= Para.AlarmConfig.IO_MINMIN_VALUE) { MessageBox.Show("超高限值不能小于等于高限、低限、超低限值"); return; } } string strs = ""; for (int i = 0; i < listCons.Items.Count; i++) { strs += listCons.Items[i].ToString() + ","; } if (strs != "") { strs = strs.Remove(strs.Length - 1, 1); } Para.AlarmConfig.IO_CONDITION = strs; if (Para.IO_ID == null || Para.IO_ID == "")//新建 { for (int i = 0; i < this.Device.IOParas.Count; i++) { if (this.Device.IOParas[i] != Para && Para.IO_NAME.Trim() == this.Device.IOParas[i].IO_NAME.Trim()) { MessageBox.Show("已经存" + Para.IO_NAME.Trim() + "名称的IO点"); return; } } Para.IO_ID = GUIDTo16.GuidToLongID().ToString(); IOListViewItem lvi = new IOListViewItem(Para); this.Device.IOParas.Add(Para); FormManager.mediator.IOParaForm.AddListViewItem(lvi); FormManager.mediator.IOLogForm.AppendText(FormManager.mediator.IOParaForm.IOListView.IOPath + " 创建IO点" + Para.IO_NAME + "成功!"); } else { for (int i = 0; i < this.Device.IOParas.Count; i++) { if (this.Device.IOParas[i] != Para && Para.IO_NAME.Trim() == this.Device.IOParas[i].IO_NAME.Trim()) { MessageBox.Show("已经存" + Para.IO_NAME.Trim() + "名称的IO点"); return; } } IOListViewItem lvi = FormManager.mediator.IOParaForm.GetListViewItem(Para); if (lvi != null) { lvi.ResetSubItems(); FormManager.mediator.IOLogForm.AppendText(FormManager.mediator.IOParaForm.IOListView.IOPath + " 修改IO点" + Para.IO_NAME + "成功!"); } } this.DialogResult = DialogResult.OK; } catch (Exception emx) { FormManager.DisplayException(emx); } }