duheng
2025-03-27 d2ccacb3317aa6310f1b1bb5eb19fbdecba39ff9
WinFrmUI/IBox.WinFrmUI/IBoxForm.cs
@@ -3,36 +3,26 @@
using InTheHand.Net;
using InTheHand.Net.Bluetooth;
using InTheHand.Net.Sockets;
using System.Data;
using System.IO;
using PBS.Vmo;
using System.Net.Http;
using System.Text;
using Yw.WinFrmUI;
using Yw;
using PBS.Model;
using Yw.WinFrmUI;
namespace IBox.WinFrmUI
{
    public partial class IBoxForm : DocumentPage
    {
        private Facility _facilities;
        private IBoxControllViewModel _ibox;
        private BluetoothRadio radio = null;//蓝牙适配器
        private string sendFileName = null;//发送文件名
        private BluetoothAddress sendAddress = null;//发送目的地址
        //private ObexListener listener = null;//监听器
        private Thread listenThread, sendThread;//发送/接收线程
        private BluetoothClient myClient = null;
        private string startCode = "[&start&]";
        private string endCode = "[&end&]";
        private string paramCode = "[&param&]";
        private string getbaseCode = "getbase";
        private string getrealrecordCode = "getrealrecord";
        private string gethistoryrecordCode = "gethistoryrecord";
        private string getalarmbydayCode = "getalarmbyday";
        private string getbysignalidofdayrangeCode = "getbysignalidofdayrange";
        private string getmonitorCode = "getmonitor";
        private string getsignaltypeCode = "getsignaltype";
        private string getMonitorgroupCode = "getmonitorgroup";
        private BluetoothDeviceInfo curLanYa = null;
        private List<BluetoothDeviceInfo> LstBluetooth = null;
@@ -91,14 +81,14 @@
        private void ConnectedEve()
        {
            barButtonItem2.Enabled = barButtonItem3.Enabled = barButtonItem14.Enabled = barButtonItem11.Enabled = barButtonItem12.Enabled = barButtonItem4.Enabled = barButtonItem5.Enabled = barButtonItem6.Enabled = barButtonItem7.Enabled = barButtonItem8.Enabled = barButtonItem9.Enabled = barButtonItem13.Enabled = true;
            barButtonItem2.Enabled = barButtonItem3.Enabled = barButtonItem14.Enabled = barButtonItem11.Enabled = barButtonItem12.Enabled = barButtonItem4.Enabled = barButtonItem5.Enabled = barButtonItem7.Enabled = barButtonItem8.Enabled = barButtonItem13.Enabled = true;
            barButtonItemConnected.Enabled = false;
            barButtonItemClose.Enabled = true;
        }
        private void ClosedEve()
        {
            barButtonItem2.Enabled = barButtonItem3.Enabled = barButtonItem14.Enabled = barButtonItem11.Enabled = barButtonItem12.Enabled = barButtonItem4.Enabled = barButtonItem5.Enabled = barButtonItem6.Enabled = barButtonItem7.Enabled = barButtonItem8.Enabled = barButtonItem9.Enabled = barButtonItem13.Enabled = false;
            barButtonItem2.Enabled = barButtonItem3.Enabled = barButtonItem14.Enabled = barButtonItem11.Enabled = barButtonItem12.Enabled = barButtonItem4.Enabled = barButtonItem5.Enabled = barButtonItem7.Enabled = barButtonItem8.Enabled = barButtonItem13.Enabled = false;
            barButtonItemConnected.Enabled = true;
            barButtonItemClose.Enabled = false;
        }
@@ -126,6 +116,7 @@
        private void InitControl()
        {
            var _facilities = _ibox.facilities;
            IBoxFormOverview = new IBoxFormOverview();
            IBoxFormOverview.Dock = DockStyle.Fill;
            IBoxFormOverview.SendData += SendText;
@@ -136,7 +127,7 @@
            IBoxFormMonitor.SendData += SendText;
            xtraTabPage1.Controls.Add(IBoxFormMonitor);
            //IBoxFormControll = new IBoxFormControll(_facilities);
            //IBoxFormControll = new IBoxFormControll(_ibox);
            //IBoxFormControll.Dock = DockStyle.Fill;
            //IBoxFormControll.SendData += SendText;
            //xtraTabPage7.Controls.Add(IBoxFormControll);
@@ -180,7 +171,6 @@
            //IBoxFormScheme.Dock = DockStyle.Fill;
            //IBoxFormScheme.SendData += SendText;
            //xtraTabPage6.Controls.Add(IBoxFormScheme);
        }
        private void barButtonItem6_ItemClick(object sender, ItemClickEventArgs e)
@@ -196,135 +186,111 @@
            IBoxFormOverview.SendData += SendText;
            xtraTabPage2.Controls.Add(IBoxFormOverview);
            xtraTabPage2.PageVisible = true;
            xtraTabControl1.SelectedTabPage = xtraTabPage2;
        }
        private void HideAll()
        {
            xtraTabControl1.TabPages.ForEach(b =>
            {
                if (b.Controls.Count > 0)
                if (b.Name != "xtraTabPage12")
                {
                    b.Controls.RemoveAt(0);
                    if (b.Controls.Count > 0)
                    {
                        b.Controls.RemoveAt(0);
                    }
                    b.PageVisible = false;
                }
                b.PageVisible = false;
            });
        }
        private void barButtonItem2_ItemClick(object sender, ItemClickEventArgs e)
        {
            //IBoxFormOverview = null;
            //IBoxFormMonitor = new IBoxFormMonitor();
            //IBoxFormMonitor.Dock = DockStyle.Fill;
            //IBoxFormMonitor.SendData += SendText;
            //AddControl(IBoxFormMonitor);
            HideAll();
            IBoxFormMonitor = new IBoxFormMonitor();
            IBoxFormMonitor.Dock = DockStyle.Fill;
            IBoxFormMonitor.SendData += SendText;
            xtraTabPage1.Controls.Add(IBoxFormMonitor);
            xtraTabPage1.PageVisible = true;
            xtraTabControl1.SelectedTabPage = xtraTabPage1;
        }
        private void barButtonItem5_ItemClick(object sender, ItemClickEventArgs e)
        {
            //IBoxFormControll = new IBoxFormControll(_facilities);
            //IBoxFormControll.Dock = DockStyle.Fill;
            //IBoxFormControll.SendData += SendText;
            //AddControl(IBoxFormControll);
            HideAll();
            //IBoxFormControll = new IBoxFormControll(_facilities);
            //IBoxFormControll = new IBoxFormControll(_ibox);
            //IBoxFormControll.Dock = DockStyle.Fill;
            //IBoxFormControll.SendData += SendText;
            //xtraTabPage7.Controls.Add(IBoxFormControll);
            xtraTabPage7.PageVisible = true;
            xtraTabControl1.SelectedTabPage = xtraTabPage7;
        }
        private void barButtonItem3_ItemClick_1(object sender, ItemClickEventArgs e)
        {
            //IBoxFormParams = new IBoxFormParams();
            //IBoxFormParams.Dock = DockStyle.Fill;
            //IBoxFormParams.SendData += SendText;
            //AddControl(IBoxFormParams);
            HideAll();
            IBoxFormParams = new IBoxFormParams();
            IBoxFormParams.Dock = DockStyle.Fill;
            IBoxFormParams.SendData += SendText;
            xtraTabPage5.Controls.Add(IBoxFormParams);
            xtraTabPage5.PageVisible = true;
            xtraTabControl1.SelectedTabPage = xtraTabPage5;
        }
        private void barButtonItem4_ItemClick(object sender, ItemClickEventArgs e)
        {
            //IBoxFormLog = new IBoxFormLog();
            //IBoxFormLog.Dock = DockStyle.Fill;
            //IBoxFormLog.SendData += SendText;
            //AddControl(IBoxFormLog);
            HideAll();
            IBoxFormLog = new IBoxFormLog();
            IBoxFormLog.Dock = DockStyle.Fill;
            IBoxFormLog.SendData += SendText;
            xtraTabPage8.Controls.Add(IBoxFormLog);
            xtraTabPage8.PageVisible = true;
            xtraTabControl1.SelectedTabPage = xtraTabPage8;
        }
        private void barButtonItem7_ItemClick(object sender, ItemClickEventArgs e)
        {
            //IBoxFormProtocol = new IBoxFormProtocol();
            //IBoxFormProtocol.Dock = DockStyle.Fill;
            //IBoxFormProtocol.SendData += SendText;
            //AddControl(IBoxFormProtocol);
            HideAll();
            IBoxFormProtocol = new IBoxFormProtocol();
            IBoxFormProtocol.Dock = DockStyle.Fill;
            IBoxFormProtocol.SendData += SendText;
            xtraTabPage3.Controls.Add(IBoxFormProtocol);
            xtraTabPage3.PageVisible = true;
            xtraTabControl1.SelectedTabPage = xtraTabPage3;
        }
        private void barButtonItem8_ItemClick(object sender, ItemClickEventArgs e)
        {
            //IBoxFormRule = new IBoxFormRule();
            //IBoxFormRule.Dock = DockStyle.Fill;
            //IBoxFormRule.SendData += SendText;
            //AddControl(IBoxFormRule);
            HideAll();
            IBoxFormRule = new IBoxFormRule(_facilities);
            IBoxFormRule = new IBoxFormRule(_ibox?.facilities);
            IBoxFormRule.Dock = DockStyle.Fill;
            IBoxFormRule.SendData += SendText;
            xtraTabPage4.Controls.Add(IBoxFormRule);
            xtraTabPage4.PageVisible = true;
            xtraTabControl1.SelectedTabPage = xtraTabPage4;
        }
        IBoxFormOverview IBoxFormOverview;
        IBoxFormMonitor IBoxFormMonitor;
        private IBoxFormOverview IBoxFormOverview;
        private IBoxFormMonitor IBoxFormMonitor;
        //IBoxFormControll IBoxFormControll;
        IBoxFormParams IBoxFormParams;
        IBoxFormLog IBoxFormLog;
        IBoxFormProtocol IBoxFormProtocol;
        IBoxFormRule IBoxFormRule;
        private IBoxFormParams IBoxFormParams;
        private IBoxFormLog IBoxFormLog;
        private IBoxFormProtocol IBoxFormProtocol;
        private IBoxFormRule IBoxFormRule;
        //IBoxFormScheme IBoxFormScheme;
        IBoxFormSystemInfo IBoxFormSystemInfo;
        IBoxFormDataFilter IBoxFormDataFilter;
        IBoxFormEnergyAnalysis IBoxFormEnergyAnalysis;
        private IBoxFormSystemInfo IBoxFormSystemInfo;
        private IBoxFormDataFilter IBoxFormDataFilter;
        private IBoxFormEnergyAnalysis IBoxFormEnergyAnalysis;
        private void IBoxForm_Load(object sender, EventArgs e)
        {
            BluetoothHelper.GetInstance().SMR += new BluetoothHelper.ShowMessReturn(GetReceive);
            barEditItem2.EditValue = "2";
            //InitControl();
        }
@@ -336,9 +302,9 @@
                WaitFormHelper.HideWaitForm();
                MessageBoxHelper.ShowError("蓝牙设备连接失败,请重试!"); return;
            }
            if (!string.IsNullOrEmpty(msg) && msg.Contains(startCode))
            if (!string.IsNullOrEmpty(msg) && msg.Contains(IBoxHelper.startCode))
            {
                var order = msg.Replace(endCode, "").Replace(startCode, "").Trim();
                var order = msg.Replace(IBoxHelper.endCode, "").Replace(IBoxHelper.startCode, "").Trim();
                SetOrder(order);
            }
            else
