コード例 #1
0
        /*
         *  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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
            }
        }
コード例 #4
0
ファイル: CoinAcceptor.cs プロジェクト: ysjr-2002/moneymore
        private void RaiseLastEvents(DeviceEventBuffer buf)
        {
            var newEventsCount = GetNewEventsCountHelper(_lastEvent, buf.Counter);

            _lastEvent = buf.Counter;
            RaiseEventsByBufferHelper(buf, newEventsCount);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        /*
         *  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;
        }
コード例 #7
0
        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);
        }
コード例 #8
0
 private void RaiseLastEvents(DeviceEventBuffer buf)
 {
     var newEventsCount = GetNewEventsCountHelper(_lastEvent, buf.Counter);
     _lastEvent = buf.Counter;
     RaiseEventsByBufferHelper(buf, newEventsCount);
 }
コード例 #9
0
        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));
            }
        }
コード例 #10
0
ファイル: GenericDevice.cs プロジェクト: dharillo/cctalk-net
        /// <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));
            }
        }