示例#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);
            }
        }
示例#3
0
        // 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);
            }
        }
示例#4
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;
            }
        }