public static void GetComTimeFor4()
        {
            foreach (ComServer item in Service.ServiceControl.com)
            {
                if (item.sp.IsOpen)
                {
                    lock (item.sp)
                    {
                        long   satellite = 0;
                        string Satellite = "000000";
                        if (long.TryParse(item.Satellite, out satellite))
                        {
                            Satellite = satellite.ToString("X").PadLeft(6, '0');
                        }

                        byte[] a       = EnCoder.HexStrToByteArray("24534A5343000D" + Satellite + "0000");
                        byte   b       = xor(a);         //异或校验
                        byte[] vBuffer = copybyte(a, b); //追加异或校验

                        //ComBussiness.XorSAT(ref vBuffer);
                        item.sp.Write(vBuffer, 0, vBuffer.Length);


                        Service.ServiceControl.LogInfoToTxt(Service.ServiceEnum.NFOINDEX.COM, "", vBuffer, "ASC");
                        Service.ServiceControl.LogInfoToTxt(Service.ServiceEnum.NFOINDEX.COM, "", vBuffer);
                    }
                }
            }
        }
Exemple #2
0
 // void OnGUI () {
 //  if(isShow) GUI.TextArea(PingRect,((int)ping).ToString(),0,GUIStyle.none);
 // }
 private void SendPingMessage(object state)
 {
     if (NetWorkScript.isConnected && isShow)
     {
         Timetemp = CloFunc.GetTimeNow();
         ClQueue.ReadyForSend(EnCoder.PingMessage());
     }
 }
Exemple #3
0
        public void PacketArrived(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)
                {
                    try
                    {
                        //注册&透传
                        Service.ServiceBussiness.RemoteCommand(trd.Data);
                        //Service.ServiceBussiness.Registered30(urd.Data);

                        //ASCII To String
                        string data = EnCoder.ByteArrayToHexStr(trd.Data); //Encoding.ASCII.GetString(trd.Data);
                        if (pd.GetDataState(data) == "01")
                        {
                            string STCD = pd.GetCode(data);
                            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(data, 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());
                    }
                }
            }
        }
Exemple #4
0
        private void DoCompression(object sender, RoutedEventArgs e)
        {
            OpenFileDialog win = new OpenFileDialog();

            if (win.ShowDialog() == true)
            {
                var     filepath = win.FileName;
                EnCoder enCoder  = new EnCoder();
                enCoder.LoadSource(filepath);
                enCoder.DoCoder();
            }
        }