@@ -347,10 +313,12 @@
                //MessageBoxHelper.ShowError("蓝牙设备连接失败");
            }
        }
        private List<StationMonitorListGroupMobileDto> stationMonitors;
        private void SetOrder(string order)
        {
            var smsg = order.Split(new string[] { paramCode }, StringSplitOptions.RemoveEmptyEntries);
            var smsg = order.Split(new string[] { IBoxHelper.paramCode }, StringSplitOptions.RemoveEmptyEntries);
            if (smsg.Length < 2)
            {
                return;
@@ -358,25 +326,25 @@
            switch (smsg[0].Trim())
            {
                case "getlog":
                case IBoxHelper.getlogCode:
                    var getloglist = JsonHelper.Json2Object<List<IBoxLogViewModel>>(smsg[1].Trim());
                    IBoxFormLog.BindData(getloglist, ConnectType == 1 ? true : false);
                    break;
                case "getbase":
                case IBoxHelper.getbaseCode:
                    var getbaselist = JsonHelper.Json2Object<List<StationMonitorListGroupMobileDto>>(smsg[1].Trim());
                    if (IBoxFormOverview != null)
                    {
                        IBoxFormOverview.BindGrid(getbaselist, ConnectType == 1 ? true : false);
                        IBoxFormOverview.TestData(ConnectType == 1 ? true : false);
                    }
                    stationMonitors = getbaselist;
                    //else
                    if (IBoxFormMonitor != null)
                        IBoxFormMonitor.BindGrid(getbaselist, ConnectType == 1 ? true : false);
                        IBoxFormMonitor.BindGrid(getbaselist, ConnectType == 1 ? true : false);
                    WaitFormHelper.HideWaitForm();
                    break;
                case "gethistoryrecord":
                case IBoxHelper.gethistoryrecordCode:
                    var b = smsg[1].Trim();
                    var gethistoryrecordlist = new List<MonitorRecord>();
@@ -392,69 +360,65 @@
                    IBoxFormMonitor.SetChartData(gethistoryrecordlist, ConnectType == 1 ? true : false);
                    break;
                case "getalarmbyday":
                case IBoxHelper.getalarmbydayCode:
                    var l = smsg[1].Trim();
                    IBoxFormMonitor.SetAlarmByDay(l, ConnectType == 1 ? true : false);
                    break;
                case "getbysignalidofdayrange":
                case IBoxHelper.getbysignalidofdayrangeCode:
                    var getbysignalidofdayrangelist = JsonHelper.Json2Object<List<MonitorValueAlarmRecord>>(smsg[1].Trim());
                    break;
                case "getrealrecord":
                case IBoxHelper.getrealrecordCode:
                    var getrealrecordlist = JsonHelper.Json2Object<List<MonitorRealRecord>>(smsg[1].Trim());
                    if (IBoxFormMonitor != null)
                        IBoxFormMonitor.SetRealRecord(getrealrecordlist, ConnectType == 1 ? true : false);
                    break;
                case "getparams":
                case IBoxHelper.getparamsCode:
                    var model = JsonHelper.Json2Object<IBoxConfigViewModel>(smsg[1].Trim());
                    IBoxFormParams.BindData(model, ConnectType == 1 ? true : false);
                    break;
                case "getprotocol":
                case IBoxHelper.getprotocolCode:
                    {
                        var pmodel = JsonHelper.Json2Object<IBoxProtocolViewModel>(smsg[1].Trim());
                        IBoxFormProtocol.BindData(pmodel, ConnectType == 1 ? true : false);
                        break;
                    }
                case "getrules":
                case IBoxHelper.getrulesCode:
                    {
                        var rgetbaselist = JsonHelper.Json2Object<List<StationMonitorListGroupMobileDto>>(smsg[1].Trim());
                        IBoxFormRule.BindGrid(rgetbaselist, ConnectType == 1 ? true : false);
                        SendText(null, startCode + getsignaltypeCode + paramCode + endCode);
                        SendText(null, IBoxHelper.startCode + IBoxHelper.getsignaltypeCode + IBoxHelper.paramCode + IBoxHelper.endCode);
                        break;
                    }
                case "getcalvalue":
                    {
                        var getcalvaluelist = JsonHelper.Json2Object<List<CalcValue>>(smsg[1].Trim());
                        //IBoxFormScheme.BindData(getcalvaluelist, stationMonitors, ConnectType == 1 ? true : false);
                        break;
                    }
                case "getstore":
                case IBoxHelper.getstoreCode:
                    {
                        var pmodel = JsonHelper.Json2Object<SystemInfoViewModel>(smsg[1].Trim());
                        IBoxFormSystemInfo.BindData(pmodel, ConnectType == 1 ? true : false);
                        break;
                    }
                case "getfilter":
                case IBoxHelper.getfilterCode:
                    {
                        var pmodel = JsonHelper.Json2Object<IBoxFilterViewModel>(smsg[1].Trim());
                        IBoxFormDataFilter.BindData(pmodel, ConnectType == 1 ? true : false);
                        break;
                    }
                case "getsignaltype":
                case IBoxHelper.getsignaltypeCode:
                    {
                        var list = JsonHelper.Json2Object<List<IBox.WinFrmUI.GeneralViewModel>>(smsg[1].Trim());
                        IBoxFormRule.SetSignalType(list);
                        SendText(null, startCode + getMonitorgroupCode + paramCode + endCode);
                        SendText(null, IBoxHelper.startCode + IBoxHelper.getMonitorgroupCode + IBoxHelper.paramCode + IBoxHelper.endCode);
                        break;
                    }
                case "getmonitorgroup":
                case IBoxHelper.getMonitorgroupCode:
                    {
                        var list = JsonHelper.Json2Object<List<IBox.WinFrmUI.MonitorPointGroup>>(smsg[1].Trim());
                        IBoxFormRule.SetMonitorPoint(list);
                        break;
                    }
                case "getenergyanaly":
                case IBoxHelper.getenergyanalyCode:
                    {
                        var list = JsonHelper.Json2Object<List<PumpEnergyViewModel>>(smsg[1].Trim());
                        IBoxFormEnergyAnalysis.BindData(list);
@@ -462,53 +426,14 @@
                    }
            }
        }
        public Build _SelectedBuild;
        private List<CalcResultViewModel> _res;
        private string filePath = "Data\\AnalyData_{0}.json";
        //private void ShowChart()
        //{
        //    var file = string.Format(filePath, _facilities.ID.ToString());
        //    var path = Path.Combine(Directory.GetCurrentDirectory(), file);
        //    if (!File.Exists(path))
        //    {
        //        MessageBoxHelper.ShowInfo("请先进行系统曲线操作!");
        //        return;
        //    }
        //    else
        //    {
        //        SetResult(path);
        //    }
        //}
        //private void SetResult(string path)
        //{
        //    var content = new Eventech.Common.FileHelper().ReadFile(path);
        //    var result = JsonHelper.Json2Object<List<CalcResultViewModel>>(content);
        //    AddPoints(result);
        //}
        //public void AddPoints(List<CalcResultViewModel> res)
        //{
        //    _res = res;
        //    List<PointF> nums = res.Select(o => new PointF((float)o.Demand, (float)o.ObjFunctionValue)).ToList();
        //    var chartDatas = nums.Select(p => new PointF(p.X, p.Y + _SelectedBuild.用户压力需求)).ToList();
        //    if (chartDatas == null || chartDatas.Count == 0) return;
        //    // 计算多项式在点 x 处的取值
        //    // 计算拟合曲线上的点
        //    var curve = new CurveFitHelper(chartDatas, 2);
        //    //List<PointF> fitPoints = curve.GetFitCurve(100);
        //    List<List<PointF>> confidencePoints = curve.GetConfidenceCurve(100);
        //    //_SelectedPump.流量压降平均.Data = fitPoints;
        //    //_SelectedBuild.流量压降曲线.Data = chartDatas;
        //    _SelectedBuild.Datasets.Clear();
        //    _SelectedBuild.流量压降曲线.Data = chartDatas;
        //    _SelectedBuild.流量压降下限.Data = confidencePoints[0];
        //    _SelectedBuild.流量压降上限.Data = confidencePoints[1];
        //}
        private void barButtonItem9_ItemClick(object sender, ItemClickEventArgs e)
        {
            HideAll();
            var _facilities = _ibox.facilities;
            _SelectedBuild = new Build()
            {
                factoryName = _facilities.Name,
@@ -529,10 +454,10 @@
            //IBoxFormScheme.SendData += SendText;
            //xtraTabPage6.Controls.Add(IBoxFormScheme);
            //xtraTabPage6.PageVisible = true;
        }
        private int ConnectType = 1;//1:蓝牙连接,2:网络连接
        private string HttpGet(string content)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
@@ -561,6 +486,7 @@
                case 1:
                    BluetoothHelper.GetInstance().SendData(content);
                    break;
                case 2:
                    var result = "";
                    if (!splitCode.Any(s => content.Contains(s)))
@@ -575,7 +501,9 @@
                    break;
            }
        }
        private string IP;
        private void barButtonItem10_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (barEditItem2.EditValue.ToString() == "2")
