Пример #1
0
        // Отправка команды купюроприемнику
        private byte[] SendCommand(BillValidatorCommands cmd, byte[] data = null)
        {
            if (cmd == BillValidatorCommands.ACK || cmd == BillValidatorCommands.NAK)
            {
                byte[] bytes = null;

                if (cmd == BillValidatorCommands.ACK)
                {
                    bytes = Package.CreateResponse(ResponseType.ACK);
                }
                if (cmd == BillValidatorCommands.NAK)
                {
                    bytes = Package.CreateResponse(ResponseType.NAK);
                }

                if (bytes != null)
                {
                    this._ComPort.Write(bytes, 0, bytes.Length);
                }

                return(null);
            }
            else
            {
                Package package = new Package();
                package.Cmd = (byte)cmd;

                if (data != null)
                {
                    package.Data = data;
                }

                byte[] CmdBytes = package.GetBytes();
                this._ComPort.Write(CmdBytes, 0, CmdBytes.Length);

                // Подождем пока получим данные с ком-порта
                var timeout = !this._SynchCom.WaitOne(EVENT_WAIT_HANDLER_TIMEOUT);
                this._SynchCom.Reset();

                if (timeout)
                {
                    throw new TimeoutException();
                }

                // Если CRC ок, то проверим четвертый бит с результатом
                // Должны уже получить данные с ком-порта, поэтому проверим CRC
                if (_packet == null || !Package.CheckCRC(_packet))
                {
                    throw new ArgumentException(CashCode.Net.Properties.Resource.SendCommand_TheMismatchOfTheChecksumOfTheReceivedMessageTheDeviceMayNotBeConnectedToTheCOMPortCheckYourConnectionSettings);
                }

                var res = _packet;
                _packet = null;

                return(res);
            }
        }
        // Sending a command to the bill acceptor
        private byte[] SendCommand(BillValidatorCommands cmd, byte[] data = null)
        {
            if (cmd == BillValidatorCommands.ACK || cmd == BillValidatorCommands.NAK)
            {
                byte[] bytes = null;

                switch (cmd)
                {
                case BillValidatorCommands.ACK:
                    bytes = Package.CreateResponse(ResponseType.Ack);
                    break;

                case BillValidatorCommands.NAK:
                    bytes = Package.CreateResponse(ResponseType.Nak);
                    break;
                }

                if (bytes != null)
                {
                    _comPort.Write(bytes, 0, bytes.Length);
                }

                return(null);
            }
            var package = new Package {
                Command = (byte)cmd
            };

            if (data != null)
            {
                package.Data = data;
            }

            var cmdBytes = package.GetBytes();

            _comPort.Write(cmdBytes, 0, cmdBytes.Length);

            // Let's wait until we get data from the com port
            _synchCom.WaitOne(_handleBillStackingTimeout);
            _synchCom.Reset();

            var byteResult = _receivedBytes.ToArray();

            // If the CRC is ok, then check the fourth bit with the result
            // Must already get the data from the com-port, so we'll check the CRC
            if (byteResult.Length == 0 || !Package.CheckCrc(byteResult))
            {
                throw new ArgumentException("The mismatch of the checksum of the received message.The device may not be connected to the COM port.Check the connection settings.");
            }

            return(byteResult);
        }
Пример #3
0
        // Отправка команды купюроприемнику
        private byte[] SendCommand(BillValidatorCommands cmd, byte[] Data = null)
        {
            if (cmd == BillValidatorCommands.ACK || cmd == BillValidatorCommands.NAK)
            {
                byte[] bytes = null;

                if (cmd == BillValidatorCommands.ACK)
                {
                    bytes = Package.CreateResponse(ResponseType.ACK);
                }
                if (cmd == BillValidatorCommands.NAK)
                {
                    bytes = Package.CreateResponse(ResponseType.NAK);
                }

                if (bytes != null)
                {
                    this._ComPort.Write(bytes, 0, bytes.Length);
                }

                return(null);
            }
            else
            {
                Package package = new Package();
                package.Cmd = (byte)cmd;

                if (Data != null)
                {
                    package.Data = Data;
                }

                byte[] CmdBytes = package.GetBytes();
                this._ComPort.Write(CmdBytes, 0, CmdBytes.Length);

                // Подождем пока получим данные с ком-порта
                this._SynchCom.WaitOne(EVENT_WAIT_HANDLER_TIMEOUT);
                this._SynchCom.Reset();

                byte[] ByteResult = this._ReceivedBytes.ToArray();

                // Если CRC ок, то проверим четвертый бит с результатом
                // Должны уже получить данные с ком-порта, поэтому проверим CRC
                if (ByteResult.Length == 0 || !Package.CheckCRC(ByteResult))
                {
                    throw new ArgumentException("Несоответствие контрольной суммы полученного сообщения. Возможно устройство не подключено к COM-порту. Проверьте настройки подключения.");
                }

                return(ByteResult);
            }
        }
        /// <summary>
        /// Send relevant commands to the bill validator
        /// </summary>
        /// <param name="command"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        private byte[] SendCommand(BillValidatorCommands command, byte[] data = null)
        {
            if (command == BillValidatorCommands.ACK || command == BillValidatorCommands.NAK)
            {
                byte[] bytes = null;

                switch (command)
                {
                case BillValidatorCommands.ACK: bytes = BillValidatorPackage.CreateResponse(BillValidatorPackage.ResponseType.ACK); break;

                case BillValidatorCommands.NAK: bytes = BillValidatorPackage.CreateResponse(BillValidatorPackage.ResponseType.NAK); break;
                }

                if (bytes != null)
                {
                    _serialPort.Write(bytes, 0, bytes.Length);
                }

                return(null);
            }
            else
            {
                BillValidatorPackage package = new BillValidatorPackage();
                package.Command = (byte)command;

                if (data != null)
                {
                    package.Data = data;
                }

                byte[] bytesCommand = package.GetBytes();
                _serialPort.Write(bytesCommand, 0, bytesCommand.Length);

                _synchronizedSerialPort.WaitOne(WAITING_HANDLER_TIMEOUT);
                _synchronizedSerialPort.Reset();

                byte[] result = _receivedBytes.ToArray();

                // Add CheckCRC
                if (result.Length == 0)
                {
                    Console.WriteLine();
                }
                return(result);
            }
        }