Exemple #5
0
 public void ClientStart()
 {
     server.Close();
     client.Close();
     server = new NetFileTSever.NFTServer();
     client = new NetFileTClient.NFTClient();
     server.run(Clientport);
     client.ConnectToIp(Serverip, Serverport);
     while (client.Transmission(EnCoder.StartMessage()) != 0)
     {
         Debug.Log("retry");
     }
     NetWorkScript.isConnected = true;
 }
        /// <summary>
        /// 信道启动时将命令读取到命令列表
        /// </summary>
        public static void ToQcsd()
        {
            var cmds = from cmd in ServiceControl.LC where cmd.SERVICETYPE == "COM" select cmd;

            foreach (var c in ServiceControl.com)
            {
                foreach (var item in cmds)
                {
                    if (c != null)
                    {
                        ComService.ComBussiness.WriteCsdQ(c, item.STCD, EnCoder.HexStrToByteArray(item.Data), item.CommandID);
                    }
                }
            }
        }
        /// <summary>
        /// 信道启动时将命令读取到命令列表
        /// </summary>
        public static void ToQtsd()
        {
            //命令本地列表中删除超时记录
            var cmds = from c in ServiceControl.LC where c.SERVICETYPE == ServiceEnum.NFOINDEX.TCP.ToString() && c.STATE == -1 && c.DATETIME < DateTime.Now.AddSeconds(-30) select c;

            foreach (var items in cmds)
            {
                List <Command> lc = ServiceBussiness.RemoveListCommand(items.STCD, Service.ServiceEnum.NFOINDEX.TCP, items.CommandID, -1);
                foreach (var item in lc)
                {
                    PublicBD.db.AddDataCommand(item.STCD, item.CommandID, item.DATETIME, DateTime.Now, item.Data, (int)Service.ServiceEnum.NFOINDEX.TCP, -1);
                }
            }

            cmds = from c in ServiceControl.LC where c.SERVICETYPE == ServiceEnum.NFOINDEX.TCP.ToString() && c.STATE == -2 && c.DATETIME < DateTime.Now.AddSeconds(-30) select c;
            foreach (var items in cmds)
            {
                List <Command> lc = ServiceBussiness.RemoveListCommand(items.STCD, Service.ServiceEnum.NFOINDEX.TCP, items.CommandID, -2);
                foreach (var item in lc)
                {
                    PublicBD.db.AddDataCommand(item.STCD, item.CommandID, item.DATETIME, DateTime.Now, item.Data, (int)Service.ServiceEnum.NFOINDEX.TCP, -2);
                }
            }

            cmds = from cmd in ServiceControl.LC where cmd.SERVICETYPE == "TCP" select cmd;
            foreach (var t in ServiceControl.tcp)
            {
                foreach (var item in cmds)
                {
                    if (t != null)
                    {
                        #region 编码
                        byte[] EncoderData = null;
                        if (ServiceControl.wrx.XMLObj.HEXOrASC == "HEX")
                        {
                            EncoderData = EnCoder.HexStrToByteArray(item.Data);
                        }
                        if (ServiceControl.wrx.XMLObj.HEXOrASC == "ASC")
                        {
                            EncoderData = Encoding.ASCII.GetBytes(item.Data);
                        }
                        #endregion

                        TcpService.TcpBussiness.WriteTsdQ(t, item.STCD, EncoderData, item.CommandID);
                    }
                }
            }
        }
        /// <summary>
        /// 将收到数据放入数据队列
        /// </summary>
        /// <param name="CS">COM服务</param>
        /// <param name="senddatetime">发送时间</param>
        /// <param name="bt">数据</param>
        public static void WriteCrdQ(ComServer CS, string Satellite, byte[] bt)
        {
            ConcurrentQueue <ComReceivedData> Qcrd = CS.CQ.Qcrd;
            ComReceivedData crd = new ComReceivedData();

            crd.SATELLITE = Satellite;
            crd.Data      = bt;
            /////////////////////////测试输出
            Console.Write(EnCoder.ByteArrayToHexStr(bt));
            if (bt.Length > 0)
            {
                lock (Qcrd)
                {
                    Qcrd.Enqueue(crd);
                }
            }
        }
        /// <summary>
        /// 信道启动时将命令读取到命令列表
        /// </summary>
        public static void ToQusd()
        {
            //命令本地列表中删除超时记录
            var            cmds = from c in ServiceControl.LC where c.SERVICETYPE == ServiceEnum.NFOINDEX.UDP.ToString() && c.STATE == -1 && c.DATETIME < DateTime.Now.AddSeconds(-30) select c;
            List <Command> CMDS = cmds.ToList <Command>();

            foreach (var items in CMDS)
            {
                var            lc = ServiceBussiness.RemoveListCommand(items.STCD, Service.ServiceEnum.NFOINDEX.UDP, items.CommandID, -1);
                List <Command> LC = lc.ToList <Command>();
                foreach (var item in LC)
                {
                    PublicBD.db.AddDataCommand(item.STCD, item.CommandID, item.DATETIME, DateTime.Now, item.Data, (int)Service.ServiceEnum.NFOINDEX.UDP, -1);
                }
            }

            cmds = from c in ServiceControl.LC where c.SERVICETYPE == ServiceEnum.NFOINDEX.UDP.ToString() && c.STATE == -2 && c.DATETIME < DateTime.Now.AddSeconds(-30) select c;
            CMDS = cmds.ToList <Command>();
            foreach (var items in CMDS)
            {
                List <Command> lc = ServiceBussiness.RemoveListCommand(items.STCD, Service.ServiceEnum.NFOINDEX.UDP, items.CommandID, -2);
                List <Command> LC = lc.ToList <Command>();
                foreach (var item in LC)
                {
                    PublicBD.db.AddDataCommand(item.STCD, item.CommandID, item.DATETIME, DateTime.Now, item.Data, (int)Service.ServiceEnum.NFOINDEX.UDP, -2);
                }
            }

            cmds = from cmd in ServiceControl.LC where cmd.SERVICETYPE == "UDP" select cmd;
            CMDS = cmds.ToList <Command>();
            foreach (var u in ServiceControl.udp)
            {
                foreach (var item in CMDS)
                {
                    if (u != null)
                    {
                        UdpService.UdpBussiness.WriteUsdQ(u, item.STCD, EnCoder.HexStrToByteArray(item.Data), item.CommandID);
                    }
                }
            }
        }