@@ -585,7 +513,7 @@
                var result = Yw.Untity.HttpRequestHelper.Get(param);
                if (result == "true")
                {
                    SendText(null, startCode + getbaseCode + paramCode + endCode);
                    SendText(null, IBoxHelper.startCode + IBoxHelper.getbaseCode + IBoxHelper.paramCode + IBoxHelper.endCode);
                    ConnectedEve();
                    MessageBoxHelper.ShowSuccess("连接成功!");
@@ -607,6 +535,7 @@
                    barButtonItem10.Visibility = barEditItem3.Visibility = BarItemVisibility.Never;
                    barBtnBlue.Visibility = barButtonItemNoConnect.Visibility = barButtonItemConnected.Visibility = barButtonItemClose.Visibility = BarItemVisibility.Always;
                    break;
                case "2":
                    ConnectType = 2;
                    barButtonItem10.Visibility = barEditItem3.Visibility = BarItemVisibility.Always;
@@ -662,6 +591,7 @@
            IBoxFormSystemInfo.SendData += SendText;
            xtraTabPage9.Controls.Add(IBoxFormSystemInfo);
            xtraTabPage9.PageVisible = true;
            xtraTabControl1.SelectedTabPage = xtraTabPage9;
        }
        private void barButtonItem13_ItemClick(object sender, ItemClickEventArgs e)
