Exemple #1
0
        private NetworkConfiguration(string data)
        {
            var subcode = data.Substring(0, 2);

            if (subcode != "HN")
            {
                throw new InvalidDataException(
                          string.Format("Expected sub-code of \"{0}\" but got \"{1}\".", "HN", subcode));
            }

            _networkCardType = (NetworkCardTypes)data[2];
            _enableSendMAC   = data[3] == '2' || data[3] == '3';
            _enablePolling   = data[3] == '1' || data[3] == '3';

            int i;

            if (!int.TryParse(data.Substring(4, 2), NumberStyles.None, CultureInfo.InvariantCulture, out i))
            {
                throw new InvalidDataException("Couldn't parse the polling interval from network configuration data.");
            }
            _pollingInterval = TimeSpan.FromSeconds(i);

            _transportType = data[6] == '0' ? TransportType.Tcp : data[6] == '1' ? TransportType.Udp : 0;

            _terminalMACAddress = PhysicalAddress.Parse(data.Substring(7, 12));
            _terminalIPAddress  = new IPAddress(Util.StringToByteArray(data.Substring(19, 8)));
            _gatewayIPAddress   = new IPAddress(Util.StringToByteArray(data.Substring(27, 8)));
            _remoteIPAddress    = new IPAddress(Util.StringToByteArray(data.Substring(35, 8)));
            _subnetMask         = new IPAddress(Util.StringToByteArray(data.Substring(43, 8)));

            if (!int.TryParse(data.Substring(51, 5), NumberStyles.None, CultureInfo.InvariantCulture, out _terminalPort))
            {
                throw new InvalidDataException("Couldn't parse the terminal port number from network configuration data.");
            }

            if (!int.TryParse(data.Substring(56, 5), NumberStyles.None, CultureInfo.InvariantCulture, out _remotePort))
            {
                throw new InvalidDataException("Couldn't parse the remote port number from network configuration data.");
            }

            if (!int.TryParse(data.Substring(61, 5), NumberStyles.None, CultureInfo.InvariantCulture, out i))
            {
                throw new InvalidDataException("Couldn't parse the disconnect time from network configuration data.");
            }
            _disconnectTime = TimeSpan.FromSeconds(i);

            _enableDHCP = data[66] == '1';

            if (!int.TryParse(data.Substring(67, 2), NumberStyles.None, CultureInfo.InvariantCulture, out _networkCardFirmwareVersion))
            {
                throw new InvalidDataException("Couldn't parse the network card firmware version from network configuration data.");
            }

            // TODO: if there's a 70th character - does it mean anything?
        }
        public TechnicianModeSettings(byte terminalId = 0,
                                      SerialPortModes serialPort0Mode = SerialPortModes.Host,
                                      SerialPortModes serialPort1Mode = SerialPortModes.FingerprintUnit,
                                      SerialPortModes serialPort2Mode = SerialPortModes.Printer,
                                      int serialPort0BaudRate = 19200,
                                      int serialPort1BaudRate = 57600,
                                      int serialPort2BaudRate = 19200,
                                      bool hasModem = false,
                                      byte modemRingsToAnswer = 0,
                                      NetworkCardTypes networkCardType = NetworkCardTypes.F_Ethernet100Mbps)
        {
            if (terminalId > 31)
                throw new ArgumentException("Invalid Terminal ID.  Terminal ID should be 0 to 31.", "terminalId");
            _terminalId = terminalId;

            if (serialPort0Mode  != SerialPortModes.Host)
                throw new ArgumentException("Invalid mode for serial port 0.", "serialPort0Mode");
            _serialPort0Mode = serialPort0Mode;

            if (serialPort1Mode != SerialPortModes.FingerprintUnit && serialPort1Mode != SerialPortModes.CardReader)
                throw new ArgumentException("Invalid mode for serial port 1.", "serialPort1Mode");
            _serialPort1Mode = serialPort1Mode;

            if (serialPort2Mode != SerialPortModes.Printer && serialPort2Mode != SerialPortModes.CardReader)
                throw new ArgumentException("Invalid mode for serial port 2.", "serialPort2Mode");
            _serialPort2Mode = serialPort2Mode;

            if (!BaudRates.IsValid(serialPort0BaudRate))
                throw new ArgumentException("Invalid baud rate for serial port 0.", "serialPort0BaudRate");
            _serialPort0BaudRate = serialPort0BaudRate;

            if (!BaudRates.IsValid(serialPort1BaudRate))
                throw new ArgumentException("Invalid baud rate for serial port 1.", "serialPort1BaudRate");
            _serialPort1BaudRate = serialPort1BaudRate;

            if (!BaudRates.IsValid(serialPort2BaudRate))
                throw new ArgumentException("Invalid baud rate for serial port 2.", "serialPort2BaudRate");
            _serialPort2BaudRate = serialPort2BaudRate;

            _hasModem = hasModem;
            if (hasModem)
            {
                if (modemRingsToAnswer > 9)
                    throw new ArgumentException("Modem rings to answer must be 0 through 9", "modemRingsToAnswer");
                _modemRingsToAnswer = modemRingsToAnswer;
            }

            if (!Enum.IsDefined(typeof (NetworkCardTypes), networkCardType))
                throw new ArgumentException("Invalid network card type.", "networkCardType");
            _networkCardType = networkCardType;
        }
        public TechnicianModeSettings(byte terminalId = 0,
                                      SerialPortModes serialPort0Mode = SerialPortModes.Host,
                                      SerialPortModes serialPort1Mode = SerialPortModes.FingerprintUnit,
                                      SerialPortModes serialPort2Mode = SerialPortModes.Printer,
                                      int serialPort0BaudRate         = 19200,
                                      int serialPort1BaudRate         = 57600,
                                      int serialPort2BaudRate         = 19200,
                                      bool hasModem                    = false,
                                      byte modemRingsToAnswer          = 0,
                                      NetworkCardTypes networkCardType = NetworkCardTypes.F_Ethernet100Mbps)
        {
            if (terminalId > 31)
            {
                throw new ArgumentException("Invalid Terminal ID.  Terminal ID should be 0 to 31.", "terminalId");
            }
            _terminalId = terminalId;

            if (serialPort0Mode != SerialPortModes.Host)
            {
                throw new ArgumentException("Invalid mode for serial port 0.", "serialPort0Mode");
            }
            _serialPort0Mode = serialPort0Mode;

            if (serialPort1Mode != SerialPortModes.FingerprintUnit && serialPort1Mode != SerialPortModes.CardReader)
            {
                throw new ArgumentException("Invalid mode for serial port 1.", "serialPort1Mode");
            }
            _serialPort1Mode = serialPort1Mode;

            if (serialPort2Mode != SerialPortModes.Printer && serialPort2Mode != SerialPortModes.CardReader)
            {
                throw new ArgumentException("Invalid mode for serial port 2.", "serialPort2Mode");
            }
            _serialPort2Mode = serialPort2Mode;

            if (!BaudRates.IsValid(serialPort0BaudRate))
            {
                throw new ArgumentException("Invalid baud rate for serial port 0.", "serialPort0BaudRate");
            }
            _serialPort0BaudRate = serialPort0BaudRate;

            if (!BaudRates.IsValid(serialPort1BaudRate))
            {
                throw new ArgumentException("Invalid baud rate for serial port 1.", "serialPort1BaudRate");
            }
            _serialPort1BaudRate = serialPort1BaudRate;

            if (!BaudRates.IsValid(serialPort2BaudRate))
            {
                throw new ArgumentException("Invalid baud rate for serial port 2.", "serialPort2BaudRate");
            }
            _serialPort2BaudRate = serialPort2BaudRate;

            _hasModem = hasModem;
            if (hasModem)
            {
                if (modemRingsToAnswer > 9)
                {
                    throw new ArgumentException("Modem rings to answer must be 0 through 9", "modemRingsToAnswer");
                }
                _modemRingsToAnswer = modemRingsToAnswer;
            }

            if (!Enum.IsDefined(typeof(NetworkCardTypes), networkCardType))
            {
                throw new ArgumentException("Invalid network card type.", "networkCardType");
            }
            _networkCardType = networkCardType;
        }
        private TechnicianModeSettings(string data)
        {
            var subcode = data.Substring(0, 3);
            if (subcode != "HPG")
                throw new InvalidDataException(
                    string.Format("Expected sub-code of \"{0}\" but got \"{1}\".", "HPG", subcode));

            if (!byte.TryParse(data.Substring(3, 2), NumberStyles.None, CultureInfo.InvariantCulture, out _terminalId))
                throw new InvalidDataException("Couldn't parse terminal id from technician mode settings data.");

            byte b;
            if (!byte.TryParse(data.Substring(5, 1), NumberStyles.None, CultureInfo.InvariantCulture, out b))
                throw new InvalidDataException("Couldn't parse serial port 0 mode from technician mode settings data.");
            _serialPort0Mode = (SerialPortModes)b;

            if (!byte.TryParse(data.Substring(6, 1), NumberStyles.None, CultureInfo.InvariantCulture, out b))
                throw new InvalidDataException("Couldn't parse serial port 1 mode from technician mode settings data.");
            _serialPort1Mode = (SerialPortModes)b;

            if (!byte.TryParse(data.Substring(7, 1), NumberStyles.None, CultureInfo.InvariantCulture, out b))
                throw new InvalidDataException("Couldn't parse serial port 2 mode from technician mode settings data.");
            _serialPort2Mode = (SerialPortModes)b;

            if (!byte.TryParse(data.Substring(8, 1), NumberStyles.None, CultureInfo.InvariantCulture, out b))
                throw new InvalidDataException("Couldn't parse serial port 0 baud rate from technician mode settings data.");
            _serialPort0BaudRate = BaudRates.Get(b);

            if (!byte.TryParse(data.Substring(9, 1), NumberStyles.None, CultureInfo.InvariantCulture, out b))
                throw new InvalidDataException("Couldn't parse serial port 1 baud rate from technician mode settings data.");
            _serialPort1BaudRate = BaudRates.Get(b);

            if (!byte.TryParse(data.Substring(10, 1), NumberStyles.None, CultureInfo.InvariantCulture, out b))
                throw new InvalidDataException("Couldn't parse serial port 2 baud rate from technician mode settings data.");
            _serialPort2BaudRate = BaudRates.Get(b);

            _hasModem = data[11] != 'N';
            if (_hasModem)
            {
                if (!byte.TryParse(data.Substring(11, 1), NumberStyles.None, CultureInfo.InvariantCulture, out _modemRingsToAnswer))
                    throw new InvalidDataException("Couldn't parse modem rings to answer from technician mode settings data.");
            }

            _networkCardType = (NetworkCardTypes)data[12];
        }
        private TechnicianModeSettings(string data)
        {
            var subcode = data.Substring(0, 3);

            if (subcode != "HPG")
            {
                throw new InvalidDataException(
                          string.Format("Expected sub-code of \"{0}\" but got \"{1}\".", "HPG", subcode));
            }

            if (!byte.TryParse(data.Substring(3, 2), NumberStyles.None, CultureInfo.InvariantCulture, out _terminalId))
            {
                throw new InvalidDataException("Couldn't parse terminal id from technician mode settings data.");
            }

            byte b;

            if (!byte.TryParse(data.Substring(5, 1), NumberStyles.None, CultureInfo.InvariantCulture, out b))
            {
                throw new InvalidDataException("Couldn't parse serial port 0 mode from technician mode settings data.");
            }
            _serialPort0Mode = (SerialPortModes)b;

            if (!byte.TryParse(data.Substring(6, 1), NumberStyles.None, CultureInfo.InvariantCulture, out b))
            {
                throw new InvalidDataException("Couldn't parse serial port 1 mode from technician mode settings data.");
            }
            _serialPort1Mode = (SerialPortModes)b;

            if (!byte.TryParse(data.Substring(7, 1), NumberStyles.None, CultureInfo.InvariantCulture, out b))
            {
                throw new InvalidDataException("Couldn't parse serial port 2 mode from technician mode settings data.");
            }
            _serialPort2Mode = (SerialPortModes)b;

            if (!byte.TryParse(data.Substring(8, 1), NumberStyles.None, CultureInfo.InvariantCulture, out b))
            {
                throw new InvalidDataException("Couldn't parse serial port 0 baud rate from technician mode settings data.");
            }
            _serialPort0BaudRate = BaudRates.Get(b);

            if (!byte.TryParse(data.Substring(9, 1), NumberStyles.None, CultureInfo.InvariantCulture, out b))
            {
                throw new InvalidDataException("Couldn't parse serial port 1 baud rate from technician mode settings data.");
            }
            _serialPort1BaudRate = BaudRates.Get(b);

            if (!byte.TryParse(data.Substring(10, 1), NumberStyles.None, CultureInfo.InvariantCulture, out b))
            {
                throw new InvalidDataException("Couldn't parse serial port 2 baud rate from technician mode settings data.");
            }
            _serialPort2BaudRate = BaudRates.Get(b);

            _hasModem = data[11] != 'N';
            if (_hasModem)
            {
                if (!byte.TryParse(data.Substring(11, 1), NumberStyles.None, CultureInfo.InvariantCulture, out _modemRingsToAnswer))
                {
                    throw new InvalidDataException("Couldn't parse modem rings to answer from technician mode settings data.");
                }
            }

            _networkCardType = (NetworkCardTypes)data[12];
        }