網頁文章 javax.portlet.title.56

 

 

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)
        {
 
        }
 
       
    }
}