diff --git a/BrakeMachine/Brack/BrackMgr.cs b/BrakeMachine/Brack/BrackMgr.cs index 4ab6d34..9be610d 100644 --- a/BrakeMachine/Brack/BrackMgr.cs +++ b/BrakeMachine/Brack/BrackMgr.cs @@ -19,6 +19,29 @@ namespace BrakeMachine.Brack private static int passage = 1;//通道 private const int m_WaitTime = 5000; + + public static DateTime dateTime = System.DateTime.Now; + /// + /// + /// + /// + public static string PlateNumber + { + get + { + if ((System.DateTime.Now - dateTime).Seconds >= 30) + { + return ""; + } + + return PlateNumber; + } + + set + { + value = PlateNumber; + } + } #region 连接 @@ -63,6 +86,8 @@ namespace BrakeMachine.Brack eventInfo.Index = info.stuFileInfo.bIndex.ToString(); eventInfo.Count = info.stuFileInfo.bCount.ToString(); eventInfo.PlateNumber = info.stTrafficCar.szPlateNumber; + PlateNumber=info.stTrafficCar.szPlateNumber; + dateTime = DateTime.Now; eventInfo.PlateColor = info.stTrafficCar.szPlateColor; eventInfo.PlateType = info.stTrafficCar.szPlateType; eventInfo.VehicleColor = info.stTrafficCar.szVehicleColor; diff --git a/BrakeMachine/Brack/EventInfo.cs b/BrakeMachine/Brack/EventInfo.cs index 54b7ca4..5738d80 100644 --- a/BrakeMachine/Brack/EventInfo.cs +++ b/BrakeMachine/Brack/EventInfo.cs @@ -10,6 +10,9 @@ public class EventInfo public string GroupID { get; set; } public string Index { get; set; } public string Count { get; set; } + /// + /// 车牌 + /// public string PlateNumber { get; set; } public string PlateType { get; set; } public string PlateColor { get; set; } diff --git a/BrakeMachine/Brack/HttpHandler.cs b/BrakeMachine/Brack/HttpHandler.cs index 87730cd..60ec626 100644 --- a/BrakeMachine/Brack/HttpHandler.cs +++ b/BrakeMachine/Brack/HttpHandler.cs @@ -8,58 +8,65 @@ using log4net; namespace BrakeMachine.Brack { - public class HttpHandler: SimpleChannelInboundHandler + public class HttpHandler : SimpleChannelInboundHandler { private static readonly ILog Log = LogManager.GetLogger(typeof(HttpHandler)); - static readonly AsciiString TypePlain = AsciiString.Cached("text/plain; charset=utf-8"); - static readonly AsciiString TypeJson = AsciiString.Cached("application/json; charset=utf-8"); - static readonly AsciiString OkLength = AsciiString.Cached(Encoding.UTF8.GetBytes("true").Length.ToString()); - static readonly AsciiString FailLength = AsciiString.Cached(Encoding.UTF8.GetBytes("false").Length.ToString()); - static readonly AsciiString ServerName = AsciiString.Cached("Netty"); - static readonly AsciiString ContentTypeEntity = HttpHeaderNames.ContentType; - static readonly AsciiString DateEntity = HttpHeaderNames.Date; - static readonly AsciiString ContentLengthEntity = HttpHeaderNames.ContentLength; - static readonly AsciiString ServerEntity = HttpHeaderNames.Server; + static readonly AsciiString TypePlain = AsciiString.Cached("text/plain; charset=utf-8"); + static readonly AsciiString TypeJson = AsciiString.Cached("application/json; charset=utf-8"); + static readonly AsciiString OkLength = AsciiString.Cached(Encoding.UTF8.GetBytes("true").Length.ToString()); + static readonly AsciiString FailLength = AsciiString.Cached(Encoding.UTF8.GetBytes("false").Length.ToString()); + static readonly AsciiString ServerName = AsciiString.Cached("Netty"); + static readonly AsciiString ContentTypeEntity = HttpHeaderNames.ContentType; + static readonly AsciiString DateEntity = HttpHeaderNames.Date; + static readonly AsciiString ContentLengthEntity = HttpHeaderNames.ContentLength; + static readonly AsciiString ServerEntity = HttpHeaderNames.Server; - protected override void ChannelRead0(IChannelHandlerContext ctx, DefaultHttpRequest req) - { - Log.Info($"{req.Uri}, {req}"); - - DefaultFullHttpResponse response = null; - switch (req.Uri) + protected override void ChannelRead0(IChannelHandlerContext ctx, DefaultHttpRequest req) { - case "/Api/Manualsnap"://抓拍 - BrackMgr.Manualsnap(); - //this.WriteResponse(ctx, Unpooled.WrappedBuffer(Encoding.UTF8.GetBytes(closeRfid.ToString())), TypePlain, closeRfid?OkLength: FailLength); - break; - default: - response = new DefaultFullHttpResponse(HttpVersion.Http11, HttpResponseStatus.NotFound, Unpooled.Empty, false); - ctx.WriteAndFlushAsync(response); - break; - } + Log.Info($"{req.Uri}, {req}"); + DefaultFullHttpResponse response = null; + switch (req.Uri) + { + case "/Api/Manualsnap": //抓拍 + BrackMgr.Manualsnap(); + string msg = "抓拍成功"; + this.WriteResponse(ctx, Unpooled.WrappedBuffer(Encoding.UTF8.GetBytes(msg)), TypePlain, OkLength); + break; + case "/Api/LicensePlateNumber": //车牌号码 + if(!string.IsNullOrEmpty(BrackMgr.PlateNumber)) + this.WriteResponse(ctx, Unpooled.WrappedBuffer(Encoding.UTF8.GetBytes(BrackMgr.PlateNumber)), TypePlain, OkLength); + else + this.WriteResponse(ctx, Unpooled.WrappedBuffer(Encoding.UTF8.GetBytes(BrackMgr.PlateNumber)), TypePlain, FailLength); + break; + default: + response = new DefaultFullHttpResponse(HttpVersion.Http11, HttpResponseStatus.NotFound, + Unpooled.Empty, false); + ctx.WriteAndFlushAsync(response); + break; + } + } - } - - void WriteResponse(IChannelHandlerContext ctx, IByteBuffer buf, ICharSequence contentType, - ICharSequence contentLength) - { - DateTime dateTime = DateTime.UtcNow; - // Build the response object. - var response = new DefaultFullHttpResponse(HttpVersion.Http11, HttpResponseStatus.OK, buf, false); - HttpHeaders headers = response.Headers; - headers.Set(ContentTypeEntity, contentType); - headers.Set(ServerEntity, ServerName); - headers.Set(DateEntity, AsciiString.Cached($"{dateTime.DayOfWeek}, {dateTime:dd MMM yyyy HH:mm:ss z}")); - headers.Set(ContentLengthEntity, contentLength); + void WriteResponse(IChannelHandlerContext ctx, IByteBuffer buf, ICharSequence contentType, + ICharSequence contentLength) + { + DateTime dateTime = DateTime.UtcNow; + // Build the response object. + var response = new DefaultFullHttpResponse(HttpVersion.Http11, HttpResponseStatus.OK, buf, false); + HttpHeaders headers = response.Headers; + headers.Set(ContentTypeEntity, contentType); + headers.Set(ServerEntity, ServerName); + headers.Set(DateEntity, AsciiString.Cached($"{dateTime.DayOfWeek}, {dateTime:dd MMM yyyy HH:mm:ss z}")); + headers.Set(ContentLengthEntity, contentLength); - // Close the non-keep-alive connection after the write operation is done. - ctx.WriteAsync(response); - } + // Close the non-keep-alive connection after the write operation is done. + ctx.WriteAsync(response); + } - public override void ExceptionCaught(IChannelHandlerContext context, Exception exception) => context.CloseAsync(); + public override void ExceptionCaught(IChannelHandlerContext context, Exception exception) => + context.CloseAsync(); - public override void ChannelReadComplete(IChannelHandlerContext context) => context.Flush(); + public override void ChannelReadComplete(IChannelHandlerContext context) => context.Flush(); } } \ No newline at end of file