示例#1
0
        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));
                }
            }
        }
示例#2
0
        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));
                }
            }
        }
示例#3
0
 /// <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);
     }
 }
示例#4
0
        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);
                }
            }
        }
示例#5
0
        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);
            }
        }