/// <summary> /// Try to parse the given XML representation of a GetServiceAuthorisation response. /// </summary> /// <param name="Request">The GetServiceAuthorisation request leading to this response.</param> /// <param name="GetServiceAuthorisationResponseXML">The XML to parse.</param> /// <param name="GetServiceAuthorisationResponse">The parsed GetServiceAuthorisation response.</param> /// <param name="CustomSendGetServiceAuthorisationResponseParser">An optional delegate to parse custom GetServiceAuthorisationResponse XML elements.</param> /// <param name="CustomMeterReportParser">An optional delegate to parse custom MeterReport XML elements.</param> /// <param name="HTTPResponse">The correlated HTTP response of this eMIP response.</param> /// <param name="OnException">An optional delegate called whenever an exception occured.</param> public static Boolean TryParse(GetServiceAuthorisationRequest Request, XElement GetServiceAuthorisationResponseXML, out GetServiceAuthorisationResponse GetServiceAuthorisationResponse, CustomXMLParserDelegate <GetServiceAuthorisationResponse> CustomSendGetServiceAuthorisationResponseParser = null, CustomXMLParserDelegate <MeterReport> CustomMeterReportParser = null, HTTPResponse HTTPResponse = null, OnExceptionDelegate OnException = null) { try { GetServiceAuthorisationResponse = new GetServiceAuthorisationResponse( Request, GetServiceAuthorisationResponseXML.MapValueOrFail("transactionId", Transaction_Id.Parse), GetServiceAuthorisationResponseXML.MapValueOrFail("authorisationValue", ConversionMethods.AsAuthorisationValue), GetServiceAuthorisationResponseXML.MapValueOrFail("serviceSessionId", ServiceSession_Id.Parse), GetServiceAuthorisationResponseXML.MapBooleanOrFail("intermediateCDRRequested"), GetServiceAuthorisationResponseXML.MapValueOrFail("requestStatus", RequestStatus.Parse), GetServiceAuthorisationResponseXML.MapValueOrNullable("salePartnerOperatorId", s => Provider_Id.Parse(s.Replace("*", "-"))), GetServiceAuthorisationResponseXML.MapValueOrNullable("userContractIdAlias", Contract_Id.Parse), GetServiceAuthorisationResponseXML.MapElements("meterLimitList", "meterReport", s => MeterReport.Parse(s, CustomMeterReportParser, OnException)), GetServiceAuthorisationResponseXML.MapValueOrNull("parameter"), HTTPResponse ); if (CustomSendGetServiceAuthorisationResponseParser != null) { GetServiceAuthorisationResponse = CustomSendGetServiceAuthorisationResponseParser(GetServiceAuthorisationResponseXML, GetServiceAuthorisationResponse); } return(true); } catch (Exception e) { OnException?.Invoke(DateTime.UtcNow, GetServiceAuthorisationResponseXML, e); GetServiceAuthorisationResponse = null; return(false); } }
private void timer1_Tick(object sender, EventArgs e) { // Get the next image. VisionImage image = GetNextImage(); // Create the meter arc (stores information about the meter). MeterArc arc = Algorithms.GetMeterArc(MeterNeedleColor.DarkOnLight, new LineContour(new PointContour(53, 75), new PointContour(101, 134)), new LineContour(new PointContour(203, 75), new PointContour(155, 138))); // Read the meter. MeterReport report = Algorithms.ReadMeter(image, arc); // Display results. image.Overlays.Default.AddOval(new OvalContour(report.EndOfNeedle.X - 2, report.EndOfNeedle.Y - 2, 5, 5), Rgb32Value.RedColor, DrawingMode.PaintValue); speedKnob1.Value = report.Percentage; speedBox.Text = String.Format("{0:0.0}", report.Percentage); imageViewer1.Attach(image); }
/// <summary> /// Try to parse the given XML representation of an eMIP heartbeat request. /// </summary> /// <param name="SetServiceAuthorisationRequestXML">The XML to parse.</param> /// <param name="CustomSendSetServiceAuthorisationRequestParser">An optional delegate to parse custom SetServiceAuthorisationRequest XML elements.</param> /// <param name="CustomMeterReportParser">An optional delegate to parse custom MeterReport XML elements.</param> /// <param name="SetServiceAuthorisationRequest">The parsed heartbeat request.</param> /// <param name="OnException">An optional delegate called whenever an exception occured.</param> /// /// <param name="HTTPRequest">The correlated HTTP request of this eMIP request.</param> /// <param name="Timestamp">The optional timestamp of the request.</param> /// <param name="CancellationToken">An optional token to cancel this request.</param> /// <param name="EventTrackingId">An optional event tracking identification for correlating this request with other events.</param> /// <param name="RequestTimeout">An optional timeout for this request.</param> public static Boolean TryParse(XElement SetServiceAuthorisationRequestXML, CustomXMLParserDelegate<SetServiceAuthorisationRequest> CustomSendSetServiceAuthorisationRequestParser, CustomXMLParserDelegate<MeterReport> CustomMeterReportParser, out SetServiceAuthorisationRequest SetServiceAuthorisationRequest, OnExceptionDelegate OnException = null, HTTPRequest HTTPRequest = null, DateTime? Timestamp = null, CancellationToken? CancellationToken = null, EventTracking_Id EventTrackingId = null, TimeSpan? RequestTimeout = null) { try { SetServiceAuthorisationRequest = new SetServiceAuthorisationRequest( HTTPRequest, //ToDo: What to do with: <partnerIdType>eMI3</partnerIdType>? SetServiceAuthorisationRequestXML.MapValueOrFail ("partnerId", Partner_Id.Parse), //ToDo: What to do with: <operatorIdType>eMI3</operatorIdType> SetServiceAuthorisationRequestXML.MapValueOrFail ("operatorId", Operator_Id.Parse), //ToDo: What to do with: <targetOperatorIdType>eMI3</targetOperatorIdType> SetServiceAuthorisationRequestXML.MapValueOrFail ("targetOperatorId", Operator_Id.Parse), //ToDo: What to do with: <EVSEIdType>eMI3</EVSEIdType> SetServiceAuthorisationRequestXML.MapValueOrFail ("EVSEId", EVSE_Id.Parse), SetServiceAuthorisationRequestXML.MapValueOrFail ("userId", s => User_Id.Parse(s, SetServiceAuthorisationRequestXML.MapValueOrFail ("userIdType", UserIdFormatsExtensions.Parse))), SetServiceAuthorisationRequestXML.MapValueOrFail ("requestedServiceId", Service_Id.Parse), SetServiceAuthorisationRequestXML.MapValueOrFail ("serviceSessionId", ServiceSession_Id.Parse), SetServiceAuthorisationRequestXML.MapValueOrFail ("authorisationValue", ConversionMethods.AsRemoteStartStopValue), SetServiceAuthorisationRequestXML.MapBooleanOrFail ("intermediateCDRRequested"), SetServiceAuthorisationRequestXML.MapValueOrNullable ("transactionId", Transaction_Id.Parse), SetServiceAuthorisationRequestXML.MapValueOrNullable ("userContractIdAlias", Contract_Id.Parse), SetServiceAuthorisationRequestXML.MapElements ("meterLimitList", "meterReport", xml => MeterReport.Parse(xml, CustomMeterReportParser, OnException)), SetServiceAuthorisationRequestXML.ElementValueOrDefault("userContractIdAlias"), SetServiceAuthorisationRequestXML.MapValueOrNullable ("bookingId", Booking_Id.Parse), Timestamp, CancellationToken, EventTrackingId, RequestTimeout ); if (CustomSendSetServiceAuthorisationRequestParser != null) SetServiceAuthorisationRequest = CustomSendSetServiceAuthorisationRequestParser(SetServiceAuthorisationRequestXML, SetServiceAuthorisationRequest); return true; } catch (Exception e) { OnException?.Invoke(DateTime.UtcNow, SetServiceAuthorisationRequestXML, e); SetServiceAuthorisationRequest = null; return false; } }