using Newtonsoft.Json;
using System.Runtime.InteropServices;
namespace AmrControl.ADS
{
///
/// 充电桩数据模型
///
public class ChargingStationDataModel
{
//JGR类型 0:仓储车 , 1:运输车, 2:仓储位充电器,3:轨道位充电器
public byte csType;
//出厂编号,30个长度带'\0',有效最多29个字节
public string csSN;
//车ID,取值范围0~63,不同类型的车/充电器的csID可以重复
public byte csID;
//无线模块的地址,长度2字节
public ushort rcAddr;
//无线模块的频率码,取值0~155,对应频率为 900+RC_FreqCode*0.2,单位MHz,默认频率码为0x32(50)
public byte rcFreqCode;
//在线/离线状态 是否在线(通讯是否正常)
public byte isOnline;
//健康状态 1:正常; 0:异常
public byte isHealthy;
//充电标志,1:充电中,0:未在充电
public byte isCharging;
///
/// 充电头的状态,0:缩回状态,1:伸出状态
///
public byte chargerStatus;
//充电电压,单位:V
public float chargeVoltage;
//充电电流,单位:mA
public float chargeCurrent;
///
/// 所在格子的位置X
///
public int positionX;
///
/// 所在格子的位置Y
///
public int positionY;
///
/// 显示位置X,Y坐标
///
public int displayX;
public int displayY;
///
/// 连接的小车的编号,预留,现在硬件不支持
///
public string jgrSN;
///
/// 连接的小车的电池剩余电量,取值 0~100, 100表示满电量.
/// 预留,现在硬件不支持
///
public byte electricity;
}
//用内存对齐方式并不对,可能是和TC程序接口是C#开发的有关 [StructLayout(LayoutKind.Sequential, Pack = 1)]
///
/// TC程序中定义的充电桩的数据结构
///
[Serializable]
public struct Charge_Ads_Struct
{
//出厂编号,30个长度带'\0',有效最多29个字节
[JsonConverter(typeof(TcModelArrayConverter))]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]
public byte[] chargeSN;
// 0:仓储车 , 1:运输车, 2:仓储位充电器,3:轨道位充电器
public byte chargeType;
//车ID,取值范围0~63,不同类型的车/充电器的jgrID可以重复
public byte chargeID;
//无线模块的地址,长度2字节
public ushort rcAddr;
//无线模块的频率码,取值0~155,对应频率为 900+RC_FreqCode*0.2,单位MHz,默认频率码为0x32(50)
public byte rcFreqCode;
//在线/离线状态 是否在线(通讯是否正常)
public byte isOnline;
//健康状态 true:正常; false:异常
public byte isHealthy;
//充电标志,1:充电中,0:未在充电
public byte isCharging;
///
/// 充电头的状态,0:缩回状态,1:伸出状态
///
public byte chargerStatus;
//充电电压,单位:V
public float chargeVoltage;
//充电电流,单位:mA
public float chargeCurrent;
}
}