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; } }