Ejemplo n.º 1
0
      private void button2_Click(object sender, EventArgs e)
      {
          //int a = Convert.ToInt32(Myadapter_Mp.SQ_MP("000000000001"));
          //Thread t1 = new Thread(test);
          //Thread t2 = new Thread(test2);
          //t1.Start();
          //t2.Start();
          //StringBuilder sb = new StringBuilder("1111111111");
          //sb.Replace("11", "22", 0, 2);
          //string s = sb.ToString();
          //try
          //{
          //    long n = Convert.ToInt64(Myadapter_Mp.SQ_MP("999999999999"));
          //    bool m = Myadapter.SQ_Privilege("1")!=0;
          //}
          //catch (Exception)
          //{

          //    throw;
          //}
          //DataTable dt = new DataTable();
          //MeterInfo tempmeter = new MeterInfo();
          //bool f = true;
          //dt = Myadapter_r.GetDataBy_r("0", "合格", "准备");
          //if (dt != null && dt.Rows.Count > 0)
          //    tempmeter = DataHelper.Dt2Ob(dt);
          //else
          //{
          //    f = false;
          //}

          //if (tempmeter != null && f)
          //{

          //}
          //else
          //{
          //    LogHelper.Info("表不在检测列表中");
          //}
          //string re = "";
          //string[] tip = re.Split('@');
          //string me = "00000000000000000000000000000000";
          //StringBuilder re_ev = new StringBuilder(me);
          //string oldchar = me.Substring(0, 10);
          //re_ev.Replace(oldchar, "AAAAAAAA0A", 0, 10);
          //string T = re_ev.ToString();

          //Dictionary<string, string> dtest = new Dictionary<string, string>();
          //dtest["1"] = "2";
          //dtest["2"] = "3";
          //dtest.Remove("1");
          //Dictionary<string, string> dtest2 = dtest;
          //test3Async();
          DT_WaringPlatTableAdapter myadapter_wp = new DT_WaringPlatTableAdapter();
          //DataTable dtw = myadapter_wp.GetDataBy_it("1", "1");
      }
