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