using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PLCS7
{
///
/// 终端数据块结构体
///
public struct TerminalStru
{
///
/// 终端ID号
///
public short terminalID;
///
/// 终端状态,0暂停,1停车,2取车
///
public short terminalStatus;//终端写入
///
/// 按钮状态,0缺省,1非注册,2注册,3预约
///
public short btnStatus;//终端写入
///
/// 停取指令,0缺省,1停车,2取车
///
public short cmd;//终端写入
///
/// 注册用户UserID
///
public int licenseCodeA;//终端写入
///
/// 注册用户号牌地域标记
///
public int licenseCodeB;//终端写入
///
/// 注册用户号牌后半部分A
///
public int licenseCodeC;//终端写入
///
/// 注册用户号牌后半部分B
///
public int licenseCodeD;//终端写入
///
/// 凭证号
///
public int receiptNum;//终端写入,24
///
/// 支付状态,0-1失败-2成功-3管理员放行
///
public short paymentStatus;//中控写入,28
///
/// 1-成功,2-号牌比对不成功
///
public short licVerification;//中控写入,30
///
/// 停车费用,0-99999
///
public short parkingFee;//中控写入
///
/// 用户类型,0-1普通-2月卡-3季卡-4年卡VIP
///
public short userType;//中控写入,34
///
/// X坐标
///
public short coordX;//PLC
///
/// Y坐标
///
public short coordY;//PLC
///
/// 地感信号
///
public short groundStatus;
///
/// 启动对应号牌机
///
public short numMachineLaunch;
///
/// 终端心跳
///
public short termHeartbeat;
public override string ToString()
{
return "[终端id(0):" + terminalID + ",终端状态(2):" + terminalStatus + ",按钮状态(4):" + btnStatus + ",终端指令(6):" + cmd + ",用户id(8):" + licenseCodeA + ","
+ licenseCodeB + "," + licenseCodeC + "," + licenseCodeD + ",凭证号(24):" + receiptNum + ",支付状态(28):" + paymentStatus
+ ",号牌验证(30):" + licVerification + ",停车费用(32):" + parkingFee + ",用户类型(34):" + userType + ",X坐标(36):" + coordX + ",Y坐标(38):" + coordY +
",地感信号(40):" + groundStatus + ",启动号牌机(42):" + numMachineLaunch + ",终端心跳(44):" + termHeartbeat + "]";
}
public override bool Equals(object obj)
{
if (obj == null) return false;
else if ((object)this == obj) return true;
else if (obj.GetType().Equals(typeof(TerminalStru)))
{
TerminalStru ts = (TerminalStru)obj;
if (ts.ToString().Equals(ToString())) return true;
else return false;
}
else return false;
}
public override int GetHashCode()
{
return (ToString()).GetHashCode();
}
}
///
/// 中控与PLC交互使用数据块的结构体
///
public struct MainBlockStru
{
///
/// 终端ID号
///
public short terminalID;
///
/// 号牌机启动指令
///
public short numMachineLaunch;
///
/// 摆扫启动指令
///
public short sweepLaserLaunch;
///
/// 轮距启动指令
///
public short wheelbaseLaserLaunch;
///
/// 急停
///
public short stop;
///
/// 就绪
///
public short ready;
///
/// 停车运行
///
public short parkingRunning;
///
/// 取车运行
///
public short fetchingRunning;
///
/// 流程完成
///
public short processCompleted;
///
/// 流程中断
///
public short processStopped;
///
/// 摆扫激光状态
///
public short sweepLaserStatus;
///
/// 轮距雷达状态
///
public short wheelbaseLaserStatus;
public short groundAStatus;//24
public short groundBStatus;
public short groundCStatus;
public short groundDStatus;
public short groundEStatus;
public short groundFStatus;
public short arriveAAndOpen;
public short arriveBAndOpen;
public short arriveCAndOpen;
public short arriveDAndOpen;
public short arriveEAndOpen;
public short arriveFAndOpen;
//public short leaveAAndOpen;
//public short leaveBAndOpen;
//public short leaveCAndOpen;
public short bookParkCmd;
public short bookFetchCmd;
///
/// 号牌机获取
///
public short licenseReceived;//中控可写,52
///
/// 本地自动模式
///
public short localAutoMode;
///
/// 云端模式
///
public short remoteMode;
///
/// 本地手动模式
///
public short localManualMode;
///
/// 中控心跳
///
public short centralHearbeat;
///
/// 预约车位总数
///
public short reserveTotalSpace;
public override string ToString()
{
return "[id(0):" + terminalID + ",号牌(2):" + numMachineLaunch + ",摆扫(4):" + sweepLaserLaunch + ",轮距(6):" + wheelbaseLaserLaunch + ",急停(8):" + stop
+ ",就绪(10):" + ready + ",停车启动(12):" + parkingRunning + ",取车启动(14):" + fetchingRunning + ",流程完成(16):" + processCompleted + ",流程中止(18):" +
processStopped + ",摆扫状态(20):" + sweepLaserStatus + ",轮距状态(22):" + wheelbaseLaserStatus + ",号牌获取(52):" + licenseReceived
+ ",本地自动(54):" + localAutoMode + ",远程模式(56):" + remoteMode + ",本地手动(58):" + localManualMode + ",中控心跳(60):" + centralHearbeat + ",预约车位总数(62)" + reserveTotalSpace + "," + groundAStatus
+ "," + groundBStatus + "," + groundCStatus + "," + arriveAAndOpen + "," + arriveBAndOpen + "," + arriveCAndOpen
+ "]";
}
public override int GetHashCode()
{
return (ToString()).GetHashCode();
}
public override bool Equals(object obj)
{
if (obj == null) return false;
else if ((object)this == obj) return true;
else if (obj.GetType().Equals(typeof(MainBlockStru)))
{
MainBlockStru ts = (MainBlockStru)obj;
if (ts.ToString().Equals(ToString())) return true;
else return false;
}
else return false;
}
}
///
/// 车位单元结构体
///
public struct ParkingSpaceStru
{
///
/// 车位编号
///
public short parkingSpace;
///
/// 长
///
public short length;
///
/// 宽
///
public short width;
///
/// 高
///
public short height;
///
/// 楼层编号
///
public short floorNo;
public short coordX;
public short coordY;
///
/// 凭证号
///
public int receiptNum;
///
/// 车位状态,0空位-1占用-2保留-3已预约-4故障
///
public short spaceStatus;
///
/// 前轮距
///
public short frontWheelbase;
///
/// 后轮距
///
public short rearWheelbase;
public int startTimeA;
public int startTimeB;
public int startTimeC;
public int endTimeA;
public int endTimeB;
public int endTimeC;
public override string ToString()
{
return "[车位编号(0):" + parkingSpace + ",长(2):" + length + ",宽(4):" + width + ",高(6):" + height + ",楼层(8):" + floorNo + ",X坐标(10):" + coordX + ",Y坐标(12):" + coordY + ",凭证号(14):" + receiptNum
+ ",车位状态(16):" + spaceStatus + ",前轮距(18):" + frontWheelbase + ",后轮距(20):" + rearWheelbase + "]";
}
public override int GetHashCode()
{
return (ToString()).GetHashCode();
}
public override bool Equals(object obj)
{
if (obj == null) return false;
else if ((object)this == obj) return true;
else if (obj.GetType().Equals(typeof(ParkingSpaceStru)))
{
ParkingSpaceStru ts = (ParkingSpaceStru)obj;
if (ts.ToString().Equals(ToString())) return true;
else return false;
}
else return false;
}
}
}