@@ -672,6 +602,7 @@
            IBoxFormDataFilter.SendData += SendText;
            xtraTabPage10.Controls.Add(IBoxFormDataFilter);
            xtraTabPage10.PageVisible = true;
            xtraTabControl1.SelectedTabPage = xtraTabPage10;
        }
        private void barButtonItem14_ItemClick(object sender, ItemClickEventArgs e)
@@ -683,28 +614,39 @@
            IBoxFormEnergyAnalysis.SendData += SendText;
            xtraTabPage11.Controls.Add(IBoxFormEnergyAnalysis);
            xtraTabPage11.PageVisible = true;
            xtraTabControl1.SelectedTabPage = xtraTabPage11;
        }
        public IBoxForm(Facility facilities = null)
        public IBoxForm(IBoxControllViewModel ibox = null)
        {
            InitializeComponent();
            this.PageTitle.Caption = "智能盒子";
            if (facilities != null)
            if (ibox != null)
            {
                _facilities = facilities;
                ibox = ibox;
            }
            else
            {
                barButtonItem5.Visibility = BarItemVisibility.Never;
            }
            radio = BluetoothRadio.Default;//获取当前PC的蓝牙适配器
            CheckForIllegalCrossThreadCalls = false;//不检查跨线程调用
            //this.gridView1.SetNormalView();
            if (radio == null)//检查该电脑蓝牙是否可用
            try
            {
                MessageBoxHelper.ShowInfo("这个电脑蓝牙不可用!");
                radio = BluetoothRadio.Default;//获取当前PC的蓝牙适配器
                CheckForIllegalCrossThreadCalls = false;//不检查跨线程调用
                /*    if (radio == null)//检查该电脑蓝牙是否可用
                   {
                       MessageBoxHelper.ShowInfo("这个电脑蓝牙不可用!");
                   }*/
            }
            catch
            {
                //MessageBoxHelper.ShowInfo("这个电脑蓝牙不可用!");
            }
        }
        private void imageSlider1_Click(object sender, EventArgs e)
        {
        }
    }
}