コード例 #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);

                // Подождем пока получим данные с ком-порта
                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;
            }
        }