// Отправка команды купюроприемнику 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); } }
// Отправка команды купюроприемнику 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); } }