internal NeuronGroupBoardBase(NeuronGroup neuronGroup, IBoardInformation boardSystemInformation, NeuronSpiConnector spiConnector, I2CConnector i2CConnector, DriverLogger logger) { NeuronGroup = neuronGroup; SpiConnector = spiConnector; I2CConnector = i2CConnector; Logger = logger; _observeLocker = new object(); _registersToObserve = new Dictionary <ushort, List <IObservedRegisterObject> >(); BoardSystemInformation = boardSystemInformation; DigitalInputDictionary = new Dictionary <IUniqueIdentifier, IDigitalInput>(); DigitalOutputsDictionary = new Dictionary <IUniqueIdentifier, IDigitalOutput>(); RelayOutputsDictionary = new Dictionary <IUniqueIdentifier, IDigitalOutput>(); UserLedsDictionary = new Dictionary <IUniqueIdentifier, IUserLed>(); AnalogInputsDictionary = new Dictionary <IUniqueIdentifier, IAnalogInput>(); AnalogOutputsDictionary = new Dictionary <IUniqueIdentifier, IAnalogOutput>(); OneWireConnectorsDictionary = new Dictionary <IUniqueIdentifier, IOneWireConnector>(); ModbusConnectorsDictionary = new Dictionary <IUniqueIdentifier, IModbusConnector>(); _pollInProgess = false; _pollingTimer = new Timer(PollInformation, new object(), 50, 50); }
/// <summary> /// Ruft eine Instance von MPU6050. /// Geeigent für die Nutzung mehrer I2C Module. /// </summary> /// <param name="i2c">Benötigt die Reference Instanz für die I2C Verbindung.</param> /// <param name="init">Initialisiert den Sensor mit Standard Einstellungen.</param> /// <returns>Gibt die Instanz von MPU6050 zurück.</returns> public static IMPU GetInstance(SensorType sensorType, I2CConnector i2c, bool init = true, IRegisterConfiguration regConfig = null) { if (_mpu == null) { _mpu = new MPUSensor(sensorType, i2c); if (init) { _mpu.Init(regConfig); } } return(_mpu); }
public NeuronDevice(bool autoInitialize = false) { _boards = new List <INeuronGroupBoard>(); _driverLogger = new DriverLogger(LogLevel.Debug); _driverLogger.OnLogInformation += OnLogInformation; _spiConnector = new NeuronSpiConnector(_driverLogger); _i2CConnector = new I2CConnector(_driverLogger); if (autoInitialize) { Task.Factory?.StartNew(Initialize); } }
public GeneralFactory(I2CConnector i2CConnector, NeuronSpiConnector spiConnector, DriverLogger logger) { _i2CConnector = i2CConnector; _spiConnector = spiConnector; _logger = logger; }
public UniversalNeuronGroupDiRoBoard(int digitalInCount, int relayOutCount, NeuronGroup neuronGroup, IBoardInformation boardSystemInformation, NeuronSpiConnector spiConnector, I2CConnector i2CConnector, DriverLogger logger) : base(neuronGroup, boardSystemInformation, spiConnector, i2CConnector, logger) { #region Digital Inputs for (ushort i = 0; i < digitalInCount; i++) { var input = new DigitalInput(i + 1, neuronGroup, 0, i); SetObservation(0, input); DigitalInputDictionary.Add(input.UniqueIdentifyer, input); } #endregion Digital Inputs #region Relay Outputs for (ushort i = 0; i < relayOutCount; i++) { var digitalOutput = new DigitalOutput(1 + i, neuronGroup, i, spiConnector, logger, DigitalRelayOutputType.RelayOutput, 1, i); DigitalOutputsDictionary.Add(digitalOutput.UniqueIdentifyer, digitalOutput); } #endregion Relay Outputs }
internal OneWireConnector(NeuronGroup neuronGroup, int number, DriverLogger logger, I2CConnector i2CGateway) { _logger = logger; _logger.LogInformation(this, "create Instance..."); UniqueIdentifyer = new UniqueIdentifier(neuronGroup, NeuronResource.OneWireConnector, number); OneWirePeriodicBusScan = true; _timerState = new object(); _controllerLock = new object(); Devices = new List <IOneWireDevice>(); _neuronConnectedOneWireDevice = new NeuronConnectedOneWireDevice(i2CGateway); _logger.LogInformation(this, "scanning bus on startup"); ScanForNewOrDeadDevices(); PeriodicBusScanIntervalSeconds = 60; }
/// <summary> /// Standard Konstruktor. /// </summary> /// <param name="i2cConnector">Verbindungs Instanz.</param> private MPUSensor(SensorType sensorType, I2CConnector i2cConnector) { this._sensorType = sensorType; this._I2CConnector = i2cConnector; }
internal NeuronConnectedOneWireDevice(I2CConnector connector) { _i2CGateway = connector; _romNumber = new byte[8]; }
public B10001GroupBoard(NeuronGroup neuronGroup, IBoardInformation boardSystemInformation, NeuronSpiConnector spiConnector, I2CConnector i2CConnector, DriverLogger logger) : base(neuronGroup, boardSystemInformation, spiConnector, i2CConnector, logger) { #region Digital Inputs for (ushort i = 0; i < AnzahlDigitalInputs; i++) { var input = new DigitalInput(i + 1, neuronGroup, 0, i); SetObservation(0, input); DigitalInputDictionary.Add(input.UniqueIdentifyer, input); } #endregion Digital Inputs #region Digital Outputs for (ushort i = 0; i < AnzahlDigitalOutputs; i++) { var digitalOutput = new DigitalOutput(1 + i, neuronGroup, i, spiConnector, logger, DigitalRelayOutputType.DigitalOutput, 1, i); DigitalOutputsDictionary.Add(digitalOutput.UniqueIdentifyer, digitalOutput); } #endregion Digital Outputs #region One Wire var oneWireConnector = new OneWireConnector(neuronGroup, 1, Logger, I2CConnector); OneWireConnectorsDictionary.Add(oneWireConnector.UniqueIdentifyer, oneWireConnector); #endregion One Wire #region User LED's for (ushort i = 0; i < UserLedsCount; i++) { var userLed = new UserLed(i + 1, neuronGroup, (ushort)(8 + i), spiConnector, 20, i); UserLedsDictionary.Add(userLed.UniqueIdentifyer, userLed); } #endregion User LED's #region Analog Output var analogOutput = new AnalogOutput(neuronGroup, 1, 2, spiConnector, logger); AnalogOutputsDictionary.Add(analogOutput.UniqueIdentifyer, analogOutput); #endregion Analog Output #region Analog Input var analogInput = new AnalogInput(neuronGroup, 1, 3, spiConnector); SetObservation(3, analogInput); AnalogInputsDictionary.Add(analogInput.UniqueIdentifyer, analogInput); #endregion Analog Input }