using System; using DevExpress.XtraBars; using UAS_DeviceMonitor.DataOperate; using System.Data; using System.Text; using UAS_DeviceMonitor.Entity; using UAS_DeviceMonitor.Device.Command; using UAS_DeviceMonitor.PublicMethod; using DevExpress.XtraEditors; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Views.Grid; using System.Timers; using System.Threading; using System.Threading.Tasks; namespace UAS_DeviceMonitor { public partial class Main : DevExpress.XtraBars.Ribbon.RibbonForm { StringBuilder sql = new StringBuilder(); public Main() { SystemInf.dh = new DataHelper(); InitializeComponent(); dpc_enableCheckEdit.QueryCheckStateByValue += CheckedEdit_QueryCheckStateByValue; CheckEditCommandSet.QueryCheckStateByValue += CheckedEdit_QueryCheckStateByValue; } private void Main_Load(object sender, EventArgs e) { //设备列表 GridDeviceList.GetDataSQL = "select de_id,de_code,de_name,de_spec,de_indate,de_runstatus,de_address,de_wccode,de_vendcode,de_vendname from device".ToUpper(); PageControlDeviceList.Gridcontrol = GridDeviceList; //轮询业务 GridPolling.GetDataSQL = "select pl_id,pl_code,pl_name,pl_type,pl_dccode,pl_remark from polling".ToUpper(); GridPolling.ID = "pl_id"; GridPolling.TableName = "polling"; GridPolling.InsertSQL = "insert into polling(pl_id,pl_code,pl_name,pl_type,pl_dccode,pl_remark) values(polling_seq.nextval,:pl_code,:pl_name,:pl_type,:pl_dccode,:pl_remark)"; ButtonDeletePolling.Grid = GridPolling; ButtonSavePolling.Grid = GridPolling; ButtonAddPolling.Grid = GridPolling; //轮询配置界面 GridPollingSetting.GetDataSQL = "SELECT DPC_ID,DPC_DECODE ,DPC_PLCODE ,DPC_PLNAME ,DPC_INTERVAL ,DPC_DCCODE ,DPC_FUNCTION , DPC_ENABLE,DPC_STATUS ,DPC_REMARK FROM DEVICEPOLLINGCONFIG"; GridPollingSetting.ID = "DPC_ID"; GridPollingSetting.TableName = "DEVICEPOLLINGCONFIG"; GridPollingSetting.InsertSQL = "insert into DEVICEPOLLINGCONFIG(DPC_ID,DPC_DECODE ,DPC_PLCODE ,DPC_PLNAME ,DPC_INTERVAL ,DPC_DCCODE ,DPC_FUNCTION , DPC_ENABLE,DPC_STATUS ,DPC_REMARK) values(DEVICEPOLLINGCONFIG_seq.nextval,:DPC_DECODE ,:DPC_PLCODE ,:DPC_PLNAME ,:DPC_INTERVAL ,:DPC_DCCODE ,:DPC_FUNCTION , :DPC_ENABLE,:DPC_STATUS ,:DPC_REMARK)"; ButtonSaveCommandSet.Grid = GridPollingSetting; ButtonNewCommandSet.Grid = GridPollingSetting; ButtonDeleteCommandSet.Grid = GridPollingSetting; //指令设置界面 GridCommandSetting.GetDataSQL = "select 0 CHOOSE,dc_id,dc_code,dc_name,dc_command from devicecommand".ToUpper(); GridCommandSetting.TableName = "devicecommand"; GridCommandSetting.ID = "dc_id"; GridCommandSetting.InsertSQL = "insert into devicecommand(dc_id,dc_code,dc_name,dc_command) values(devicecommand_seq.nextval,:dc_code,:dc_name,:dc_command)"; ButtonSaveCommand.Grid = GridCommandSetting; ButtonDeleteCommand.Grid = GridCommandSetting; } #region 界面通用事件 /// /// 选项卡切换不同XPage /// /// /// private void ButtonItem_ItemClick(object sender, ItemClickEventArgs e) { HideXPage(e.Item.Tag.ToString()); } /// /// 根据点击按钮的Tag显示对应的XPage /// /// private void HideXPage(string PageName) { for (int i = 0; i < MainTabControl.TabPages.Count; i++) { if (MainTabControl.TabPages[i].Name == PageName) MainTabControl.TabPages[i].PageVisible = true; else MainTabControl.TabPages[i].PageVisible = false; } } /// /// 勾选Grid的CheckBox /// /// /// private void CheckedEdit_QueryCheckStateByValue(object sender, DevExpress.XtraEditors.Controls.QueryCheckStateByValueEventArgs e) { string val = ""; if (e.Value != null) { val = e.Value.ToString(); } else { val = "FALSE";//默认为不选 } switch (val.ToUpper()) { case "TRUE": case "YES": case "1": e.CheckState = System.Windows.Forms.CheckState.Checked; break; case "FALSE": case "NO": case "0": e.CheckState = System.Windows.Forms.CheckState.Unchecked; break; default: e.CheckState = System.Windows.Forms.CheckState.Checked; break; } e.Handled = true; } #endregion #region PageCommandSet业务代码 /// /// 新增指令弹窗 /// /// /// private void ButtonNewCommand_Click(object sender, EventArgs e) { FormNewCommand fncmd = new FormNewCommand(BaseUtil.GetComboxEditValue(Brand), Brand.Text); fncmd.ShowDialog(); GridCommandSetting.RefreshData(); } /// /// 判断指令编号不能重复 /// /// /// private void ButtonSaveCommand_Click(object sender, EventArgs e) { ButtonSaveCommand.DoSave(); } /// /// 加载ComBox品牌数据 /// /// /// private void PageCommandSet_VisibleChanged(object sender, EventArgs e) { if (PageCommandSet.PageVisible) { DataTable dt = (DataTable)SystemInf.dh.ExecuteSql("select * from devicebrand", "select"); BaseUtil.FillComBoxEditWidthDataTable(Brand, "db_name", "db_code", dt); GridCommandSetting.Condition = " where dc_brand='" + BaseUtil.GetComboxEditValue(Brand) + "'"; } } private void Brand_SelectedIndexChanged(object sender, EventArgs e) { GridCommandSetting.Condition = " where dc_brand='" + BaseUtil.GetComboxEditValue(Brand) + "'"; GridCommandSetting.RefreshData(); } #endregion #region PagePollingSetting业务代码 bool PollingSign = false; private void ButtonStartPolling_Click(object sender, EventArgs e) { PollingTask pt = new PollingTask(); GridView grid = GridViewPollSetting; for (int i = 0; i < GridPollingSetting.RowCount; i++) { Polling pl = new Polling(); pl.DeviceCode = GridViewPollSetting.GetRowCellValue(i, "DPC_DECODE").ToString(); pl.Interval = int.Parse(GridViewPollSetting.GetRowCellValue(i, "DPC_INTERVAL").ToString()); pl.Enable = GridViewPollSetting.GetRowCellValue(i, "DPC_ENABLE").ToString() != "0"; if (pl.Enable) pt.AddTask(RunTask, pl); } PollingSign = true; pt.StartAllTask(); } private void RunTask(object i) { while (PollingSign) { Polling pl = (Polling)i; int Interval = pl.Interval; string Decode = pl.DeviceCode; Thread.Sleep(Interval * 1000); SystemInf.dh.ExecuteSql("insert into DEVICEPOLLINGCONFIG(DPC_ID,DPC_DECODE ,DPC_PLCODE ,DPC_PLNAME ,DPC_INTERVAL ,DPC_DCCODE ,DPC_FUNCTION , DPC_ENABLE,DPC_STATUS ,DPC_REMARK) values(DEVICEPOLLINGCONFIG_seq.nextval,'" + Decode + "','','' ,'' ,'' ,'' , '','' ,'')", "insert"); } } private void ButtonPausePolling_Click(object sender, EventArgs e) { PollingSign = false; } /// /// 设置GridView下拉框的值 /// /// /// private void PagePollingSetting_VisibleChanged(object sender, EventArgs e) { if (PagePollingSetting.PageVisible) { DataTable dt = (DataTable)SystemInf.dh.ExecuteSql("select dc_name,dc_code from devicecommand ", "select"); PollingSetItemLookUpEdit.DataSource = dt; PollingSetItemLookUpEdit.DisplayMember = "DC_NAME"; PollingSetItemLookUpEdit.ValueMember = "DC_CODE"; } } #endregion } }