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

📄 serverform.cs

📁 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 GPSClassLibrary;

namespace GPSServer
{
    public partial class ServerForm : Form
    {
        //GPS串口类
        GPSClassLibrary.GPSComport gpscomport;
        // 地图窗口
        MapForm mapform;
        // 发送日志
        Log SendLog = new Log("SendLog");
        // 接收日志
        Log ReceiveLog = new Log("ReceiveLog");
        public ServerForm()
        {
            InitializeComponent();
        }

        private void ReceiveTimer_Tick(object sender, EventArgs e)
        {
            string str_rcv = gpscomport.ReceivedData;
            if (str_rcv == null)
                return;
            ReceiveLog.writeLog(str_rcv);
            PackageType type = PackageFactory.GetPackageType(str_rcv);
            switch (type)
            {
                case PackageType.GPAI:
                    GPAI_Process(str_rcv);
                    break;
                case PackageType.GPSI:
                    GPSI_Process(str_rcv);
                    break;
                case PackageType.GPPI:
                    GPPI_Process(str_rcv);
                    break;
                default:
                    break;
            }
        }

        void GPAI_Process(string datagram)
        {
            GPAI gpai = PackageFactory.CreateGPAI(datagram);
            lblAlarm.Text = "报警状态:";
            switch (gpai.AlarmReason)
            {
                case AlarmReason.HarewareError:
                    lblAlarm.Text += "硬件故障";
                    break;
                case AlarmReason.NaturalDisaster:
                    lblAlarm.Text += "自然灾害";
                    break;
                case AlarmReason.None:
                    lblAlarm.Text += "正常";
                    break;
                case AlarmReason.ResourceLack:
                    lblAlarm.Text += "资源缺乏";
                    break;
                case AlarmReason.Robber:
                    lblAlarm.Text += "遇匪";
                    break;
            }
        }

        void GPPI_Process(string datagram)
        {
            datagram.GetType();
            GPPI gppi = PackageFactory.CreateGPPI(datagram);
            // 更新
            switch (gppi.GPSState)
            {
                case  GPSState.Unlocated:
                    this.lblState.Text = "状态:未定位";
                    break;
                case GPSState.Located:
                    this.lblState.Text = "状态:已定位";

                    this.lblLatitude.Text = "纬度:" + Math.Round(gppi.Latitude, 2).ToString() + ((char)gppi.LatitudeType).ToString();
                    this.lblLongitude.Text = "经度:" + Math.Round(gppi.Longitude, 2).ToString() + ((char)gppi.LongitudeType).ToString();
                    this.lblHeight.Text = "海拔:" + Math.Round(gppi.Height, 2).ToString();
                    mapform.SetMapPosition(gppi.Latitude, gppi.LatitudeType, gppi.Longitude, gppi.LongitudeType, gppi.Height);

                    break;
                case GPSState.Calculating:
                    this.lblState.Text = "状态:正在估算…";
                    break;
            }
        }

        void GPSI_Process(string datagram)
        {
            GPSI gpsi = PackageFactory.CreateGPSI(datagram);

            lblHeaviness.Text = "负重量" + gpsi.Heavyness.ToString();
            lblOilSurplus.Text = "剩余油量" + gpsi.OilSurplus.ToString() + "%";
            lblEngineTemperature.Text = "引擎温度" + gpsi.EngineTemperature.ToString();
        }

        private void ServerForm_Load(object sender, EventArgs e)
        {
            using (SettingsForm form = new SettingsForm())
            {
                form.Text = "服务器端口设置";
                while (form.ShowDialog() == DialogResult.OK)
                {
                    gpscomport = new GPSClassLibrary.GPSComport(form.PortName, form.BaudRate, form.DataBits, form.StopBits, form.Parity);
                    if (!gpscomport.OpenPort())
                    {
                        MessageBox.Show("打开串口不成功,请重新设置", "提示");
                        continue;
                    }
                    else
                    {
                        //MessageBox.Show("连接成功!");
                        break;
                    }
                }
                if (form.DialogResult == DialogResult.Cancel)
                    this.Dispose();
            }
            mapform = new MapForm();
            mapform.Text = "服务器地图";
            mapform.Show();
            ReceiveTimer.Enabled = true;
        }

        private void btnQuestState_Click(object sender, EventArgs e)
        {
            GPRS gprs = new GPRS();
            string sndstr = gprs.ToString();
            gpscomport.SendData(sndstr);
            SendLog.writeLog(sndstr);
        }

        private void btnSendCommand_Click(object sender, EventArgs e)
        {
            GPCD gpcd = new GPCD();
            switch (((Button)sender).Name)
            {
                case "btnCloseEngine":
                    gpcd.GPCommand = GPCommand.CloseEngine;
                    break;
                case "btnCloseOil":
                    gpcd.GPCommand = GPCommand.StopOiling;
                    break;
                case "btnLock":
                    gpcd.GPCommand = GPCommand.Lock;
                    break;
                case "btnUnlock":
                    gpcd.GPCommand = GPCommand.Unlock;
                    break;
                case "btnStartOiling":
                    gpcd.GPCommand = GPCommand.StartOiling;
                    break;
                case "btnOpenEngine":
                    gpcd.GPCommand = GPCommand.OpenEngine;
                    break;
            }
            string sndstr = gpcd.ToString();
            gpscomport.SendData(sndstr);
            SendLog.writeLog(sndstr);
        }

        private void ServerForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            gpscomport.ClosePort();
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }
    }
}

⌨️ 快捷键说明

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