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

📄 gpssoftware.cs

📁 c#编写的带控件GPS接收程序
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace GpsSerialPortProgram
{
    public partial class GpsSoftware : Form
    {
        SerialPort gpsPort;
        string currentData;
        EventHandler updateDataEventHandler;

        public GpsSoftware()
        {
            InitializeComponent();
            portSelections.SelectedIndex = 0;
            rateSelections.SelectedIndex = 0;
            gpsPort = new SerialPort();

            updateDataEventHandler = new EventHandler(UpdataGpsData);
        }

        private void UpdataGpsData(object sender, EventArgs e)
        {
            gpsInfo.Text += currentData;
            if (gpsInfo.Text.Length > 5000)
            {
                gpsInfo.Text = gpsInfo.Text.Substring(5000, gpsInfo.Text.Length - 5000);
                System.GC.Collect();
            }
        }

        private void scanPort_Click(object sender, EventArgs e)
        {
            int index = 0;
            for (int i = 0; i < 10;i++ )
            {
                portSelections.SelectedIndex = i;
                //MessageBox.Show((string)portSelections.Text);
                switch (gpsPort.ScanPort(portSelections.Text, int.Parse(rateSelections.Text)))
                {
                    case openPortResult.OpenFailed:
                        {
                            gpsInfo.Text += portSelections.Text + "无法打开串口!\r\n";
                            break;
                        }
                    case openPortResult.None:
                        {
                            gpsInfo.Text += portSelections.Text + "无GPS信号!\r\n";
                            break;
                        }
                    case openPortResult.FindGps:
                        {
                            gpsInfo.Text += portSelections.Text + "发现GPS信号!\r\n";
                            index = i;
                            break;
                        }
                }
            }
            portSelections.SelectedIndex = index;
        }

        private void open_Click(object sender, EventArgs e)
        {
            gpsInfo.Text = "正在打开该串口!\r\n";
            gpsPort.Open(portSelections.Text,int.Parse(rateSelections.Text));
            if (gpsPort.Opened)
            {
                gpsInfo.Text += "串口已打开,等待接收数据!\r\n";
                gpsPort.UpdateDataEventHandler += new CurrentDataEventHandler(gpsPort_UpdateDataEventHandler);
                gpsPort.Read();
            }
        }

        void gpsPort_UpdateDataEventHandler(object sender, NewDataEventArgs e)
        {
            currentData = e.CurrentData;
            Invoke(updateDataEventHandler);
            //throw new Exception("The method or operation is not implemented.");
        }

        private void close_Click(object sender, EventArgs e)
        {
            if (gpsPort.Opened)
            {
                gpsPort.Close();
                gpsInfo.Text += "串口已关闭!\r\n";
            }
        }

        private void exit_Click(object sender, EventArgs e)
        {
            if (gpsPort.Opened)
            {
                gpsPort.Close();
            }
            Close();
        }

        private void read_Click(object sender, EventArgs e)
        {
            Byte[] buffer=new Byte[512];
            gpsPort.Read(ref buffer);
            gpsInfo.Text += Encoding.ASCII.GetString(buffer, 0, buffer.Length) + "\r\n";
        }


        #region 读取GPS
        /*private void opengps(string ComPoint)
        {
            gpsPort.PortNum = ComPoint;
            gpsPort.BaudRate = 4800;
            gpsPort.ByteSize = 8;
            gpsPort.Parity = 0;
            gpsPort.StopBits = 1;
            gpsPort.ReadTimeout = 1000;

            try
            {
                if (gpsPort.Opened)
                {
                    gpsPort.Close();
                    gpsPort.Open(compor);
                    timer1.Enabled = true;
                }
                else
                {
                    gpsPort.Open();//打开串口
                    timer1.Enabled = true;
                }

            }
            catch
            {
                //    MessageBox.Show("读取GPS错误!" ,"系统提示");

            }
        }
        private void timer1_Tick(object sender, System.EventArgs e)
        {

            if (gpsPort.Opened)
                gpsread();
            else
                gpsPort.Open();//打开串口
        }

        private void gpsread()
        {
            byte[] aa = gpsPort.Read(512);
            string gpsinfo = System.Text.Encoding.ASCII.GetString(aa, 0, aa.Length);
            GetParam.GpsLongitude = gpsPort.GetGPS(gpsinfo, "X");
            GetParam.GpsLatitude = gpsPort.GetGPS(gpsinfo, "Y");
            GetParam.GpsSpeed = gpsPort.GetGPS(gpsinfo, "V");
            GetParam.GpsTime = gpsPort.GetGPS(gpsinfo, "T");
            if (GetParam.GpsLongitude == "-1")
                GetParam.GpsState = "0";
            if (GetParam.GpsLongitude == "V" && GetParam.GpsLatitude == "V")
                GetParam.GpsState = "0";
            if (GetParam.GpsLongitude != "-1" && GetParam.GpsLongitude != "V")
                GetParam.GpsState = "1";

            GetParam.GpsLongitude = (GetParam.GpsLongitude == "V") ? "0" : GetParam.GpsLongitude;
            GetParam.GpsLatitude = (GetParam.GpsLatitude == "V") ? "0" : GetParam.GpsLatitude;
            GetParam.GpsSpeed = (GetParam.GpsSpeed == "V") ? "0" : GetParam.GpsSpeed;
            GetParam.GpsTime = (GetParam.GpsTime == "V") ? "0" : GetParam.GpsTime;

        }
        private void GpsClose()
        {
            timer1.Enabled = false;
            if (gpsPort.Opened)
                gpsPort.Close();
        }*/
        #endregion



    }
}

⌨️ 快捷键说明

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