Exemplo n.º 1
0
        /// <summary>
        /// 保存客户端的IP地址
        /// </summary>
        /// <param name="socket"></param>
        /// <param name="c_to_s_data"></param>
        public void SaveClientIp(Socket socket, C_To_S_Data <CSDataStandard.Transfer.RealRec> c_to_s_data)
        {
            IPEndPoint ipEndPoint = (IPEndPoint)socket.RemoteEndPoint;
            string     ip         = ipEndPoint.Address.ToString();

            Clazz.Config.XML_Org _org = SysConfig.orgConfig.GetOrgByOrgId(c_to_s_data.OrgId);

            if (_org == null)
            {
                //将信息写入到日志文件中    orgid为***的污水厂不存在
                LogMg.AddError(String.Format("OrgId:{0}  不存在", c_to_s_data.OrgId));
                //isSuccess = false;
            }
            else
            {
                try
                {
                    SWSDataContext  SWS     = new SWSDataContext(ServerSocketHelper.GetConnection(_org.DBName)); //建立一个分厂数据源提供程序实例
                    country_station station = SWS.country_station.SingleOrDefault(c => c.id == c_to_s_data.StationId);
                    if (station == null)
                    {
                        LogMg.AddError("StationId: " + c_to_s_data.StationId + " 不存在");
                    }
                    else
                    {
                        station.ip = ip;     //保存客户端IP地址
                        SWS.SubmitChanges();
                    }
                }
                catch (Exception ex)
                {
                    LogMg.AddError(ex);
                }
            }
        }
Exemplo n.º 2
0
 public ServerPanel(ServerSocketHelper socket)
 {
     Socket      = socket;
     ViewModel   = new ServerPanelViewModel(socket);
     DataContext = ViewModel;
     InitializeComponent();
 }
Exemplo n.º 3
0
        private void DeviceControlCallBack(Socket socket, string json)
        {
            C_To_S_Data <CSDataStandard.Transfer.DeviceControl> receiveObj = Utility.JsonHelper.JsonDeserialize <C_To_S_Data <CSDataStandard.Transfer.DeviceControl> >(json);

            //获取所有Org
            Clazz.Config.XML_Org org = SysConfig.orgConfig.GetOrgByOrgId(receiveObj.OrgId);
            if (org == null)  //判断Org是否存在
            {
                string msg = "OrgId:" + receiveObj.OrgId + "不存在";
                LogMg.AddError(msg);
                lb_msg.Items.Add(msg);
            }
            else
            {
                try
                {
                    SWSDataContext  db          = new SWSDataContext(ServerSocketHelper.GetConnection(org.DBName));
                    string          stationName = "未知的客户端";
                    country_station station     = db.country_station.SingleOrDefault(c => c.id == receiveObj.StationId);
                    if (station != null)
                    {
                        stationName = station.name;
                    }

                    saveData(db, receiveObj, stationName);

                    sendData(db, socket, stationName, receiveObj.StationId);
                }
                catch (Exception ex)
                {
                    LogMg.AddError(ex);
                    DEBUG.MsgBox(ex.ToString());
                }
            }
        }