Пример #5
0
        // Sending a command to a bill acceptor
        private byte[] SendCommand(BillValidatorCommands cmd, byte[] Data = null)
        {
            if (cmd == BillValidatorCommands.ACK || cmd == BillValidatorCommands.NAK)
            {
                byte[] bytes = null;

                if (cmd == BillValidatorCommands.ACK)
                {
                    bytes = Package.CreateResponse(ResponseType.ACK);
                }
                if (cmd == BillValidatorCommands.NAK)
                {
                    bytes = Package.CreateResponse(ResponseType.NAK);
                }

                if (bytes != null)
                {
                    this._ComPort.Write(bytes, 0, bytes.Length);
                }

                return(null);
            }
            else
            {
                Package package = new Package();
                package.Cmd = (byte)cmd;

                if (Data != null)
                {
                    package.Data = Data;
                }

                byte[] CmdBytes = package.GetBytes();

                // Log sended bytes to debugger
                string strCmdBytes = "";
                foreach (var b in CmdBytes)
                {
                    strCmdBytes += b.ToString("X") + ", ";
                }
                Debug.WriteLine("Sended command: " + strCmdBytes);
                // --------------------------------

                /*byte[] temp = new byte[6];
                 * for (int i = 0; i < 6; i++)
                 * {
                 *  temp[i] = CmdBytes[i];
                 * }
                 *
                 * this._ComPort.Write(temp, 0, 6);*/
                this._ComPort.Write(CmdBytes, 0, CmdBytes.Length);

                // Let's wait while we receive data from a com-port
                this._SynchCom.WaitOne(EVENT_WAIT_HANDLER_TIMEOUT);
                this._SynchCom.Reset();

                byte[] ByteResult = this._ReceivedBytes.ToArray();

                // Log recieved bytes to debugger
                string strByteResult = "";
                foreach (var b in ByteResult)
                {
                    strByteResult += b.ToString("X") + ", ";
                }
                Debug.WriteLine("Recieved command: " + strByteResult);
                // --------------------------------

                // If CRC is OK, then check the fourth bit with the result
                // Must already get data from the com-port, so check the CRC

                //if (ByteResult.Length == 0 || !Package.CheckCRC(ByteResult))
                if (ByteResult.Length == 0)
                {
                    throw new ArgumentException("Mismatch of the checksum of the received message. The device may not be connected to the COM port. Check connection settings");
                }

                return(ByteResult);
            }
        }
Пример #6
0
        // Отправка команды купюроприемнику
        private byte[] SendCommand(BillValidatorCommands cmd, byte[] Data = null)
        {
            if (cmd == BillValidatorCommands.ACK || cmd == BillValidatorCommands.NAK)
            {
                byte[] bytes = null;

                if (cmd == BillValidatorCommands.ACK) { bytes = Package.CreateResponse(ResponseType.ACK); }
                if (cmd == BillValidatorCommands.NAK) { bytes = Package.CreateResponse(ResponseType.NAK); }

                if (bytes != null) {this._ComPort.Write(bytes, 0, bytes.Length);}

                return null;
            }
            else
            {
                Package package = new Package();
                package.Cmd = (byte)cmd;

                if (Data != null) { package.Data = Data; }

                byte[] CmdBytes = package.GetBytes();
                this._ComPort.Write(CmdBytes, 0, CmdBytes.Length);

                // Подождем пока получим данные с ком-порта
                this._SynchCom.WaitOne(EVENT_WAIT_HANDLER_TIMEOUT);
                this._SynchCom.Reset();

                byte[] ByteResult = this._ReceivedBytes.ToArray();

                // Если CRC ок, то проверим четвертый бит с результатом
                // Должны уже получить данные с ком-порта, поэтому проверим CRC
                if (ByteResult.Length == 0 || !Package.CheckCRC(ByteResult))
                {
                    throw new ArgumentException("Несоответствие контрольной суммы полученного сообщения. Возможно устройство не подключено к COM-порту. Проверьте настройки подключения.");
                }

                return ByteResult;
            }
        }