/* * PER ARDAC ELITE * * N.B.: Da verificare cosa effettivamente arriva * * Header 159 – Read buffered bill events * Transmitted data : <none> * Received data : [ event counter ] * [ result 1A ] [ result 1B ] * [ result 2A ] [ result 2B ] * [ result 3A ] [ result 3B ] * [ result 4A ] [ result 4B ] * [ result 5A ] [ result 5B ] * See the Event Code Table for a list of possible event codes. * Note that the event counter wraps from 255 to 1. An event counter of zero indicates power-up or * reset. */ public new DeviceEventBuffer CmdReadEventBuffer() { var msg = CreateMessage(CctalkCommands.ReadBufferedBillEvents); var respond = Connection.Send(msg, _checksumHandler); if (respond.DataLength < 11) { throw new InvalidRespondException(respond); } var data = respond.Data; var events = new[] { new DeviceEvent(data[1], data[2]), new DeviceEvent(data[3], data[4]), new DeviceEvent(data[5], data[6]), new DeviceEvent(data[7], data[8]), new DeviceEvent(data[9], data[10]), } ; var ret = new DeviceEventBuffer { Counter = respond.Data[0], Events = events, }; return(ret); }
public DeviceEventBuffer CmdReadEventBuffer() { var msg = CreateMessage(229); var respond = Connection.Send(msg, _checksumHandler); if (respond.DataLength < 11) { throw new InvalidRespondException(respond); } var data = respond.Data; var events = new[] { new DeviceEvent(data[1], data[2]), new DeviceEvent(data[3], data[4]), new DeviceEvent(data[5], data[6]), new DeviceEvent(data[7], data[8]), new DeviceEvent(data[9], data[10]), }; //字节1:为总投币数 //字节2:货币号 //字节3:分离器 //以下字节同2,3 var ret = new DeviceEventBuffer { Counter = respond.Data[0], Events = events, }; Log.In("counter->" + respond.Data[0] + " " + respond.Data.ToStr()); return(ret); }
void RaiseEventsByBufferHelper(DeviceEventBuffer buf, Byte countToShow) { if (countToShow == 0) { return; } for (var i = 0; i < Math.Min(countToShow, buf.Events.Length); i++) { var ev = buf.Events[i]; if (ev.IsError) { String errMsg; var errCode = (CoinAcceptorErrors)ev.ErrorOrRouteCode; _errors.TryGetValue(ev.ErrorOrRouteCode, out errMsg); RaiseInvokeErrorEvent(new CoinAcceptorErrorEventArgs(errCode, errMsg)); } else { CoinTypeInfo coinInfo; _coins.TryGetValue(ev.CoinCode, out coinInfo); var evVal = coinInfo == null ? 0 : coinInfo.Value; var evName = coinInfo == null ? null : coinInfo.Name; RaiseInvokeCoinEvent(new CoinAcceptorCoinEventArgs(evName, evVal, ev.CoinCode, ev.ErrorOrRouteCode)); } } var eventsLost = countToShow - buf.Events.Length; if (eventsLost > 0) { RaiseInvokeErrorEvent(new CoinAcceptorErrorEventArgs(CoinAcceptorErrors.UnspecifiedAlarmCode, "Events lost:" + eventsLost)); } }
private void RaiseLastEvents(DeviceEventBuffer buf) { var newEventsCount = GetNewEventsCountHelper(_lastEvent, buf.Counter); _lastEvent = buf.Counter; RaiseEventsByBufferHelper(buf, newEventsCount); }
public DeviceEventBuffer CmdReadEventBuffer() { Trace.TraceInformation("Cmd: ReadEventBuffer"); var msg = CreateMessage(229); var respond = Connection.Send(msg, _checksumHandler); if (respond.DataLength < 11) { throw new InvalidRespondException(respond); } var data = respond.Data; var events = new[] { new DeviceEvent(data[1], data[2]), new DeviceEvent(data[3], data[4]), new DeviceEvent(data[5], data[6]), new DeviceEvent(data[7], data[8]), new DeviceEvent(data[9], data[10]), } ; var ret = new DeviceEventBuffer { Counter = respond.Data[0], Events = events, }; return(ret); }
/* * PER ARDAC ELITE * * N.B.: Da verificare cosa effettivamente arriva * Header 159 – Read buffered bill events Transmitted data : <none> Received data : [ event counter ] [ result 1A ] [ result 1B ] [ result 2A ] [ result 2B ] [ result 3A ] [ result 3B ] [ result 4A ] [ result 4B ] [ result 5A ] [ result 5B ] See the Event Code Table for a list of possible event codes. Note that the event counter wraps from 255 to 1. An event counter of zero indicates power-up or reset. */ public new DeviceEventBuffer CmdReadEventBuffer() { var msg = CreateMessage(159); var respond = Connection.Send(msg, _checksumHandler); if (respond.DataLength < 11) throw new InvalidRespondException(respond); var data = respond.Data; var events = new[] { new DeviceEvent(data[1], data[2]), new DeviceEvent(data[3], data[4]), new DeviceEvent(data[5], data[6]), new DeviceEvent(data[7], data[8]), new DeviceEvent(data[9], data[10]), } ; var ret = new DeviceEventBuffer { Counter = respond.Data[0], Events = events, }; return ret; }
private void RaiseLastEvents(DeviceEventBuffer buf) { var newEventsCount = GetNewEventsCountHelper(_lastEvent, buf.Counter); if (_lastEvent + newEventsCount < buf.Counter) { Console.WriteLine("lost messages: " + (buf.Counter - _lastEvent - newEventsCount)); } Console.WriteLine("Event counter: " + buf.Counter); _lastEvent = buf.Counter; RaiseEventsByBufferHelper(buf, newEventsCount); }
void RaiseEventsByBufferHelper(DeviceEventBuffer buf, Byte countToShow) { if (countToShow == 0) return; for (var i = 0; i < Math.Min(countToShow, buf.Events.Length); i++) { var ev = buf.Events[i]; if (ev.IsError) { String errMsg; var errCode = (CoinAcceptorErrors)ev.ErrorOrRouteCode; _errors.TryGetValue(ev.ErrorOrRouteCode, out errMsg); RaiseInvokeErrorEvent(new CoinAcceptorErrorEventArgs(errCode, errMsg)); } else { CoinTypeInfo coinInfo; _coins.TryGetValue(ev.CoinCode, out coinInfo); var evVal = coinInfo == null ? 0 : coinInfo.Value; var evName = coinInfo == null ? null : coinInfo.Name; RaiseInvokeCoinEvent(new CoinAcceptorCoinEventArgs(evName, evVal, ev.CoinCode, ev.ErrorOrRouteCode)); } } var eventsLost = countToShow - buf.Events.Length; if (eventsLost > 0) { RaiseInvokeErrorEvent(new CoinAcceptorErrorEventArgs(CoinAcceptorErrors.UnspecifiedAlarmCode, "Events lost:" + eventsLost)); } }
/// <summary> /// Iterates over all the events in the buffer raising them. This may /// rais error or success events. /// </summary> /// <param name="buf">Buffer that contains the events to process.</param> /// <param name="countToShow">Number of events in the buffer.</param> protected void RaiseEventsByBufferHelper(DeviceEventBuffer buf, Byte countToShow) { if (countToShow == 0) { // There are no events to process. return; } int maxIterations = Math.Min(countToShow, buf.Events.Length); for (int i = 0; i < maxIterations; i++) { var ev = buf.Events[i]; if (ev.IsError) { // Try to get the error message associated with the // error code received. String errMsg; var errCode = ev.ErrorOrRouteCode; _errors.TryGetValue(ev.ErrorOrRouteCode, out errMsg); RaiseInvokeErrorEvent(new DeviceErrorEventArgs(DeviceType, errCode, errMsg)); } else { // Try to get the info of the accepted money MoneyTypeInfo moneyInfo; _money.TryGetValue(ev.MoneyCode, out moneyInfo); var evVal = moneyInfo == null ? 0 : moneyInfo.Value; var evName = moneyInfo == null ? null : moneyInfo.Name; // Raise the event RaiseInvokeMoneyEvent(new DeviceMoneyEventArgs(evName, evVal, ev.MoneyCode, ev.ErrorOrRouteCode)); } } var eventsLost = countToShow - buf.Events.Length; if (eventsLost > 0) { RaiseInvokeErrorEvent(new DeviceErrorEventArgs(DeviceType, GetErrorCode("undefined"), "Events lost: " + eventsLost)); } }