using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace GPS
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
string Latitude;
string Longitude;
private void MainForm_Load(object sender, EventArgs e)
{
cmbPort.SelectedIndex = 0;
}
private void btnStart_Click(object sender, EventArgs e)
{
serialPort1.PortName = cmbPort.SelectedItem.ToString();
try
{
serialPort1.Open();
txtPortStatus.Text = "";
}
catch (Exception ex)
{
txtData.Text = ex.Message;
}
if (serialPort1.IsOpen)
{
txtPortStatus.Text = "開啟";
txtQuality.Text = "無";
txtSTQty.Text = "0";
txtSeaLevel.Text = "0";
cmbPort.Enabled = false;
btnStart.Enabled = false;
btnStop.Enabled = true;
timer1.Enabled = true;
}
else
{
timer1.Enabled = false;
txtPortStatus.Text = "關閉";
txtQuality.Text = "無";
txtSTQty.Text = "0";
txtSeaLevel.Text = "0";
cmbPort.Enabled = true;
btnStart.Enabled = true;
btnStop.Enabled = false;
}
}
private void btnStop_Click(object sender, EventArgs e)
{
try
{
serialPort1.Close();
txtPortStatus.Text = "";
}
catch (Exception ex)
{
txtPortStatus.Text = ex.Message;
}
if (serialPort1.IsOpen)
{
txtPortStatus.Text = "開啟";
txtQuality.Text = "無";
txtSTQty.Text = "0";
txtSeaLevel.Text = "0";
cmbPort.Enabled = false;
btnStart.Enabled = false;
btnStop.Enabled = true;
timer1.Enabled = true;
}
else
{
timer1.Enabled = false;
txtPortStatus.Text = "關閉";
txtQuality.Text = "無";
txtSTQty.Text = "0";
txtSeaLevel.Text = "0";
cmbPort.Enabled = true;
btnStart.Enabled = true;
btnStop.Enabled = false;
btn_upload.Enabled = false;
}
}
string[] GPS = new string[15];
int j = 0;
private void timer1_Tick(object sender, EventArgs e)
{
GPS[0] = "$GPGGA,095031.254,2402.39046,N,12136.35892,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[1] = "$GPGGA,095031.254,2402.38866,N,12136.34086,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[2] = "$GPGGA,095031.254,2402.38458,N,12136.32412,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[3] = "$GPGGA,095031.254,2402.37456,N,12136.32412,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[4] = "$GPGGA,095031.254,2402.3622,N,12136.3222,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[5] = "$GPGGA,095031.254,2402.35518,N,12136.30546,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[6] = "$GPGGA,095031.254,2402.35044,N,12136.2913,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[7] = "$GPGGA,095031.254,2402.34396,N,12136.27906,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[8] = "$GPGGA,095031.254,2402.34108,N,12136.2604,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[9] = "$GPGGA,095031.254,2402.33694,N,12136.24432,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[10] = "$GPGGA,095031.254,2402.3616,N,12136.2385,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[11] = "$GPGGA,095031.254,2402.3922,N,12136.22566,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[12] = "$GPGGA,095031.254,2402.4222,N,12136.21342,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[13] = "$GPGGA,095031.254,2402.44626,N,12136.2076,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
GPS[14] = "$GPGGA,095031.254,2402.48274,N,12136.21276,E,1,07,7,0,123.9,M,15.0,M,0.0,0000*74";
if (serialPort1.IsOpen) //serialPort1.ReadExisting();
{
if(j>14) j=0;
string GPSData = GPS[j];
j++;
txtData.Text = GPSData;
string[] gpsArr = GPSData.Split('$');
for (int i = 0; i < gpsArr.Length; i++)
{
string strTemp = gpsArr[i];
string[] lineArr = strTemp.Split(',');
if (lineArr[0] == "GPGGA")
{
try
{
//Latitude
Double dLat = Convert.ToDouble(lineArr[2]);
dLat = dLat / 100;
string[] lat = dLat.ToString().Split('.');
string la =(((Convert.ToDouble(lat[1]) / 60)*10000)).ToString("#");
for (int a = 0; a < lat[1].Length; a++)
{
if (lat[1].Substring(a, 1) == "0")
{
la = "0" + la;
}
else
{
break;
}
}
Latitude = lat[0].ToString() + "." + la.Substring(0,6);
//Longitude
Double dLon = Convert.ToDouble(lineArr[4]);
dLon = dLon / 100;
string[] lon = dLon.ToString().Split('.');
string lo = (((Convert.ToDouble(lon[1]) / 60)*10000)).ToString("#");
for (int b = 0; b < lon[1].Length; b++)
{
if (lon[1].Substring(b, 1) == "0")
{
lo = "0" + lo;
}
else
{
break;
}
}
Longitude = lon[0].ToString() + "." + lo.Substring(0,6);
//Display
txtLatitude.Text = Latitude;
txtLongitude.Text = Longitude;
txtSTQty.Text = lineArr[7];
txtSeaLevel.Text = lineArr[9];
switch (lineArr[6])
{
case "0":
txtQuality.Text = "品質太差";
break;
case "1":
txtQuality.Text = "GPS fix(SPS)";
break;
case "2":
txtQuality.Text = "DGPS fix";
break;
case "3":
txtQuality.Text = "PPS fix";
break;
case "4":
txtQuality.Text = "即時性動態測量";
break;
case "5":
txtQuality.Text = "Float RTK";
break;
case "6":
txtQuality.Text = "Estimated";
break;
case "7":
txtQuality.Text = "手動輸入模式";
break;
case "8":
txtQuality.Text = "Simulation mode";
break;
default:
txtQuality.Text = "無";
break;
}
btn_upload.Enabled = true;
}
catch
{
txtLatitude.Text = "GPS 訊號不足";
txtLongitude.Text = "GPS 訊號不足";
txtQuality.Text = "無";
txtSTQty.Text = "0";
txtSeaLevel.Text = "0";
btn_upload.Enabled = false;
}
}
}
Int32 port = 2500;
String message = txtLatitude.Text + "," + txtLongitude.Text;
TcpClient client = new TcpClient("192.168.0.145 ", 2500);
Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
data = new Byte[256];
String responseData = String.Empty;
Int32 bytes = stream.Read(data, 0, data.Length);
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
stream.Close();
client.Close();
}
else
{
txtLatitude.Text = "COM Port 已關閉";
txtLongitude.Text = "COM Port 已關閉";
txtQuality.Text = "無";
txtSTQty.Text = "0";
txtSeaLevel.Text = "0";
btn_upload.Enabled = false;
}
}
private void btn_upload_Click(object sender, EventArgs e)
{
// GPSWS.Service1 ws = new GPS.GPSWS.Service1();
// ws.Url="http://localhost/gpsws/service1.asmx";
// try
// {
// ws.UpdTrace(1, txtLatitude.Text, txtLongitude.Text);
// }
// catch (Exception ex)
// {
// MessageBox.Show(ex.Message);
// }
//Connect("127.0.0.1", " Teacher Lin is very angry");
// Int32 port = 2500;
// String message=txtLatitude.Text+","+txtLongitude.Text;
// TcpClient client = new TcpClient("127.0.0.1", port);
// Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
// NetworkStream stream = client.GetStream();
// stream.Write(data, 0, data.Length);
// data = new Byte[256];
// String responseData = String.Empty;
// Int32 bytes = stream.Read(data, 0, data.Length);
// responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
// stream.Close();
// client.Close();
}
private void cmbPort_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void txtPortStatus_TextChanged(object sender, EventArgs e)
{
}
private void txtData_TextChanged(object sender, EventArgs e)
{
}
private void txtLatitude_TextChanged(object sender, EventArgs e)
{
}
}
}