Beispiel #1
0
 /// <summary>
 /// 从数据库读取出手机号列表
 /// </summary>
 /// <returns></returns>
 public static List <GsmMobile> GetGsmMobileList()
 {
     return(ServiceBussiness.GetGsmMobileList());
 }
Beispiel #2
0
        /// <summary>
        /// 上线通知
        /// </summary>
        /// <param name="US">udp服务</param>
        /// <param name="IpEndPoint">Udp标识</param>
        public static void UdpConnected(UdpServer US, IPEndPoint IpEndPoint)
        {
            string ServiceId = US.ServiceID;

            ServiceBussiness.WriteQUIM("UDP", ServiceId, IpEndPoint.Address.ToString() + ":" + IpEndPoint.Port, "上线!", new byte[] { }, ServiceBussiness.EnCoderType.HEX, ServiceBussiness.DataType.Text);
        }
Beispiel #3
0
        public void PacketArrived(TcpService.TcpServer TS)
        {
            string ServiceId = TS.ServiceID;
            ConcurrentQueue <TcpReceivedData> Qtrd = TS.TQ.Qtrd;
            List <TcpSocket> Ts = TS.Ts;
            ConcurrentQueue <TcpSendData> Qtsd = TS.TQ.Qtsd;


            while (Qtrd.Count > 0)
            {
                TcpReceivedData trd = null;
                Qtrd.TryDequeue(out trd);
                if (trd != null)
                {
                    //Frame[] frames = null;

                    try
                    {
                        //注册&透传
                        Service.ServiceBussiness.RemoteCommand(trd.Data);
                        //Service.ServiceBussiness.Registered30(urd.Data);

                        //ASCII To String
                        string   STR  = Encoding.ASCII.GetString(trd.Data);
                        string[] STRs = STR.Split(new string[] { "##" }, StringSplitOptions.None);
                        if (STRs.Length > 0)
                        {
                            foreach (var item in STRs)
                            {
                                if (item != "")
                                {
                                    string STCD = pd.GetMN(item);
                                    InsertNewSTCD(STCD, Service.ServiceEnum.NFOINDEX.TCP, TS);
                                    bool B = false;
                                    //更新socket列表的stcd、socket
                                    TcpBussiness.UpdSocket(TS, trd.SOCKET, STCD, out B);
                                    if (!B)
                                    {
                                        //上线
                                        TcpBussiness.TcpConnected(TS, STCD);
                                    }
                                    //通知界面
                                    ServiceBussiness.WriteQUIM("TCP", ServiceId, STCD, "接收数据", trd.Data, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);

                                    PacketArrived(item, ServiceEnum.NFOINDEX.TCP, TS);
                                }
                            }
                        }
                        else
                        {
                            ServiceBussiness.WriteQUIM("TCP", ServiceId, "", "接收异常数据", trd.Data, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        }
                    }
                    catch (Exception ex)
                    {
                        //通知界面
                        ServiceBussiness.WriteQUIM("TCP", ServiceId, "", "接收异常数据", trd.Data, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        log.Error(DateTime.Now + "包处理操作异常" + ex.ToString());
                    }
                }
            }
            //throw new NotImplementedException();
        }
Beispiel #4
0
        //udp发送命令逻辑执行
        void StartCommand(System.Threading.Thread thread, UdpService.UdpServer US, UdpService.UdpSendData usd, string COMMANDCODE)
        {
            try
            {
                #region
                int count = 2;
                while (count < 3)
                {
                    DateTime datetime = DateTime.Now;
                    //判断命令列表里面有没有命令
                    var command = from com in US.UQ.Qusd where com.STCD == usd.STCD && COMMANDCODE == com.COMMANDCODE select com;
                    List <UdpSendData> Command = command.ToList <UdpSendData>();
                    //判断有没有在线设备
                    var udp = from u in US.Us where u.STCD == usd.STCD && u.IpEndPoint != null select u;
                    List <UdpSocket> UDP = udp.ToList <UdpSocket>();

                    if (Command.Count() > 0 && UDP.Count() > 0) //是否有
                    {
                        string STCD = Command.First().STCD;
                        byte[] Data = Command.First().Data; //Data ASC

                        string data = Encoding.ASCII.GetString(Data);

                        Command.First().STATE = count + 1;
                        UDP.First().DATATIME  = datetime;//更新为当前时间
                        US.UDPClient.Send(Command.First().Data, Command.First().Data.Length, UDP.First().IpEndPoint);


                        //通知界面
                        ServiceBussiness.WriteQUIM(Service.ServiceEnum.NFOINDEX.UDP.ToString(), US.ServiceID, STCD, "发送召测命令", Data, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);

                        //写入本地命令列表
                        ServiceBussiness.WriteListCommand(STCD, Service.ServiceEnum.NFOINDEX.UDP, COMMANDCODE, data, datetime, count + 1);

                        //单条命令状态发送到界面程序
                        ServiceBussiness.CommandWriteQUIM(STCD, Service.ServiceEnum.NFOINDEX.UDP.ToString(), COMMANDCODE, data, datetime, count + 1);


                        System.Threading.Thread.Sleep(60 * 1000); //可设置
                        if (count >= 2)                           //三次后超时
                        {
                            datetime = DateTime.Now;
                            //再判断一次是否列表中还存在(有回复时,会从列表中将命令删除)
                            command = from com in US.UQ.Qusd where com.STCD == usd.STCD && usd.COMMANDCODE == com.COMMANDCODE select com;
                            Command = command.ToList <UdpSendData>();
                            if (Command.Count() > 0)
                            {
                                foreach (var item in ServiceControl.udp)
                                {
                                    UdpService.UdpBussiness.RemoveUsdQ(item, STCD, COMMANDCODE);
                                }

                                //写入命令列表  状态-1超时
                                ServiceBussiness.WriteListCommand(STCD, Service.ServiceEnum.NFOINDEX.UDP, COMMANDCODE, data, datetime, -1);

                                //单条命令状态发送到界面程序
                                ServiceBussiness.CommandWriteQUIM(STCD, Service.ServiceEnum.NFOINDEX.UDP.ToString(), COMMANDCODE, data, datetime, -1);


                                //System.Threading.Thread.Sleep(30 * 1000);

                                //datetime = DateTime.Now;
                                //命令本地列表中删除超时记录
                                List <Command> lc = ServiceBussiness.RemoveListCommand(STCD, Service.ServiceEnum.NFOINDEX.UDP, COMMANDCODE, -1);
                                foreach (var item in lc)
                                {
                                    PublicBD.db.AddDataCommand(item.STCD, item.CommandID, item.DATETIME, datetime, data, (int)Service.ServiceEnum.NFOINDEX.UDP, -1);
                                }
                            }
                        }
                    }
                    else
                    {
                        return;
                    }
                    count++;
                }

                #endregion
            }
            catch (Exception ex)
            {
                Service.ServiceControl.log.Error(DateTime.Now + "udp发送命令逻辑执行异常!", ex);
            }
        }
        //各信道启动
        public void ChannelStart()
        {
            var temp = from t in wrx.XMLObj.LsM where t.SERVICETYPE == "TCP" select t;
            List <OperateXML.serviceModel> TEMP = temp.ToList <OperateXML.serviceModel>();

            tcp = new TcpService.TcpServer[TEMP.Count()];
            int k = 0;


            #region 读取命令列表(接收UI召测和GSM发送召测有定时写操作),因此在gsm服务启动前读取
            ServiceControl.LC = ServiceBussiness.GetCommandTempToLC();
            #endregion

            #region 启动服务
            foreach (var item in TEMP)
            {
                try
                {
                    tcp[k] = new TcpService.TcpServer(item.IP_PORTNAME, item.PORT_BAUDRATE, item.SERVICEID);
                    tcp[k].Start();
                    tcp[k].OnConnected    += new EventHandler <TcpService.ConnectedEventArgs>(tcp_OnConnected);
                    tcp[k].OnReceivedData += new EventHandler <TcpService.ReceivedDataEventArgs>(tcp_OnReceivedData);
                    tcp[k].OnDisconnected += new EventHandler <TcpService.DisconnectedEventArgs>(tcp_OnDisconnected);
                    log.Warn("tcp服务(" + item.IP_PORTNAME + ":" + item.PORT_BAUDRATE + ")启动成功!");
                }
                catch (Exception e)
                {
                    log.Warn("tcp服务(" + item.IP_PORTNAME + ":" + item.PORT_BAUDRATE + ")启动失败!", e);
                    //throw e;  //-------避免配置有误,服务死掉
                }
                k++;
            }

            temp = from t in wrx.XMLObj.LsM where t.SERVICETYPE == "UDP" select t;
            TEMP = temp.ToList <OperateXML.serviceModel>();
            udp  = new UdpServer[TEMP.Count()];
            k    = 0;
            foreach (var item in TEMP)
            {
                try
                {
                    udp[k] = new UdpServer(item.IP_PORTNAME, item.PORT_BAUDRATE, item.SERVICEID);
                    udp[k].Start();
                    udp[k].OnReceivedData += new EventHandler <UdpService.ReceivedDataEventArgs>(udp_OnReceivedData);
                    log.Warn(DateTime.Now + "udp服务(" + item.IP_PORTNAME + ":" + item.PORT_BAUDRATE + ")启动成功!");
                }
                catch (Exception e)
                {
                    log.Warn(DateTime.Now + "udp服务(" + item.IP_PORTNAME + ":" + item.PORT_BAUDRATE + ")启动失败!", e);
                    //throw e;  //-------避免配置有误,服务死掉
                }
                k++;
            }
            temp = from t in wrx.XMLObj.LsM where t.SERVICETYPE == "GSM" select t;
            TEMP = temp.ToList <OperateXML.serviceModel>();
            gsm  = new GsmServer[TEMP.Count()];
            k    = 0;
            foreach (var item in TEMP)
            {
                try
                {
                    gsm[k] = new GsmServer(item.IP_PORTNAME, item.PORT_BAUDRATE, item.SERVICEID);
                    gsm[k].Start();
                    Console.WriteLine(DateTime.Now + "启动各组服务命令," + "Restart!");
                    gsm[k].OnReceivedData += new EventHandler <GsmService.ReceivedDataEventArgs>(gsm_OnReceivedData);
                    log.Warn(DateTime.Now + "gsm服务(" + item.IP_PORTNAME + ":" + item.PORT_BAUDRATE + ")启动成功!");
                }
                catch (Exception e)
                {
                    log.Warn(DateTime.Now + "gsm服务(" + item.IP_PORTNAME + ":" + item.PORT_BAUDRATE + ")启动失败!", e);
                    //throw e;  //-------避免配置有误,服务死掉
                }
                k++;
            }

            temp = from t in wrx.XMLObj.LsM where t.SERVICETYPE == "COM" select t;
            TEMP = temp.ToList <OperateXML.serviceModel>();
            com  = new ComServer[TEMP.Count()];
            k    = 0;
            foreach (var item in TEMP)
            {
                try
                {
                    com[k] = new ComServer(item.IP_PORTNAME, item.PORT_BAUDRATE, item.NUM, item.SERVICEID);
                    com[k].Start();
                    com[k].OnReceivedData += new EventHandler <ComService.ReceivedDataEventArgs>(com_OnReceivedData);
                    log.Warn(DateTime.Now + "com服务(" + item.IP_PORTNAME + ":" + item.PORT_BAUDRATE + ")启动成功!");


                    //byte[] bb = EnCoder.HexStrToByteArray("24 5A 4A 58 58 00 15 03 A0 46 01 00 00 02 04 00 04 00 00 00 C7 ".Replace(" ", ""));
                    //com[k].sp.Write(bb, 0, bb.Length);
                }
                catch (Exception e)
                {
                    log.Warn(DateTime.Now + "com服务(" + item.IP_PORTNAME + ":" + item.PORT_BAUDRATE + ")启动失败!", e);
                    //throw e;  //-------避免配置有误,服务死掉
                }
                k++;
            }

            #endregion
        }
Beispiel #6
0
        /// <summary>
        /// 上线通知
        /// </summary>
        /// <param name="TS">tcp服务</param>
        /// <param name="socket">上线的socket</param>
        public static void TcpConnected(TcpServer TS, Socket socket)
        {
            string ServiceId = TS.ServiceID;

            ServiceBussiness.WriteQUIM("TCP", ServiceId, (socket.RemoteEndPoint as System.Net.IPEndPoint).Address.ToString() + ":" + (socket.RemoteEndPoint as System.Net.IPEndPoint).Port, "上线!", new byte[] { }, ServiceBussiness.EnCoderType.HEX, ServiceBussiness.DataType.Text);
        }
        //提取固态时,无查询结果或发送查询结果至最后一条时rtu上报7(中心端不用处理)
        internal static void Process_07(DLYY.Protocol.Solution <DLYY.Model.WaterLevelInfo> solution, Service.ServiceEnum.NFOINDEX NFOINDEX, object Server)
        {
            try{
                string STCD = SetSTCD(solution, NFOINDEX, Server);
                if (solution.IsUnpack)
                {
                    int k = 0;
                    if (solution.Items == null)
                    {
                        #region tcp通知界面
                        if ((int)NFOINDEX == 1)
                        {
                            TcpService.TcpServer TS = Server as TcpService.TcpServer;
                            //回复通知界面
                            ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, STCD, "召测时间段内没有数据[确认]", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        }
                        #endregion
                        #region udp通知界面
                        if ((int)NFOINDEX == 2)
                        {
                            UdpService.UdpServer US = Server as UdpService.UdpServer;
                            ServiceBussiness.WriteQUIM("UDP", US.ServiceID, STCD, "召测时间段内没有数据[确认]", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        }
                        #endregion
                        #region gsm通知界面
                        if ((int)NFOINDEX == 3)
                        {
                            GsmService.GsmServer GS = Server as GsmService.GsmServer;
                            ServiceBussiness.WriteQUIM("GSM", GS.ServiceID, STCD, "召测时间段内没有数据[确认]", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        }
                        #endregion
                        #region com通知界面
                        if ((int)NFOINDEX == 4)
                        {
                            ComService.ComServer CS = Server as ComService.ComServer;
                            Service.ServiceBussiness.WriteQUIM("COM", CS.ServiceID, STCD, "召测时间段内没有数据[确认]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text);
                        }
                        #endregion
                    }
                    else
                    {
                        foreach (DLYY.Model.WaterLevelInfo waterlevel in solution.Items)
                        {
                            int Milliseconds = (Convert.ToInt32(solution.N, 16) % 10) * 100 + (10 * k++);
                            Service.Model.YY_DATA_REM model = new Model.YY_DATA_REM();
                            model.STCD      = STCD;
                            model.DATAVALUE = decimal.Parse(waterlevel.DATAVALUE);
                            model.TM        = DateTime.Parse(waterlevel.TM).AddMilliseconds(Milliseconds);
                            model.DOWNDATE  = DateTime.Now;
                            model.NFOINDEX  = (int)NFOINDEX;
                            model.ItemID    = waterlevel.ItemID;
                            PublicBD.db.AddRemData(model);
                            //k++;


                            #region tcp通知界面
                            if ((int)NFOINDEX == 1)
                            {
                                TcpService.TcpServer TS = Server as TcpService.TcpServer;
                                //回复通知界面
                                ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, STCD, "提取到固态数据(最后一帧),数据特征[" + waterlevel.ItemID + "],时间[" + model.TM + "],值[" + model.DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                            }
                            #endregion
                            #region udp通知界面
                            if ((int)NFOINDEX == 2)
                            {
                                UdpService.UdpServer US = Server as UdpService.UdpServer;
                                ServiceBussiness.WriteQUIM("UDP", US.ServiceID, STCD, "提取到固态数据(最后一帧),数据特征[" + waterlevel.ItemID + "],时间[" + model.TM + "],值[" + model.DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                            }
                            #endregion
                            #region gsm通知界面
                            if ((int)NFOINDEX == 3)
                            {
                                GsmService.GsmServer GS = Server as GsmService.GsmServer;
                                ServiceBussiness.WriteQUIM("GSM", GS.ServiceID, STCD, "提取到固态数据(最后一帧),数据特征[" + waterlevel.ItemID + "],时间[" + model.TM + "],值[" + model.DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                            }
                            #endregion
                            #region com通知界面
                            if ((int)NFOINDEX == 4)
                            {
                                ComService.ComServer CS = Server as ComService.ComServer;
                                Service.ServiceBussiness.WriteQUIM("COM", CS.ServiceID, STCD, "提取到固态数据(最后一帧),数据特征[" + waterlevel.ItemID + "],时间[" + model.TM + "],值[" + model.DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text);
                            }
                            #endregion
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(DateTime.Now + "07操作异常" + ex.ToString());
            }
        }
        internal static void Process_06(DLYY.Protocol.Solution <DLYY.Model.WaterLevelInfo> solution, Service.ServiceEnum.NFOINDEX NFOINDEX, object Server)
        {
            try{
                string STCD = SetSTCD(solution, NFOINDEX, Server);
                //打回复包 106=006A ---C
                string Answer = pack.GetAnswer(solution.N, "006A", GetAuto(STCD), GetWaterLevelOrder(STCD), GetRainfallOrder(STCD), GetPowerMode(STCD), GetCenterAddress(STCD), "FFFF", "FFFF", "FFFF");


                #region tcp回复
                if ((int)NFOINDEX == 1)
                {
                    TcpService.TcpServer        TS = Server as TcpService.TcpServer;
                    List <TcpService.TcpSocket> Ts = TS.Ts;

                    var tcps = from t in Ts where t.STCD == STCD && t.TCPSOCKET != null select t;
                    List <TcpService.TcpSocket> Tcps = tcps.ToList <TcpService.TcpSocket>();
                    //没有该测站信息,不能向下执行,上“生成回复数据”没成功。
                    if (Answer == null)
                    {
                        ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, STCD, "生成回复报出现异常!", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        return;
                    }

                    if (Tcps.Count() > 0)
                    {
                        byte[] sendData = Encoding.ASCII.GetBytes(Answer);
                        Tcps.First().TCPSOCKET.Send(sendData);
                        //回复通知界面
                        ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, STCD, "回复数据", sendData, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                    }
                }
                #endregion
                #region udp回复
                if ((int)NFOINDEX == 2)
                {
                    UdpService.UdpServer        US = Server as UdpService.UdpServer;
                    List <UdpService.UdpSocket> Us = US.Us;
                    var udps = from u in Us where u.STCD == STCD && u.IpEndPoint != null select u;

                    //没有该测站信息,不能向下执行,上“生成回复数据”没成功。
                    if (Answer == null)
                    {
                        ServiceBussiness.WriteQUIM("UDP", US.ServiceID, STCD, "生成回复报出现异常!", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        return;
                    }

                    if (udps.Count() > 0)
                    {
                        byte[] sendData = Encoding.ASCII.GetBytes(Answer);
                        US.UDPClient.Send(sendData, sendData.Length, udps.First().IpEndPoint);
                        ServiceBussiness.WriteQUIM("UDP", US.ServiceID, STCD, "回复数据", sendData, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                    }
                }
                #endregion

                if (solution.IsUnpack)
                {
                    int k = 0;
                    foreach (DLYY.Model.WaterLevelInfo waterlevel in solution.Items)
                    {
                        int Milliseconds = (Convert.ToInt32(solution.N, 16) % 10) * 100 + (10 * k++);
                        Service.Model.YY_DATA_REM model = new Model.YY_DATA_REM();
                        model.STCD      = STCD;
                        model.DATAVALUE = decimal.Parse(waterlevel.DATAVALUE);
                        model.TM        = DateTime.Parse(waterlevel.TM).AddMilliseconds(Milliseconds);
                        model.DOWNDATE  = DateTime.Now;
                        model.NFOINDEX  = (int)NFOINDEX;
                        model.ItemID    = waterlevel.ItemID;
                        PublicBD.db.AddRemData(model);
                        //k++;

                        #region tcp通知界面
                        if ((int)NFOINDEX == 1)
                        {
                            TcpService.TcpServer TS = Server as TcpService.TcpServer;
                            //回复通知界面
                            ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, STCD, "提取到固态数据(有下一帧),数据特征[" + waterlevel.ItemID + "],时间[" + model.TM + "],值[" + model.DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        }
                        #endregion
                        #region udp通知界面
                        if ((int)NFOINDEX == 2)
                        {
                            UdpService.UdpServer US = Server as UdpService.UdpServer;
                            ServiceBussiness.WriteQUIM("UDP", US.ServiceID, STCD, "提取到固态数据(有下一帧),数据特征[" + waterlevel.ItemID + "],时间[" + model.TM + "],值[" + model.DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        }
                        #endregion
                        #region gsm通知界面
                        if ((int)NFOINDEX == 3)
                        {
                            GsmService.GsmServer GS = Server as GsmService.GsmServer;
                            ServiceBussiness.WriteQUIM("GSM", GS.ServiceID, STCD, "提取到固态数据(有下一帧),数据特征[" + waterlevel.ItemID + "],时间[" + model.TM + "],值[" + model.DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        }
                        #endregion
                        #region com通知界面
                        if ((int)NFOINDEX == 4)
                        {
                            ComService.ComServer CS = Server as ComService.ComServer;
                            Service.ServiceBussiness.WriteQUIM("COM", CS.ServiceID, STCD, "提取到固态数据(有下一帧),数据特征[" + waterlevel.ItemID + "],时间[" + model.TM + "],值[" + model.DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text);
                        }
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(DateTime.Now + "06操作异常" + ex.ToString());
            }
        }
        //召测当前数据
        internal static void Process_03(DLYY.Protocol.Solution <DLYY.Model.WaterLevelInfo> solution, Service.ServiceEnum.NFOINDEX NFOINDEX, object Server)
        {
            try{
                string STCD = SetSTCD(solution, NFOINDEX, Server);
                #region //3上报后 中心端不做响应
                //打回复包 103=0067 ---C
                //string Answer = pack.GetAnswer(solution.N, "0067", GetAuto(STCD), GetWaterLevelOrder(STCD), GetRainfallOrder(STCD), GetPowerMode(STCD), GetCenterAddress(STCD), "FFFF", "FFFF", "FFFF");

                //#region tcp回复
                //if ((int)NFOINDEX == 1)
                //{
                //    TcpService.TcpServer TS = Server as TcpService.TcpServer;
                //    List<TcpService.TcpSocket> Ts = TS.Ts;

                //    var tcps = from t in Ts where t.STCD == STCD && t.TCPSOCKET != null select t;
                //    List<TcpService.TcpSocket> Tcps = tcps.ToList<TcpService.TcpSocket>();
                //    //没有该测站信息,不能向下执行,上“生成回复数据”没成功。
                //    if (Answer == null)
                //    {
                //        ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, STCD, "生成回复报出现异常!", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                //        return;
                //    }

                //    if (Tcps.Count() > 0)
                //    {
                //        byte[] sendData = Encoding.ASCII.GetBytes(Answer);
                //        Tcps.First().TCPSOCKET.Send(sendData);
                //        //回复通知界面
                //        ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, STCD, "回复数据", sendData, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                //    }

                //}
                //#endregion
                //#region udp回复
                //if ((int)NFOINDEX == 2)
                //{
                //    UdpService.UdpServer US = Server as UdpService.UdpServer;
                //    List<UdpService.UdpSocket> Us = US.Us;
                //    var udps = from u in Us where u.STCD == STCD && u.IpEndPoint != null select u;

                //    //没有该测站信息,不能向下执行,上“生成回复数据”没成功。
                //    if (Answer == null)
                //    {
                //        ServiceBussiness.WriteQUIM("UDP", US.ServiceID, STCD, "生成回复报出现异常!", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                //        return;
                //    }

                //    if (udps.Count() > 0)
                //    {
                //        byte[] sendData = Encoding.ASCII.GetBytes(Answer);
                //        US.UDPClient.Send(sendData, sendData.Length, udps.First().IpEndPoint);
                //        ServiceBussiness.WriteQUIM("UDP", US.ServiceID, STCD, "回复数据", sendData, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                //    }

                //}
                //#endregion
                #endregion

                if (solution.IsUnpack)
                {
                    int k = 0;
                    foreach (DLYY.Model.WaterLevelInfo waterlevel in solution.Items)
                    {
                        int Milliseconds = (Convert.ToInt32(solution.N, 16) % 10) * 100 + (10 * k++);
                        PublicBD.db.AddRealTimeData(STCD, waterlevel.ItemID, DateTime.Parse(waterlevel.TM).AddMilliseconds(Milliseconds), DateTime.Now, (int)NFOINDEX, decimal.Parse(waterlevel.DATAVALUE));
                        //k++;

                        string ItemName = GetItemName(waterlevel.ItemID);
                        #region tcp通知界面
                        if ((int)NFOINDEX == 1)
                        {
                            TcpService.TcpServer TS = Server as TcpService.TcpServer;
                            //回复通知界面
                            ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, STCD, "召测到当前数据,数据特征[" + ItemName + "-" + waterlevel.ItemID + "],时间[" + waterlevel.TM + "],值[" + waterlevel.DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        }
                        #endregion
                        #region udp通知界面
                        if ((int)NFOINDEX == 2)
                        {
                            UdpService.UdpServer US = Server as UdpService.UdpServer;
                            ServiceBussiness.WriteQUIM("UDP", US.ServiceID, STCD, "召测到当前数据,数据特征[" + ItemName + "-" + waterlevel.ItemID + "],时间[" + waterlevel.TM + "],值[" + waterlevel.DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        }
                        #endregion
                        #region gsm通知界面
                        if ((int)NFOINDEX == 3)
                        {
                            GsmService.GsmServer GS = Server as GsmService.GsmServer;
                            ServiceBussiness.WriteQUIM("GSM", GS.ServiceID, STCD, "召测到当前数据,数据特征[" + ItemName + "-" + waterlevel.ItemID + "],时间[" + waterlevel.TM + "],值[" + waterlevel.DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text);
                        }
                        #endregion
                        #region com通知界面
                        if ((int)NFOINDEX == 4)
                        {
                            ComService.ComServer CS = Server as ComService.ComServer;
                            Service.ServiceBussiness.WriteQUIM("COM", CS.ServiceID, STCD, "召测到当前数据,数据特征[" + ItemName + "-" + waterlevel.ItemID + "],时间[" + waterlevel.TM + "],值[" + waterlevel.DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text);
                        }
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(DateTime.Now + "03操作异常" + ex.ToString());
            }
        }
        public static void Process(IHttpRequest Request, IHttpResponse Response)
        {
            bool     value   = false;
            string   message = LanguageMgr.GetTranslation("Tank.Request.VisualizeRegister.Fail1", new object[0]);
            XElement result  = new XElement("Result");

            //try
            {
                var    para       = Request.Uri.QueryString;
                string name       = para["Name"];
                string pass       = para["Pass"];
                string nickName   = para["NickName"].Trim().Replace(",", "");
                string armColor   = para["Arm"];
                string hairColor  = para["Hair"];
                string faceColor  = para["Face"];
                string ClothColor = para["Cloth"];
                string armID      = para["ArmID"];
                string hairID     = para["HairID"];
                string faceID     = para["FaceID"];
                string ClothID    = para["ClothID"];
                int    sex        = -1;

                sex = (bool.Parse(para["Sex"]) ? 1 : 0);

                using (ServiceBussiness db = new ServiceBussiness())
                {
                    string equip      = db.GetGameEquip();
                    string curr_Equip = (sex == 1) ? equip.Split(new char[]
                    {
                        '|'
                    })[0] : equip.Split(new char[]
                    {
                        '|'
                    })[1];
                    hairID = curr_Equip.Split(new char[]
                    {
                        ','
                    })[0];
                    faceID = curr_Equip.Split(new char[]
                    {
                        ','
                    })[1];
                    ClothID = curr_Equip.Split(new char[]
                    {
                        ','
                    })[2];
                    armID = curr_Equip.Split(new char[]
                    {
                        ','
                    })[3];
                }
                if (Encoding.Default.GetByteCount(nickName) <= 14)
                {
                    if (checkIllegalChar(nickName) || nickName.Contains("\r"))
                    {
                        value   = false;
                        message = LanguageMgr.GetTranslation("Tank.Request.VisualizeRegister.Illegalcharacters", new object[0]);
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(pass) && !string.IsNullOrEmpty(nickName))
                        {
                            using (PlayerBussiness db2 = new PlayerBussiness())
                            {
                                string style = string.Concat(new string[]
                                {
                                    armID,
                                    ",",
                                    hairID,
                                    ",",
                                    faceID,
                                    ",",
                                    ClothID
                                });
                                if (db2.RegisterPlayer(name, pass, nickName, style, style, armColor, hairColor, faceColor, ClothColor, sex, ref message, 30))
                                {
                                    value   = true;
                                    message = LanguageMgr.GetTranslation("Tank.Request.VisualizeRegister.Success", new object[0]);
                                }
                            }
                        }
                    }
                }
                else
                {
                    message = LanguageMgr.GetTranslation("Tank.Request.VisualizeRegister.Long", new object[0]);
                }
            }
            //catch (Exception ex)
            //{
            //VisualizeRegister.log.Error("VisualizeRegister", ex);
            //}
            result.Add(new XAttribute("value", value));
            result.Add(new XAttribute("message", message));
            Response.Write(result.ToString(false));
        }
Beispiel #11
0
 /// <summary>
 /// 从数据库读取出卫星号列表
 /// </summary>
 /// <returns></returns>
 public static List <ComSatellite> GetComSatelliteList()
 {
     return(ServiceBussiness.GetComSatelliteList());
 }