Ejemplo n.º 2
0
        /// <summary>
        /// 心跳线程
        /// </summary>
        private void Heart()
        {
            while (CommonFunction.flag_listener)
            {
                lock (CommonFunction.obj_66)
                {
                    foreach (HeartInfo hi in CommonFunction.hearts.Values)
                    {
                        try
                        {
                            if (hi.Ke_al > 3)
                            {
                                hi.State = "异常";
                                hi.Ke_al = 00;
                                Showmsg(hi.Id + "/" + hi.Type);

                                //Thread me = new Thread(() => Message_f(hi))
                                //{
                                //    IsBackground = true
                                //};
                                //me.Start();
                                hi.State = "禁用";
                                //修改检测平台状态为异常
                                switch (hi.Type)
                                {
                                case "命令检测":
                                    Myadapter_p.UpdatePlatCom("异常", hi.Id);
                                    break;

                                case "IC卡卡控":
                                    Myadapter_p.UpdatePlatIc("异常", hi.Id);
                                    break;

                                case "膜式表初检":
                                    Myadapter_p.UpdatePlatChu_msb("异常", hi.Id);
                                    break;

                                case "修正仪初检":
                                    Myadapter_p.UpdatePlatChu_xzy("异常", hi.Id);
                                    break;

                                case "超声波初检":
                                    Myadapter_p.UpdatePlatChu_csb("异常", hi.Id);
                                    break;

                                case "终检":
                                    Myadapter_p.UpdatePlatZho("异常", hi.Id);
                                    break;
                                }
                                Thread.Sleep(50);
                                CommonFunction.platm.ChangePlat();
                                PostLl(hi.Id.ToString(), hi.Type, "异常");
                                DT_WaringPlatTableAdapter myadapter_wp = new DT_WaringPlatTableAdapter();
                                DataTable dtw = myadapter_wp.GetDataBy_it(hi.Id.ToString(), hi.Type, 0);
                                if (dtw.Rows.Count == 0)
                                {
                                    myadapter_wp.InsertWP(hi.Id.ToString(), hi.Type, DateTime.Now, 0, 0);
                                }
                                else
                                {
                                    myadapter_wp.UpdateMP(0, DateTime.Now, hi.Type, hi.Id.ToString(), 0);
                                }
                                //异常,给ll推送异常,修改检测平台状态为异常
                            }
                            if (hi.State.Equals("正常"))
                            {
                                try
                                {
                                    Debug.Print("2");
                                    if (CommonFunction.flag_listener)
                                    {
                                        Socket    socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                                        IPAddress ip     = IPAddress.Parse(hi.IP);
                                        int       port   = Convert.ToInt32(hi.Port);
                                        socket.Connect(ip, port);
                                        string s = DownCommond.GenerateCorekeep();
                                        socket.Send(DataHelper.Str2Byte(s));
                                        socket.Close();
                                    }
                                }
                                catch (Exception)
                                {
                                    Debug.Print("3");
                                    LogHelper.Info("检测平台异常");
                                }
                                hi.Ke_al++;
                            }
                            Thread.Sleep(500);
                        }
                        catch (Exception)
                        {
                            hi.Ke_al++;
                            //此处应警报,没有办法发送心跳包
                        }
                    }
                }
                Debug.Print("1");
                Thread.Sleep(10000);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// id+ip+port+type+入网/出网(1+4+2+1+1)
        /// </summary>
        /// <param name="session"></param>
        /// <param name="requestInfo"></param>
        public override void ExecuteCommand(MySession session, MyRequestInfo requestInfo)
        {
            lock (CommonFunction.obj_66)
            {
                string re = "00";
                bool   f;
                bool   isallowexit;
                Myadapter_p = new Dt_PlateInfoTableAdapter();
                myadapter_w = new DT_WaringPlatTableAdapter();
                var    info = requestInfo;
                int    id   = Convert.ToInt32(info.Data.Substring(2, 2), 16);
                string ip   = DataHelper.Str2IP(info.Data.Substring(4, 8));
                string port = Convert.ToInt32(info.Data.Substring(12, 4), 16).ToString();
                string type = info.Data.Substring(16, 2);
                string cmd  = info.Data.Substring(18, 2);
                //入网 根据id查询数据库(有,更新数据)(没有,插入数据)
                //出网 根据id查询数据库(有,更新数据) (没有,不做操作) 检查其状态是否可以立即出网,并回复。若不可以标记状态为待出网,通知其下次上传。
                //更新platinfo 和 heart 入网成功加入heart,出网成功移除heart,dictionary存储heartinfo
                //加锁,当执行01操作时不能执行出网操作,避免
                if (cmd.Equals("AA"))
                {
                    //入网
                    try
                    {
                        pl = Replat(id);
                        if (pl == null)
                        {
                            pl = new PlatInfo();
                            f  = false;
                        }
                        else
                        {
                            f = true;
                        }
                        switch (type)
                        {
                        case "01":
                            heart       = new HeartInfo(id, "命令检测", ip, port, 00, "正常");
                            pl.PlatComs = "空闲";
                            pl.PlatComp = port;
                            break;

                        case "02":
                            heart      = new HeartInfo(id, "IC卡卡控", ip, port, 00, "正常");
                            pl.PlatIcs = "空闲";
                            pl.PlatIcp = port;
                            break;

                        case "03":
                            heart           = new HeartInfo(id, "膜式表初检", ip, port, 00, "正常");
                            pl.PlatChus_msb = "空闲";
                            pl.PlatChup_msb = port;
                            break;

                        case "04":
                            heart           = new HeartInfo(id, "修正仪初检", ip, port, 00, "正常");
                            pl.PlatChus_xzy = "空闲";
                            pl.PlatChup_xzy = port;
                            break;

                        case "05":
                            heart           = new HeartInfo(id, "超声波初检", ip, port, 00, "正常");
                            pl.PlatChus_csb = "空闲";
                            pl.PlatChup_csb = port;
                            break;

                        case "06":
                            heart       = new HeartInfo(id, "终检", ip, port, 00, "正常");
                            pl.PlatZhos = "空闲";
                            pl.PlatZhop = port;
                            break;
                        }
                        pl.IP = ip;
                        pl.id = id;
                        if (f)
                        {
                            Myadapter_p.UpdatePlat(
                                pl.IP,
                                pl.PlatComs,
                                pl.PlatIcs,
                                pl.PlatChus_msb,
                                pl.PlatChus_xzy,
                                pl.PlatChus_csb,
                                pl.PlatZhos,
                                pl.PlatComp,
                                pl.PlatIcp,
                                pl.PlatChup_msb,
                                pl.PlatChup_xzy,
                                pl.PlatChup_csb,
                                pl.PlatZhop,
                                pl.id);
                        }
                        else
                        {
                            Myadapter_p.InsertPlat(
                                pl.id,
                                pl.IP,
                                pl.PlatComs,
                                pl.PlatIcs,
                                pl.PlatChus_msb,
                                pl.PlatChus_xzy,
                                pl.PlatChus_csb,
                                pl.PlatZhos,
                                pl.PlatComp,
                                pl.PlatIcp,
                                pl.PlatChup_msb,
                                pl.PlatChup_xzy,
                                pl.PlatChup_csb,
                                pl.PlatZhop);
                        }
                        //入网成功
                        CommonFunction.platInfos[id]     = pl;
                        CommonFunction.hearts[id + type] = heart;
                        re = "AA";
                        //此检测平台是否为异常的平台,修改数据库
                        DataTable dtw = myadapter_w.GetDataBy_it(id.ToString(), heart.Type, 0);
                        if (dtw.Rows.Count != 0)
                        {
                            myadapter_w.UpdateMP(1, DateTime.Now, heart.Type, id.ToString(), 0);
                            PostLl(id.ToString(), heart.Type, "正常");
                        }
                        LogHelper.Info(id + " " + type + " 入网成功");
                    }
                    catch (Exception e)
                    {
                        LogHelper.Error("入网失败" + e);
                        re = "55";
                    }
                }
                else if (cmd.Equals("55"))
                {
                    //出网
                    lock (CommonFunction.obj_44)
                    {
                        try
                        {
                            pl = Replat(id);
                            if (pl != null)
                            {
                                switch (type)
                                {
                                case "01":
                                    if (pl.PlatComs.Equals("空闲") || pl.PlatComs.Equals("待出网"))
                                    {
                                        pl.PlatComs = "未启用";
                                        isallowexit = true;
                                    }
                                    else
                                    {
                                        pl.PlatComs = "待出网";
                                        isallowexit = false;
                                    }
                                    break;

                                case "02":
                                    if (pl.PlatIcs.Equals("空闲") || pl.PlatIcs.Equals("待出网"))
                                    {
                                        pl.PlatIcs  = "未启用";
                                        isallowexit = true;
                                    }
                                    else
                                    {
                                        pl.PlatIcs  = "待出网";
                                        isallowexit = false;
                                    }
                                    break;

                                case "03":
                                    if (pl.PlatChus_msb.Equals("空闲") || pl.PlatChus_msb.Equals("待出网"))
                                    {
                                        pl.PlatChus_msb = "未启用";
                                        isallowexit     = true;
                                    }
                                    else
                                    {
                                        pl.PlatChus_msb = "待出网";
                                        isallowexit     = false;
                                    }
                                    break;

                                case "04":
                                    if (pl.PlatChus_xzy.Equals("空闲") || pl.PlatChus_xzy.Equals("待出网"))
                                    {
                                        pl.PlatChus_xzy = "未启用";
                                        isallowexit     = true;
                                    }
                                    else
                                    {
                                        pl.PlatChus_xzy = "待出网";
                                        isallowexit     = false;
                                    }
                                    break;

                                case "05":
                                    if (pl.PlatChus_csb.Equals("空闲") || pl.PlatChus_csb.Equals("待出网"))
                                    {
                                        pl.PlatChus_csb = "未启用";
                                        isallowexit     = true;
                                    }
                                    else
                                    {
                                        pl.PlatChus_csb = "待出网";
                                        isallowexit     = false;
                                    }
                                    break;

                                case "06":
                                    if (pl.PlatZhos.Equals("空闲") || pl.PlatZhos.Equals("待出网"))
                                    {
                                        pl.PlatZhos = "未启用";
                                        isallowexit = true;
                                    }
                                    else
                                    {
                                        pl.PlatZhos = "待出网";
                                        isallowexit = false;
                                    }
                                    break;

                                default:
                                    isallowexit = false;
                                    break;
                                }
                                Myadapter_p.UpdatePlat(
                                    pl.IP,
                                    pl.PlatComs,
                                    pl.PlatIcs,
                                    pl.PlatChus_msb,
                                    pl.PlatChus_xzy,
                                    pl.PlatChus_csb,
                                    pl.PlatZhos,
                                    pl.PlatComp,
                                    pl.PlatIcp,
                                    pl.PlatChup_msb,
                                    pl.PlatChup_xzy,
                                    pl.PlatChup_csb,
                                    pl.PlatZhop,
                                    pl.id);
                                CommonFunction.platInfos[id] = pl;
                                if (isallowexit)
                                {
                                    CommonFunction.hearts.Remove(id + type);
                                    re = "AA";
                                    LogHelper.Info(id + " " + type + " 出网成功");
                                }
                                else
                                {
                                    re = "BB";
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            LogHelper.Error("出网失败" + e);
                            re = "55";
                        }
                    }
                }
                try
                {
                    //回复检测平台,入网成功或失败,出网成功或失败或等一次检测
                    IPAddress Ip      = IPAddress.Parse(ip);
                    int       Port    = Convert.ToInt32(port);
                    string    send_66 = DownCommond.GenerateSendFrame("66" + re, info, true, false);
                    Socket    socket  = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    socket.Connect(Ip, Port);
                    socket.Send(DataHelper.Str2Byte(send_66));
                    socket.Close();
                    LogHelper.Info("回复66:" + send_66);
                }
                catch (Exception e)
                {
                    LogHelper.Error("无法连接入网检测平台" + e);
                }
            }
        }