Exemplo n.º 4
0
        // 实时数据回调 目前支持6路传感器,以后通道数会增加
        private int DoOnRealData(uint handle, int seq, ref SDK_Node_Real_Data data, IntPtr user)
        {
            try
            {
                //找出数据节点Id所对应的分厂
                SDK_Node_Real_Data       _data = data;
                List <DBCJ.XML_DBCJTest> tests = ALLTestList.Where(c => c.NodeId == _data.nodeid).ToList();

                //如果没有这个采集设备的信息    则丢弃这个设所采集的数据    直接return
                if (tests == null)
                {
                    BeginInvoke(new UpdateUI(WriteStatus), string.Format("节点Id为 {0} 的设备匹配不到对应的分厂", data.nodeid));
                    return(0);
                }
                Clazz.Config.XML_Org org = allOrg.SingleOrDefault(c => c.OrgId == tests[0].OrgId);
                BeginInvoke(new UpdateUI(WriteStatus), string.Format("实时数据 节点Id:{0} 企业名称:{1} 数据库名称:{2}", data.nodeid, org.Name, org.DBName));

                SWSDataContext db = new SWSDataContext(ServerSocketHelper.GetConnection(org.DBName));       //分厂数据库实例

                for (int i = 0; i < data.sensorData.Length; i++)
                {
                    //检测该通道是否有效
                    if (data.sensorData[i].valid == 0)
                    {
                        continue;
                    }

                    BeginInvoke(new UpdateUI(WriteStatus),
                                string.Format("通道{0}, 类型{1}, 数据:{2}, 时间:{3}",
                                              i + 1,
                                              data.sensorData[i].type,
                                              data.sensorData[i].data,
                                              JHTimeToDateTime(data.sensorData[i].time).ToString()));


                    //这里有空改成用线程去保存数据到数据库
                    #region 用异步的方式将数据保存到数据库

                    realrec _realrec = new  务器端接收程序.realrec();
                    _realrec.testid   = Convert.ToInt32(tests.SingleOrDefault(c => c.NodeId == _data.nodeid).TestId); //检测点ID
                    _realrec.testtime = JHTimeToDateTime(data.sensorData[i].time);                                    //时间
                    _realrec.value    = (decimal)data.sensorData[i].data;                                             //获取的电量

                    BeginInvoke(new SaveDataToDatabase(Save), db, _realrec);

                    #endregion
                }
            }
            catch (Exception e)
            {
                LogMg.AddError(e);
            }
            return(0);
        }
Exemplo n.º 5
0
        //服务开启
        private void btn_Start_Click(object sender, EventArgs e)
        {
            try
            {
                if (test_connection() == false)
                {
                    listBox1.Items.Add("连接数据库失败");
                    listBox1.Items.Add("请确保数据库服务已开启,并且数据库连接填写正确");
                    return;
                }

                ServerSocketHelper.Init();
                ServerSocketHelper.StartListen(txt_ServerIp.Text.Trim(), txt_Port_SWS.Text.Trim());


                GPRSControl.DTU_NetServer.Init();
                // GPRSControl.GPRSControlNetServer.StartListen("192.168.1.8","5678");
                GPRSControl.DTU_NetServer.StartListen(txt_ServerIp.Text.Trim(), txt_port_DTU.Text.Trim());

                V88CommunicationThread.getInstance().Start();
                UdpV88Server.getInstance().StartListen(txt_ServerIp.Text.Trim(), txt_port_udp.Text.Trim());

                //心跳线程开启
                HeartbeatThread.Start();
                //主动发指令的线程开启
                ControlCommandThread.Start();
                //定时发指令的线程开启
                AutoCollectionThread.Start();

                save();

                btn_Start.Enabled = false;
                btn_Stop.Enabled  = true;

                ///关闭自动启动服务的定时器
                if (AutoStartTimer != null)
                {
                    AutoStartTimer.Stop();
                }
                listBox1.Items.Add("服务已成功开启");
            }
            catch (Exception ex)
            {
                ServerSocketHelper.Close();
                //  DTU_NetServer.Close();

                LogMg.AddError(ex);
                listBox1.Items.Add(ex.Message);
                //  MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 6
0
        private async void ServerButton_Click(object sender, RoutedEventArgs e)
        {
            (sender as Button).IsEnabled = false;
            Config.Instance.Save();
            try
            {
                ServerSocketHelper helper = new ServerSocketHelper();
                helper.Start(ViewModel.ServerPort, ViewModel.ServerPassword);
                tcsServer.SetResult(helper);
            }
            catch (Exception ex)
            {
                await MainWindow.Current.ShowMessageAsync("启动失败:", ex);

                (sender as Button).IsEnabled = true;
            }
        }
Exemplo n.º 7
0
        //服务停止
        private void btn_Stop_Click(object sender, EventArgs e)
        {
            try
            {
                ServerSocketHelper.Close();
                //  DTU_NetServer.Close();

                UdpV88Server.getInstance().close();

                btn_Start.Enabled = true;
                btn_Stop.Enabled  = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 public ServerPanelViewModel(ServerSocketHelper socket)
 {
     Socket          = socket;
     SelectedSession = Sessions.Count == 0 ? null : Sessions[0];
     socket.Server.SessionsChanged += Server_SessionsChanged;
 }