📄 gpssoftware.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 + -