using DevExpress.Utils.Extensions; using DevExpress.XtraBars; using InTheHand.Net; using InTheHand.Net.Bluetooth; using InTheHand.Net.Sockets; using PBS.Vmo; using System.Net.Http; using System.Text; using Yw; using Yw.WinFrmUI; namespace IBox.WinFrmUI { public partial class IBoxForm : DocumentPage { 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 BluetoothDeviceInfo curLanYa = null; private List LstBluetooth = null; //Stopwatch sw = new Stopwatch(); //string swstr=string.Empty; private List monitorValueAlarmRecords = null; private List dataGridMonitorViewModels = null; private List pumpRunStatusModels = null; private List pumpEnergyViewModels = null; /// /// 搜索 /// /// /// private void barButtonItem1_ItemClick_1(object sender, ItemClickEventArgs e) { //this.repCmbBlue.Items.Add(); //this.barBtnBlue.EditValue; WaitFormHelper.ShowWaitForm(this); repCmbBlue.Items.Clear(); LstBluetooth = BluetoothHelper.GetInstance().SearchBluetooth(); if (null == LstBluetooth || LstBluetooth.Count < 1) return; foreach (var itm in LstBluetooth) repCmbBlue.Items.Add(itm.DeviceName); var f = LstBluetooth.FirstOrDefault(b => b.DeviceName.Contains("ebox")); if (f != null) { this.barBtnBlue.EditValue = f.DeviceName; barButtonItem3.Enabled = true; } WaitFormHelper.HideWaitForm(this); } /// /// 连接 /// /// /// private void barButtonItem3_ItemClick(object sender, ItemClickEventArgs e) { WaitFormHelper.ShowWaitForm(); var f = LstBluetooth.First(b => b.DeviceName.Contains(this.barBtnBlue.EditValue.ToString())); if (f != null) { BluetoothHelper.GetInstance().SetBluetoothByName(f.DeviceName); BluetoothHelper.GetInstance().ListenerData(); ConnectedEve(); Thread.Sleep(500); WaitFormHelper.HideWaitForm(this); } } private void ConnectedEve() { 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 = barButtonItem7.Enabled = barButtonItem8.Enabled = barButtonItem13.Enabled = false; barButtonItemConnected.Enabled = true; barButtonItemClose.Enabled = false; } /// /// 断开 /// /// /// private void barButtonItemClose_ItemClick(object sender, ItemClickEventArgs e) { BluetoothHelper.GetInstance().Close(); ClosedEve(); } private void AddControl(DocumentPage page) { //if (dockPanel1.Controls.Count > 0) //{ // dockPanel1.Controls.RemoveAt(0); //} //dockPanel1.Controls.Add(page); //WaitFormHelper.HideWaitForm(); } private void InitControl() { var _facilities = _ibox.facilities; IBoxFormOverview = new IBoxFormOverview(); IBoxFormOverview.Dock = DockStyle.Fill; IBoxFormOverview.SendData += SendText; xtraTabPage2.Controls.Add(IBoxFormOverview); IBoxFormMonitor = new IBoxFormMonitor(); IBoxFormMonitor.Dock = DockStyle.Fill; IBoxFormMonitor.SendData += SendText; xtraTabPage1.Controls.Add(IBoxFormMonitor); //IBoxFormControll = new IBoxFormControll(_ibox); //IBoxFormControll.Dock = DockStyle.Fill; //IBoxFormControll.SendData += SendText; //xtraTabPage7.Controls.Add(IBoxFormControll); IBoxFormParams = new IBoxFormParams(); IBoxFormParams.Dock = DockStyle.Fill; IBoxFormParams.SendData += SendText; xtraTabPage5.Controls.Add(IBoxFormParams); IBoxFormLog = new IBoxFormLog(); IBoxFormLog.Dock = DockStyle.Fill; IBoxFormLog.SendData += SendText; xtraTabPage8.Controls.Add(IBoxFormLog); IBoxFormProtocol = new IBoxFormProtocol(); IBoxFormProtocol.Dock = DockStyle.Fill; IBoxFormProtocol.SendData += SendText; xtraTabPage3.Controls.Add(IBoxFormProtocol); IBoxFormRule = new IBoxFormRule(_facilities); IBoxFormRule.Dock = DockStyle.Fill; IBoxFormRule.SendData += SendText; xtraTabPage4.Controls.Add(IBoxFormRule); _SelectedBuild = new Build() { factoryName = _facilities.Name, 系统最大流量 = _facilities.MaxWaterDemand.Value, Type = 二供分区Type.加压供水, ID = _facilities.ID.ToString(), 用户压力需求 = int.Parse(_facilities.TerminalPressure.ToString()), 层数 = double.Parse(_facilities.Floor.ToString()), 层高 = double.Parse(_facilities.FloorHeight.ToString()), 每层户数 = double.Parse(_facilities.Households.ToString()) }; //ShowChart(); var simuCalcViewModel = new SimuViewModel(); simuCalcViewModel.CurrentBuild = _SelectedBuild; simuCalcViewModel.Facilities = _facilities; //IBoxFormScheme = new IBoxFormScheme(simuCalcViewModel); //IBoxFormScheme.Dock = DockStyle.Fill; //IBoxFormScheme.SendData += SendText; //xtraTabPage6.Controls.Add(IBoxFormScheme); } private void barButtonItem6_ItemClick(object sender, ItemClickEventArgs e) { //IBoxFormMonitor = null; //IBoxFormOverview = new IBoxFormOverview(); //IBoxFormOverview.Dock = DockStyle.Fill; //IBoxFormOverview.SendData += SendText; //AddControl(IBoxFormOverview); HideAll(); IBoxFormOverview = new IBoxFormOverview(); IBoxFormOverview.Dock = DockStyle.Fill; IBoxFormOverview.SendData += SendText; xtraTabPage2.Controls.Add(IBoxFormOverview); xtraTabPage2.PageVisible = true; xtraTabControl1.SelectedTabPage = xtraTabPage2; } private void HideAll() { xtraTabControl1.TabPages.ForEach(b => { if (b.Name != "xtraTabPage12") { if (b.Controls.Count > 0) { b.Controls.RemoveAt(0); } b.PageVisible = false; } }); } private void barButtonItem2_ItemClick(object sender, ItemClickEventArgs e) { 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) { HideAll(); //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) { 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) { 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) { 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) { HideAll(); IBoxFormRule = new IBoxFormRule(_ibox?.facilities); IBoxFormRule.Dock = DockStyle.Fill; IBoxFormRule.SendData += SendText; xtraTabPage4.Controls.Add(IBoxFormRule); xtraTabPage4.PageVisible = true; xtraTabControl1.SelectedTabPage = xtraTabPage4; } private IBoxFormOverview IBoxFormOverview; private IBoxFormMonitor IBoxFormMonitor; //IBoxFormControll IBoxFormControll; private IBoxFormParams IBoxFormParams; private IBoxFormLog IBoxFormLog; private IBoxFormProtocol IBoxFormProtocol; private IBoxFormRule IBoxFormRule; //IBoxFormScheme IBoxFormScheme; 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(); } public void GetReceive(string msg) { if (!this.IsHandleCreated || this.IsDisposed || string.IsNullOrEmpty(msg)) return; if (msg.StartsWith("error:") && msg.Contains("目标主机坏了")) { WaitFormHelper.HideWaitForm(); MessageBoxHelper.ShowError("蓝牙设备连接失败,请重试!"); return; } if (!string.IsNullOrEmpty(msg) && msg.Contains(IBoxHelper.startCode)) { var order = msg.Replace(IBoxHelper.endCode, "").Replace(IBoxHelper.startCode, "").Trim(); SetOrder(order); } else { WaitFormHelper.HideWaitForm(); //MessageBoxHelper.ShowError("蓝牙设备连接失败"); } } private List stationMonitors; private void SetOrder(string order) { var smsg = order.Split(new string[] { IBoxHelper.paramCode }, StringSplitOptions.RemoveEmptyEntries); if (smsg.Length < 2) { return; } switch (smsg[0].Trim()) { case IBoxHelper.getlogCode: var getloglist = JsonHelper.Json2Object>(smsg[1].Trim()); IBoxFormLog.BindData(getloglist, ConnectType == 1 ? true : false); break; case IBoxHelper.getbaseCode: var getbaselist = JsonHelper.Json2Object>(smsg[1].Trim()); if (IBoxFormOverview != null) { IBoxFormOverview.BindGrid(getbaselist, ConnectType == 1 ? true : false); } stationMonitors = getbaselist; //else if (IBoxFormMonitor != null) IBoxFormMonitor.BindGrid(getbaselist, ConnectType == 1 ? true : false); WaitFormHelper.HideWaitForm(); break; case IBoxHelper.gethistoryrecordCode: var b = smsg[1].Trim(); var gethistoryrecordlist = new List(); if (!string.IsNullOrEmpty(b)) { var c = b.Split('|'); foreach (var item in c) { var m = new MonitorRecord().FromString(item); gethistoryrecordlist.Add(m); } } IBoxFormMonitor.SetChartData(gethistoryrecordlist, ConnectType == 1 ? true : false); break; case IBoxHelper.getalarmbydayCode: var l = smsg[1].Trim(); IBoxFormMonitor.SetAlarmByDay(l, ConnectType == 1 ? true : false); break; case IBoxHelper.getbysignalidofdayrangeCode: var getbysignalidofdayrangelist = JsonHelper.Json2Object>(smsg[1].Trim()); break; case IBoxHelper.getrealrecordCode: var getrealrecordlist = JsonHelper.Json2Object>(smsg[1].Trim()); if (IBoxFormMonitor != null) IBoxFormMonitor.SetRealRecord(getrealrecordlist, ConnectType == 1 ? true : false); break; case IBoxHelper.getparamsCode: var model = JsonHelper.Json2Object(smsg[1].Trim()); IBoxFormParams.BindData(model, ConnectType == 1 ? true : false); break; case IBoxHelper.getprotocolCode: { var pmodel = JsonHelper.Json2Object(smsg[1].Trim()); IBoxFormProtocol.BindData(pmodel, ConnectType == 1 ? true : false); break; } case IBoxHelper.getrulesCode: { var rgetbaselist = JsonHelper.Json2Object>(smsg[1].Trim()); IBoxFormRule.BindGrid(rgetbaselist, ConnectType == 1 ? true : false); SendText(null, IBoxHelper.startCode + IBoxHelper.getsignaltypeCode + IBoxHelper.paramCode + IBoxHelper.endCode); break; } case IBoxHelper.getstoreCode: { var pmodel = JsonHelper.Json2Object(smsg[1].Trim()); IBoxFormSystemInfo.BindData(pmodel, ConnectType == 1 ? true : false); break; } case IBoxHelper.getfilterCode: { var pmodel = JsonHelper.Json2Object(smsg[1].Trim()); IBoxFormDataFilter.BindData(pmodel, ConnectType == 1 ? true : false); break; } case IBoxHelper.getsignaltypeCode: { var list = JsonHelper.Json2Object>(smsg[1].Trim()); IBoxFormRule.SetSignalType(list); SendText(null, IBoxHelper.startCode + IBoxHelper.getMonitorgroupCode + IBoxHelper.paramCode + IBoxHelper.endCode); break; } case IBoxHelper.getMonitorgroupCode: { var list = JsonHelper.Json2Object>(smsg[1].Trim()); IBoxFormRule.SetMonitorPoint(list); break; } case IBoxHelper.getenergyanalyCode: { var list = JsonHelper.Json2Object>(smsg[1].Trim()); IBoxFormEnergyAnalysis.BindData(list); break; } } } public Build _SelectedBuild; private string filePath = "Data\\AnalyData_{0}.json"; private void barButtonItem9_ItemClick(object sender, ItemClickEventArgs e) { HideAll(); var _facilities = _ibox.facilities; _SelectedBuild = new Build() { factoryName = _facilities.Name, 系统最大流量 = _facilities.MaxWaterDemand.Value, Type = 二供分区Type.加压供水, ID = _facilities.ID.ToString(), 用户压力需求 = int.Parse(_facilities.TerminalPressure.ToString()), 层数 = double.Parse(_facilities.Floor.ToString()), 层高 = double.Parse(_facilities.FloorHeight.ToString()), 每层户数 = double.Parse(_facilities.Households.ToString()) }; //ShowChart(); var simuCalcViewModel = new SimuViewModel(); simuCalcViewModel.CurrentBuild = _SelectedBuild; simuCalcViewModel.Facilities = _facilities; //IBoxFormScheme = new IBoxFormScheme(simuCalcViewModel); //IBoxFormScheme.Dock = DockStyle.Fill; //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); var param = System.Web.HttpUtility.UrlEncode(content, System.Text.Encoding.UTF8); var url = IP + ":8011/datahave/GetData?msg="; var result = Yw.Untity.HttpRequestHelper.Get(url + param); return result; } private string HttpPost(string content) { var param = content;// System.Web.HttpUtility.UrlEncode(content, System.Text.Encoding.GetEncoding("GB2312")); var url = IP + ":8011/datahave/PostData"; var m = new PostViewModel() { msg = param }; var datastr = JsonHelper.Object2Json(m); var result = Yw.Untity.HttpRequestHelper.Post(url, datastr); return result; } private List splitCode = new List() { "saverules", "saveprotocol", "datadownload", "saveparams", "addmonitorgroup", "addsignal" }; private void SendText(object sender, string content) { switch (ConnectType) { case 1: BluetoothHelper.GetInstance().SendData(content); break; case 2: var result = ""; if (!splitCode.Any(s => content.Contains(s))) { result = HttpGet(content); } else { result = HttpPost(content); } SetOrder(result); break; } } private string IP; private void barButtonItem10_ItemClick(object sender, ItemClickEventArgs e) { if (barEditItem2.EditValue.ToString() == "2") { IP = "http://" + barEditItem3.EditValue.ToString(); var param = IP + ":8011/ping"; var result = Yw.Untity.HttpRequestHelper.Get(param); if (result == "true") { SendText(null, IBoxHelper.startCode + IBoxHelper.getbaseCode + IBoxHelper.paramCode + IBoxHelper.endCode); ConnectedEve(); MessageBoxHelper.ShowSuccess("连接成功!"); } else { ClosedEve(); MessageBoxHelper.ShowError(result); } } } private void barEditItem2_EditValueChanged(object sender, EventArgs e) { switch (barEditItem2.EditValue.ToString()) { case "1": ConnectType = 1; 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; barBtnBlue.Visibility = barButtonItemNoConnect.Visibility = barButtonItemConnected.Visibility = barButtonItemClose.Visibility = BarItemVisibility.Never; break; } } private async void barButtonItem11_ItemClick(object sender, ItemClickEventArgs e) { var dlg = new OpenFileDialog() { Filter = "压缩文件.rar|*.rar", Title = "请选择要更新的服务文件" }; IP = "http://" + barEditItem3.EditValue.ToString(); var param = IP + ":8010/OTA/Post"; if (dlg.ShowDialog() == DialogResult.OK) { var st = dlg.OpenFile(); using (var client = new HttpClient()) { using (var content = new MultipartFormDataContent()) { var streamContent = new StreamContent(st); var fileContent = new ByteArrayContent(await streamContent.ReadAsByteArrayAsync()); fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("multipart/form-data"); content.Add(fileContent, "file", dlg.FileName); var response = await client.PostAsync(param, content); response.EnsureSuccessStatusCode(); var result = await response.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(result) && result == "OK") { MessageBoxHelper.ShowSuccess("服务上传升级成功!"); } else MessageBoxHelper.ShowError(result); } } } } private void barButtonItem12_ItemClick(object sender, ItemClickEventArgs e) { HideAll(); IBoxFormSystemInfo = new IBoxFormSystemInfo(); IBoxFormSystemInfo.Dock = DockStyle.Fill; IBoxFormSystemInfo.SendData += SendText; xtraTabPage9.Controls.Add(IBoxFormSystemInfo); xtraTabPage9.PageVisible = true; xtraTabControl1.SelectedTabPage = xtraTabPage9; } private void barButtonItem13_ItemClick(object sender, ItemClickEventArgs e) { HideAll(); IBoxFormDataFilter = new IBoxFormDataFilter(); IBoxFormDataFilter.Dock = DockStyle.Fill; IBoxFormDataFilter.SendData += SendText; xtraTabPage10.Controls.Add(IBoxFormDataFilter); xtraTabPage10.PageVisible = true; xtraTabControl1.SelectedTabPage = xtraTabPage10; } private void barButtonItem14_ItemClick(object sender, ItemClickEventArgs e) { HideAll(); IBoxFormEnergyAnalysis = new IBoxFormEnergyAnalysis(); IBoxFormEnergyAnalysis.Dock = DockStyle.Fill; IBoxFormEnergyAnalysis.SendData += SendText; xtraTabPage11.Controls.Add(IBoxFormEnergyAnalysis); xtraTabPage11.PageVisible = true; xtraTabControl1.SelectedTabPage = xtraTabPage11; } public IBoxForm(IBoxControllViewModel ibox = null) { InitializeComponent(); this.PageTitle.Caption = "智能盒子"; if (ibox != null) { ibox = ibox; } else { barButtonItem5.Visibility = BarItemVisibility.Never; } try { radio = BluetoothRadio.Default;//获取当前PC的蓝牙适配器 CheckForIllegalCrossThreadCalls = false;//不检查跨线程调用 /* if (radio == null)//检查该电脑蓝牙是否可用 { MessageBoxHelper.ShowInfo("这个电脑蓝牙不可用!"); }*/ } catch { //MessageBoxHelper.ShowInfo("这个电脑蓝牙不可用!"); } } private void imageSlider1_Click(object sender, EventArgs e) { } } }