⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrom.cs

📁 gps首先手机要有上网的硬件条件,然后获取某一网络地址映射的GUID ,最后通过调用ConnMgrEstablishConnectionSync函数让手机自己选择某一最 佳路径.
💻 CS
📖 第 1 页 / 共 2 页
字号:
                    ShowGPSData(gpsData.Terminal_Id + "已停止回送数据" + newline());
                    return;
                default:
                    return;
            }

            SaveData(gpsData);
        }


        /// <summary>
        /// 保存接收到的GPS数据
        /// </summary>
        /// <param name="bs"></param>
        private void SaveGPSData(byte[] bs)
        {
            GPSData gpsData = new GPSData();
           
            #region 设置数据

            /*获取编号*/
            gpsData.Terminal_Id = Convert.ToInt32(
                Convert.ToString(bs[5], 16) + Convert.ToString(bs[6], 16) +
                Convert.ToString(bs[7], 16) + Convert.ToString(bs[8], 16));

            /*获取时间*/
            gpsData.AddTime = Convert.ToDateTime(
                Convert.ToString(bs[10], 16) + ":"
                + Convert.ToString(bs[11], 16) + ":"
                + Convert.ToString(bs[12], 16));

            gpsData.OriginalLatitude = Convert.ToDouble(
                Convert.ToInt32(Convert.ToString(bs[13], 16)).ToString("00") + Convert.ToInt32(Convert.ToString(bs[14], 16)).ToString("00")
                + "."
                + Convert.ToInt32(Convert.ToString(bs[15], 16)).ToString("00") + Convert.ToInt32(Convert.ToString(bs[16], 16)).ToString("00")
                );
            /*获取纬度*/
            gpsData.Latitude = Convert.ToString(Math.Truncate(gpsData.OriginalLatitude / 100)) + "°" +
               Convert.ToString(Math.Truncate(Math.IEEERemainder(gpsData.OriginalLatitude, 100))) + "′" +
               Convert.ToString(
                   Math.Round(
                       (Math.IEEERemainder(gpsData.OriginalLatitude, 100) - Math.Truncate(Math.IEEERemainder(gpsData.OriginalLatitude, 100))) * 60, 0, MidpointRounding.AwayFromZero)
                           ) + "″";
             gpsData.OriginalLongitude = Convert.ToDouble(
                Convert.ToInt32(Convert.ToString(bs[17], 16)).ToString("00") + Convert.ToInt32(Convert.ToString(bs[18], 16)).ToString("00") + Convert.ToInt32(Convert.ToString(bs[19], 16)).ToString("00")
                + "." + Convert.ToInt32(Convert.ToString(bs[20], 16)).ToString("00")
                + Convert.ToInt32(Convert.ToString(bs[21], 16)).ToString("00")
                );
            /*获取经度*/
             gpsData.Longitude = Convert.ToString(Math.Truncate(gpsData.OriginalLongitude / 100)) + "°" +
                Convert.ToString(Math.Truncate(Math.IEEERemainder(gpsData.OriginalLongitude, 100))) + "′" +
                Convert.ToString(
                    Math.Round(
                        (Math.IEEERemainder(gpsData.OriginalLongitude, 100) - Math.Truncate(Math.IEEERemainder(gpsData.OriginalLongitude, 100))) * 60, 0, MidpointRounding.AwayFromZero)
                            ) + "″";
                ;//Math.IEEERemainder(gpsData.Latitude, 100) / 60;
           

            /*获取高度*/
            gpsData.Height = Convert.ToDouble(
                Convert.ToInt32(Convert.ToString(bs[22], 16)).ToString("00") + Convert.ToInt32(Convert.ToString(bs[23], 16)).ToString("00")
                + "." + Convert.ToString(bs[24], 16));

            #endregion

            switch (Convert.ToString(bs[9], 16).ToUpper())
            {
                case "89":
                    if (IsShowData)
                    {
                        ShowGPSData(
                            "终端" + Convert.ToInt32(Convert.ToString(bs[5], 16) + Convert.ToString(bs[6], 16) + Convert.ToString(bs[7], 16) + Convert.ToString(bs[8], 16)).ToString() +
                            " 北纬" + gpsData.Latitude +
                            " 东经" + gpsData.Longitude +
                            " 海拔" + gpsData.Height.ToString() +
                            " 时间" + gpsData.AddTime.ToString("hh:mm:ss" + newline())
                            );
                    }
                    break;
                case "4B":
                    ShowGPSData(Convert.ToInt32(
                 Convert.ToString(bs[5], 16) + Convert.ToString(bs[6], 16) +
                 Convert.ToString(bs[7], 16) + Convert.ToString(bs[8], 16)).ToString() + "时间设置成功" + newline());
                    return;
                case "50":
                    ShowGPSData(Convert.ToInt32(
                 Convert.ToString(bs[5], 16) + Convert.ToString(bs[6], 16) +
                 Convert.ToString(bs[7], 16) + Convert.ToString(bs[8], 16)).ToString() + "已停止回送数据" + newline());
                    return;
                default:
                    return;
            }

            SaveData(gpsData);
        }

        private void SaveData(GPSData data)
        {
            Database db = DatabaseFactory.CreateDatabase();
            StringBuilder sb = new StringBuilder();
            sb.Append("INSERT INTO [soft_sailingservice].[dbo].[NS_GPS_Data]");
            sb.Append("([TerminalNumber],[Latitude],[OriginalLatitude],[Longitude],[OriginalLongitude],[Height],[AddTime])");
            sb.Append("VALUES (");
            sb.Append(data.Terminal_Id + ",'");
            sb.Append(data.Latitude + "',");
            sb.Append(data.OriginalLatitude + ",'");
            sb.Append(data.Longitude + "',");
            sb.Append(data.OriginalLongitude + ",");
            sb.Append(data.Height + ",'");
            sb.Append(data.AddTime + "')");
            db.ExecuteNonQuery(CommandType.Text, sb.ToString());
        }

        #region 按钮事件处理

        private void MainFrom_Load(object sender, EventArgs e)
        {
            f_BG.DoWork += new DoWorkEventHandler(bgWorkerAnalyze_DoWork);
            f_BG.RunWorkerAsync();
            toolStripButtonOpenPort.Enabled = true;
            toolStripButtonClosePort.Enabled = false;
        }

        private void toolStripButtonConfig_Click(object sender, EventArgs e)
        {
            if (toolStripButtonClosePort.Enabled != false)
            {
                MessageBox.Show("请先关闭串口\n更改配置前先关闭串口", "提示");
                return;
            }
            ConfigForm form = new ConfigForm();
            if (form.ShowDialog() == DialogResult.OK)
            {
                ports = new System.IO.Ports.SerialPort[SerialPortConfig.Ports.Count];
                for (int i = 0; i < SerialPortConfig.Ports.Count; i++)
                {
                    ports[i] = new System.IO.Ports.SerialPort(SerialPortConfig.Ports[i].ToString());
                    ports[i].BaudRate = SerialPortConfig.BaudRate;
                    ports[i].Parity = SerialPortConfig.Parity;
                    ports[i].StopBits = SerialPortConfig.StopBits;
                    ports[i].DataBits = SerialPortConfig.DataBits;
                    ports[i].ReceivedBytesThreshold = 29;
                    //ports[i].ReadTimeout = 50;
                }
            }
        }

        private void toolStripButtonOpenPort_Click(object sender, EventArgs e)
        {
            if (SerialPortConfig.Ports.Count == 0)
            {
                MessageBox.Show("当前没有已选择串口\n请配置串口","提示");
                return;
            }
         
            OpenPort();

            tbPortState.Text += "已启动接收数据……" + newline();
           
            toolStripButtonOpenPort.Enabled = false;
            toolStripButtonClosePort.Enabled = true;
        }

        private void toolStripButtonClosePort_Click(object sender, EventArgs e)
        {
            tbPortState.Text += "已停止接收数据" + newline();

            ClosePort();

            toolStripButtonOpenPort.Enabled = true;
            toolStripButtonClosePort.Enabled = false;
        }
        private void btnReceiveEnd_Click(object sender, EventArgs e)
        {
            //btnReceiveEnd.Enabled = false;
            //btnRecevieStart.Enabled = true;
            tbPortState.Text += "已停止接收数据" + newline();
            for (int i = 0; i < SerialPortConfig.Ports.Count; i++)
            {
                ports[i].DataReceived -= new System.IO.Ports.SerialDataReceivedEventHandler(SPort_DataReceived);
            }
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            //btnSave.Enabled = false;
            //StreamWriter sw = File.AppendText("ReceiveData.txt");
            //sw.Write(tbView.Text);
            //sw.Flush();
            //sw.Close();
            //MessageBox.Show("状态信息保存成功","提示");
            //btnSave.Enabled = true;
        }

        private void toolStripButtonSetTime_Click(object sender, EventArgs e)
        {
            SetTimeForm form = new SetTimeForm(ports);
            form.ShowDialog();
        }

        private void toolStripButtonEchoplex_Click(object sender, EventArgs e)
        {
            EchoplexOperationForm form = new EchoplexOperationForm(ports);
            form.ShowDialog();
        }

        private void toolStripButtonDBConfig_Click(object sender, EventArgs e)
        {
            DBConfigForm form = new DBConfigForm();
            form.ShowDialog();
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            tbPortState.Text = "";
            tbView.Text = "";
        }

        private void chkShowData_CheckedChanged(object sender, EventArgs e)
        {
            
            if (chkShowData.Checked)
            {
                IsShowData = true;
            }
            else
            {
                IsShowData = false;
            }
        }

        #endregion
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -