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