示例#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);
            }
        }
示例#2
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);
            }
        }