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

📄 kaaaaaaa.a

📁 gps
💻 A
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Collections.Generic;
using System.Text;

namespace GPSClassLibrary
{
    /// <summary>
    /// 纬度类型
    /// </summary>
    public enum LatitudeType:byte {
        /// <summary>
        /// 北纬
        /// </summary>
        North = (byte)'N',
        /// <summary>
        /// 南纬
        /// </summary>
        South = (byte)'S' 
    };
    /// <summary>
    /// 经度类型
    /// </summary>
    public enum LongitudeType:byte { 
        /// <summary>
        /// 西经
        /// </summary>
        West = (byte)'W',
        /// <summary>
        /// 东经
        /// </summary>
        East = (byte)'E' 
    };
    /// <summary>
    /// GPS状态
    /// </summary>
    public enum GPSState:byte {
        /// <summary>
        /// 已定位
        /// </summary>
        Located = 0x00, 
        /// <summary>
        /// 未定位
        /// </summary>
        Unlocated = 0x01, 
        /// <summary>
        /// 正在估算
        /// </summary>
        Calculating = 0x02
    };
    /// <summary>
    /// 定位信息报文
    /// </summary>
    public class GPPI
    {
        #region 定位报文格式
        //$GPPI,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>
        //<1>UTC时间:时分秒(hhmmss)
        //<2>机器编号
        //<3>纬度:double
        //<4>纬度半球N或S
        //<5>经度:double
        //<6>经度半球E或W
        //<7>GPS状态:0=未定位,1=已定位,2=正在估算
        //<8>海拔高度:(-9999.9~9999.9)
        #endregion

        #region Pivate
        //
        DateTime utcTime;
        string machineName = "Unname";
        double latitude = 0.0;
        LatitudeType latitudeType = LatitudeType.North;
        double longitude = 0.0;
        LongitudeType longitudeType = LongitudeType.East;
        GPSState gps_state = GPSState.Calculating;
        double height = 0;
        #endregion

        #region Attribute
        /// <summary>
        /// 报文产生时间
        /// </summary>
        public DateTime UTCTime
        {
            get { return utcTime; }
            set { utcTime = value; }
        }
        /// <summary>
        /// 机器名或叫机器编号
        /// </summary>
        public string MachineName
        {
            set { machineName = value; }
            get { return machineName; }
        }
        /// <summary>
        /// 纬度值
        /// </summary>
        public double Latitude
        {
            set { latitude = value; }
            get { return latitude; }
        }
        /// <summary>
        /// 纬度类型,南纬还是北纬
        /// </summary>
        public LatitudeType LatitudeType
        {
            set { latitudeType = value; }
            get { return latitudeType; }
        }
        /// <summary>
        /// 经度值
        /// </summary>
        public double Longitude
        {
            set { longitude = value; }
            get { return longitude; }
        }
        /// <summary>
        /// 经度类型,西经还是东经
        /// </summary>
        public LongitudeType LongitudeType
        {
            set { longitudeType = value; }
            get { return longitudeType; }
        }
        /// <summary>
        /// GPS的状态
        /// </summary>
        public GPSState GPSState
        {
            set { gps_state = value; }
            get { return gps_state; }
        }
        /// <summary>
        /// 海拔高度
        /// </summary>
        public  double Height
        {
            get { return height; }
            set { height = value; }
        }
        #endregion

        #region Constrution
        /// <summary>
        /// 用报文构造
        /// </summary>
        /// <param name="datagram"></param>
        public GPPI(string datagram)
        {
            string[] splitStr = datagram.Split(@",".ToCharArray());
            if (splitStr.Length != 9)
                return;
            try
            {
                utcTime = DateTime.Parse(splitStr[1]);
                machineName = splitStr[2];
                latitude = double.Parse(splitStr[3]);
                latitudeType = (LatitudeType)byte.Parse(splitStr[4]);
                longitude = double.Parse(splitStr[5]);
                LongitudeType = (LongitudeType)byte.Parse(splitStr[6]);
                gps_state = (GPSState)byte.Parse(splitStr[7]);
                height = double.Parse(splitStr[8]);
            }
            catch
            {
                return;
            }
        }
        #endregion

        #region Method
        /// <summary>
        /// 输出传输字符串
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            // 产生时间
            utcTime = new DateTime();
            return @"$GPPI,"
            + utcTime.ToString() + ","
            + machineName + ","
            + latitude.ToString() + ","
            + latitudeType.ToString() + ","
            + longitude.ToString() + ","
            + longitudeType.ToString() + ","
            + gps_state.ToString() + ","
            + height.ToString()
            + "\n";
        }
        #endregion
    }
    /// <summary>
    /// 状态报文
    /// </summary>
    public class GPSI
    {
        #region 状态报文格式
        //状态信息:
        //$GPSI,<1>,<2>,<3>,<4>,<5>
        //<1>UTC时间:时分秒(hhmmss)
        //<2>机器编号
        //<3>引擎温度 单位摄氏度
        //<4>剩余油量 百分数
        //<5>负载量 单位公斤
        #endregion

        #region Private
        DateTime utcTime ;
        string machineName = "Unname";
        float enginTemperature = 0.0f;
        float oilSurplus = 100;
        int heaviyness = 0;
        #endregion

        #region Construction
        public GPSI(string datagram)
        {
            string[] splitStr = datagram.Split(@",".ToCharArray());
            utcTime = DateTime.Parse(splitStr[1]);
            machineName = splitStr[2];
            enginTemperature = float.Parse(splitStr[3]);
            oilSurplus = float.Parse(splitStr[4]);
            heaviyness = int.Parse(splitStr[5]);
        }
        #endregion

        #region Attribute
        /// <summary>
        /// 报文产生时间
        /// </summary>
        DateTime UTCTime
        {
            get { return utcTime; }
            set { utcTime = value; }
        }
        /// <summary>
        /// 机器名或叫机器编号
        /// </summary>
        string MachineName
        {
            set { machineName = value; }
            get { return machineName; }
        }
        /// <summary>
        /// 引擎温度
        /// </summary>
        float EngineTemperature
        {
            set { enginTemperature = value; }
            get { return enginTemperature; }
        }
        /// <summary>
        /// 剩余油量
        /// </summary>
        float OilSurplus
        {
            set 
            { 
                oilSurplus = value;
                if (oilSurplus > 100)
                    oilSurplus = 100;
                else
                    if (oilSurplus < 0)
                        oilSurplus = 0;
            }
            get 
            { return oilSurplus; }
        }
        /// <summary>
        /// 负载量
        /// </summary>
        int Heavyness
        {
            set { heaviyness = value; }
            get { return heaviyness; }
        }
        #endregion

        #region Method
        /// <summary>
        /// 输入报文字符串
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            utcTime = new DateTime();
            return @"$GPSI,"
            + machineName.ToString() + ","
            + enginTemperature.ToString() + ","
            + oilSurplus.ToString() + ","
            + heaviyness.ToString()
            + "\n";
        }
        #endregion
    }
    /// <summary>
    /// 报警原因
    /// </summary>
    public enum AlarmReason : byte
    {
        /// <summary>
        /// 无状况
        /// </summary>
        None = 0x00,
        /// <summary>
        /// 资源缺乏
        /// </summary>
        ResourceLack = 0x01,
        /// <summary>
        /// 硬件故障

⌨️ 快捷键说明

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