Exemple #10
0
 public void Start()
 {
     if (isServer)
     {
         server = new NetFileTSever.NFTServer();
         client = new NetFileTClient.NFTClient();
         server.run(Serverport);
     }
     else
     {
         server = new NetFileTSever.NFTServer();
         client = new NetFileTClient.NFTClient();
         server.run(Clientport);
         client.ConnectToIp(Serverip, Serverport);
         while (client.Transmission(EnCoder.StartMessage()) != 0)
         {
             Debug.Log("retry");
         }
         netWorkTest.isConnected = true;
     }
 }
        public static void GetComStateFor4()
        {
            foreach (ComServer item in Service.ServiceControl.com)
            {
                if (item.sp.IsOpen)
                {
                    lock (item.sp)
                    {
                        long   satellite = 0;
                        string Satellite = "000000";
                        if (long.TryParse(item.Satellite, out satellite))
                        {
                            Satellite = satellite.ToString("X").PadLeft(6, '0');
                        }



                        //XTZJ
                        byte[] a       = EnCoder.HexStrToByteArray("2458545A4A000D" + Satellite + "0000");
                        byte   b       = xor(a);         //异或校验
                        byte[] vBuffer = copybyte(a, b); //追加异或校验

                        //byte[] enter = ASCIIEncoding.ASCII.GetBytes(item.sp.NewLine); //加回车
                        //Array.Resize(ref vBuffer, vBuffer.Length + enter.Length);
                        //Array.Copy(enter, 0, vBuffer, vBuffer.Length - enter.Length, enter.Length);

                        //ComBussiness.XorSAT(ref vBuffer);
                        item.sp.Write(vBuffer, 0, vBuffer.Length);


                        Service.ServiceControl.LogInfoToTxt(Service.ServiceEnum.NFOINDEX.COM, "", vBuffer, "ASC");
                        Service.ServiceControl.LogInfoToTxt(Service.ServiceEnum.NFOINDEX.COM, "", vBuffer);
                    }
                }
            }
        }
