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
}
}