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