Ejemplo n.º 1
0
        /// <summary>
        /// 解析RTKBox配置信息协议
        /// </summary>
        /// <param name="sp">当前串口</param>
        /// <param name="IN19">19数据实体类</param>
        public static void ParseDataIN19(SerialPort sp, Model.INF_B562_0119 IN19)
        {
            byte[] Data = new byte[sp.BytesToRead];
            sp.Read(Data, 0, Data.Length);
            sp.DiscardInBuffer();
            string str = null;

            for (int i = 0; i < Data.Length; i++)
            {
                str += Data[i].ToString("X2");
            }
            System.Windows.Forms.MessageBox.Show(str);
            for (int i = 0; i < Data.Length - 6; i++)
            {
                if ((Data[i] == 0xB5) && (Data[i + 1] == 0x62))
                {
                    if ((Data[i + 2] == 0x01) && (Data[i + 3] == 0x19))
                    {
                        ushort len = BitConverter.ToUInt16(Data, i + 4);
                        if (Data.Length - i - 8 >= len)
                        {
                            byte[] buffer = Data.Skip(i + 2).Take(len + 6).ToArray();
                            if (Protocol_UBX.Checksum(buffer))
                            {
                                byte[] payload = buffer.Skip(4).Take(len).ToArray();
                                IN19 = Protocol_UBX.RTKBoxOptions(payload);
                                break;
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 打开串口
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOpenPort_Click(object sender, EventArgs e)
        {
            sp = new SerialPort();
            int Baudrate;

            if ((!string.IsNullOrEmpty(comboBoxPort.Text)) && (int.TryParse(comboBoxBaudrate.Text, out Baudrate)))
            {
                Controller.Global.OpenPort(sp, comboBoxPort.Text, Baudrate);
                Controller.Global.Order(sp, "SET", 1);//进入设置模式读取设置
                Thread.Sleep(400);
                ThreadStart ThS = new ThreadStart(delegate()
                {
                    IN19 = new Model.INF_B562_0119();
                    Stf  = new Model.SetInf();
                    Controller.Global.ParseDataIN19(sp, IN19);
                    Controller.Global.In19TOSetInf(IN19, Stf);
                    BeginInvoke((EventHandler)(delegate
                    {
                        labProtocol.Text = Stf.Outputtype;
                        labWoringband.Text = Stf.Rtkrate;
                        labPosFormat.Text = "经纬度";
                        labGNSSmode.Text = Stf.Gnsstype;
                        labRTKmode.Text = Stf.Rtkmode;
                        labRTKoutBdRate.Text = Stf.Rtkoutputrate;
                        labTFmode.Text = Stf.enableFlag;
                        labNetID.Text = Stf.NetID;
                        labchanel.Text = Stf.channels;
                        SetTable(IN19.Stationtype);
                    }));
                });
                Thread thd = new Thread(ThS);
                thd.Start();
                sp.DataReceived += new SerialDataReceivedEventHandler(Interpret);
            }
            else
            {
                MessageBox.Show("输入格式有误", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 设置信息19协议数据转文本信息
        /// </summary>
        /// <param name="In19"></param>
        /// <param name="Stf"></param>
        public static void In19TOSetInf(Model.INF_B562_0119 In19, Model.SetInf Stf)
        {
            switch (In19.Stationtype)
            {
            case 0: Stf.Stationtype = "基准站";
                break;

            case 1: Stf.Stationtype = "流动站";
                break;
            }
            switch (In19.Outputtype)
            {
            case 0: Stf.Outputtype = "NMEA";
                break;

            case 1: Stf.Outputtype = "UBX";
                break;

            case 2: Stf.Outputtype = "SPB";
                break;

            case 3: Stf.Outputtype = "PIX";
                break;

            case 4: Stf.Outputtype = "JIY";
                break;

            case 5: Stf.Outputtype = "ZEROTECH";
                break;

            case 6: Stf.Outputtype = "DJI";
                break;
            }
            switch (In19.Rtkrate)
            {
            case 0: Stf.Rtkrate = "1HZ";
                break;

            case 1:
                Stf.Rtkrate = "2HZ";
                break;

            case 2:
                Stf.Rtkrate = "4HZ";
                break;

            case 3:
                Stf.Rtkrate = "5HZ";
                break;

            case 4:
                Stf.Rtkrate = "10HZ";
                break;
            }
            switch (In19.Gnsstype)
            {
            case 0: Stf.Gnsstype = "GPS";
                break;

            case 1: Stf.Gnsstype = "GPS+北斗";
                break;
            }
            switch (In19.Rtkmode)
            {
            case 0: Stf.Rtkmode = "静态";
                break;

            case 1: Stf.Rtkmode = "动态";
                break;

            case 2: Stf.Rtkmode = "测向";
                break;
            }
            switch (In19.Rtkoutputrate)
            {
            case 0: Stf.Rtkoutputrate = "9600";
                break;

            case 1: Stf.Rtkoutputrate = "19200";
                break;

            case 2:
                Stf.Rtkoutputrate = "38400";
                break;

            case 3:
                Stf.Rtkoutputrate = "57600";
                break;

            case 4:
                Stf.Rtkoutputrate = "115200";
                break;
            }
            switch (In19.enableFlag)
            {
            case 0: Stf.enableFlag = "关闭";
                break;

            case 1:
                Stf.enableFlag = "打开";
                break;
            }
            Stf.NetID    = In19.NetID.ToString();
            Stf.channels = In19.channels.ToString();
        }