Exemple #12
0
 public void FixedUpdate()
 {
     inputAxis = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
     //netWorkTest.client.Transmission(EnCoder.MoveMessage(inputAxis));
     ClQueue.ReadyForSend(EnCoder.MoveMessage(inputAxis.normalized, this.transform.position, moveSpeed));
 }
        public static List <ComReceivedData> SubpackageFor4(ComServer CS, byte[] data)
        {
            List <ComReceivedData> Lcrd = new List <ComReceivedData>();
            string str = EnCoder.ByteArrayToHexStr(data);

            if (str.Length >= 10)
            {
                string temp = str.Substring(0, 10);
                if (temp == "2454585858")  //$TXXX   通讯信息
                {
                    //报文内容长度
                    long l = Convert.ToInt64(str.Substring(32, 4), 16);
                    //用户地址
                    string RevSatellite = Convert.ToInt64(str.Substring(14, 6), 16).ToString();
                    //发信方地址
                    string SendSatellite = Convert.ToInt64(str.Substring(22, 6), 16).ToString();
                    //时间
                    string Time = Convert.ToInt64(str.Substring(28, 2), 16).ToString() + "时" + Convert.ToInt64(str.Substring(30, 2), 16).ToString() + "分";

                    ComReceivedData crd = new ComReceivedData();
                    crd.SATELLITE = SendSatellite;

                    //从原始数据报里copy报文
                    byte[] vBuffer1 = new byte[l / 8];

                    Array.Copy(data, 18, vBuffer1, 0, l / 8);
                    crd.Data = vBuffer1;
                    Lcrd.Add(crd);


                    //IsCOUT = true;
                    //反馈给界面信息
                    ServiceBussiness.WriteQUIM(ServiceEnum.NFOINDEX.COM.ToString(), CS.ServiceID, "接收卫星", "接收数据,用户地址:" + RevSatellite + ",发信方地址:" + SendSatellite + ",时间" + Time + ",数据报长度:" + l, new byte[] { }, ServiceEnum.EnCoderType.HEX, ServiceEnum.DataType.Text);
                }
                else if (temp == "245A4A5858") //$ZJXX  自检信息
                {
                    string Explain = "";
                    //用户地址
                    string RevSatellite = Convert.ToInt64(str.Substring(14, 6), 16).ToString();
                    //IC卡状态
                    string ICState = str.Substring(20, 2);
                    if (ICState == "00")//正常
                    {
                        Explain += "IC卡状态:正常\n";
                    }
                    else //异常
                    {
                        Explain += "IC卡状态:异常\n";
                    }
                    CS.CStateFor4.ICState = ICState;

                    //硬件状态
                    string HardwareState = str.Substring(22, 2);
                    if (HardwareState == "00")//正常
                    {
                        Explain += "                                                   硬件状态:正常\n";
                    }
                    else //异常
                    {
                        Explain += "                                                   硬件状态:异常\n";
                    }
                    CS.CStateFor4.HardwareState = HardwareState;

                    //电量百分比
                    string Electricity = str.Substring(24, 2);
                    Electricity = Convert.ToInt64(Electricity, 16).ToString();
                    Explain    += "                                                   电量:" + Electricity + "%\n";
                    CS.CStateFor4.Electricity = Electricity;

                    //入站状态
                    string Inbound = str.Substring(26, 2);
                    if (Inbound == "00")//正常
                    {
                    }
                    else //异常
                    {
                    }

                    string Power = str.Substring(28, 12);
                    CS.CStateFor4.Power = Power;
                    string[] bs = new string[] { "<-158dBW", "-156~-157dBW", "-154~-155dBW", "-152~-153dBW", ">-152dBW" };
                    for (int i = 0; i < 6; i++)
                    {
                        string s = Power.Substring(2 * i, 2);
                        if (s == "00")
                        {
                            Explain += "                                                   波束" + (i + 1) + "#功率:" + bs[0] + "\n";
                        }
                        else if (s == "01")
                        {
                            Explain += "                                                   波束" + (i + 1) + "#功率:" + bs[1] + "\n";
                        }
                        else if (s == "02")
                        {
                            Explain += "                                                   波束" + (i + 1) + "#功率:" + bs[2] + "\n";
                        }
                        else if (s == "03")
                        {
                            Explain += "                                                   波束" + (i + 1) + "#功率:" + bs[3] + "\n";
                        }
                        else if (s == "04")
                        {
                            Explain += "                                                   波束" + (i + 1) + "#功率:" + bs[4] + "\n";
                        }
                    }

                    CS.CStateFor4.DATATIME = DateTime.Now;

                    //将以上解析信息反馈到界面时注销下行
                    //Explain = " 服务器与卫星接收设备通讯正常";

                    //反馈给界面信息
                    ServiceBussiness.WriteQUIM(ServiceEnum.NFOINDEX.COM.ToString(), CS.ServiceID, RevSatellite, "接收到状态信息\n" + Explain, new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text);
                }
                else if (temp == "24544A5858") //$SJXX 时间信息
                {
                    //用户地址
                    string RevSatellite = Convert.ToInt64(str.Substring(14, 6), 16).ToString();
                    //日期时间
                    string Date = Convert.ToInt64(str.Substring(20, 4), 16).ToString() + "年" + Convert.ToInt64(str.Substring(24, 2), 16).ToString() + "月" + Convert.ToInt64(str.Substring(26, 2), 16).ToString() + "日";
                    string Time = Convert.ToInt64(str.Substring(28, 2), 16).ToString() + "时" + Convert.ToInt64(str.Substring(30, 2), 16).ToString() + "分" + Convert.ToInt64(str.Substring(32, 2), 16).ToString() + "秒";

                    //反馈给界面信息
                    string Explain = "用户地址" + RevSatellite + ",接收时间信息" + "[" + Date + " " + Time + "]";
                    //ServiceBussiness.WriteQUIM(ServiceEnum.NFOINDEX.COM.ToString(), CS.ServiceID, "接收卫星", "接收数据" + item, new byte[] { }, ServiceEnum.EnCoderType.HEX, ServiceEnum.DataType.Text);

                    ServiceBussiness.WriteQUIM(ServiceEnum.NFOINDEX.COM.ToString(), CS.ServiceID, "", Explain, new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text);
                }
            }



            return(Lcrd);
        }