📄 kaaaaaaa.a
字号:
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 + -