示例#1
0
        public void WriteMultipCoils_MakeSureWeDoNotWriteRemainder()
        {
            // 0, false initialized data store
            var dataStore = DataStoreFactory.CreateDefaultDataStore();

            var request = new WriteMultipleCoilsRequest(1, 0, new DiscreteCollection(Enumerable.Repeat(true, 8).ToArray()))
            {
                NumberOfPoints = 2
            };

            ModbusSlave.WriteMultipleCoils(request, dataStore, dataStore.CoilDiscretes);

            Assert.AreEqual(dataStore.CoilDiscretes.Slice(1, 8).ToArray(), new [] { true, true, false, false, false, false, false, false });
        }
        public IDatastore GetDatastoreB()
        {
            IDatastore store = DataStoreFactory.GetDatastore();

            store.AddColumn(new ColumnMetadata("TableBColA"));
            store.AddColumn(new ColumnMetadata("TableBColB"));
            store.AddColumn(new ColumnMetadata("TableBFull"));

            store.AddData(new object[] { "A", "B", "A_B" });
            store.AddData(new object[] { "A", null, "A_Null" });
            store.AddData(new object[] { "A", "B", "A_B_2" });

            return(store);
        }
示例#3
0
        public void TestReadMapping()
        {
            DataStore dataStore = DataStoreFactory.CreateDefaultDataStore();

            dataStore.HoldingRegisters.Insert(1, 45);
            dataStore.HoldingRegisters.Insert(2, 42);

            Assert.Equal(45,
                         DataStore.ReadData <RegisterCollection, ushort>(dataStore, dataStore.HoldingRegisters, 0, 1, new object())
                         [0]);
            Assert.Equal(42,
                         DataStore.ReadData <RegisterCollection, ushort>(dataStore, dataStore.HoldingRegisters, 1, 1, new object())
                         [0]);
        }
示例#4
0
        public void DataStoreAddSubjectTestSuccess()
        {
            this.CreateDataFile();
            DataStoreFactory target = new DataStoreFactory(); // TODO: Initialize to an appropriate value

            target.DataStore.AddSubject(new TestSubject()
            {
                FirstName = "m.", LastName = "mathers", Email = "test@test", Password = "******"
            });

            int newCount = target.DataStore.GetData(new PageOptions()).Total;

            Assert.IsTrue(newCount > 1);
        }
示例#5
0
        public void TestInit()
        {
            SQLitePCL.Batteries_V2.Init();
            var loggerFactory = new Microsoft.Extensions.Logging.LoggerFactory();
            var logger        = loggerFactory.CreateLogger(nameof(KeyValueLite));

            //Clear db
            //var dbPath = dsFactory.GetDataStorePathName(nameof(KeyValueLite));
            //File.Delete(dbPath);

            var dsFactory = new DataStoreFactory(new GenericPlatformService());

            cacheService = new KeyValueLite(dsFactory, new KeyValueItemSytemTextJsonSerializer(), logger);
        }
示例#6
0
        private IDatastore GetContactsDatastore()
        {
            IDatastore dataObject = DataStoreFactory.GetDatastore();

            dataObject.AddColumn(new ColumnMetadata("FirstName"));
            dataObject.AddColumn(new ColumnMetadata("LastName"));
            dataObject.AddColumn(new ColumnMetadata("City"));
            dataObject.AddColumn(new ColumnMetadata("ID"));

            dataObject.AddData(new object[] { "Peter", "Widmer", "Wettingen", 1001 });
            dataObject.AddData(new object[] { "Joachim", "Suter", "Dättwil", 1002 });

            return(dataObject);
        }
        public void CreateDataStoreNotImplementedTypeTest()
        {
            var Logger = new LoggerMock();

            DataStoreType[] types = new DataStoreType[] { DataStoreType.EXCEL, DataStoreType.SQL };

            foreach (DataStoreType type in types)
            {
                Config.StoreType = type;

                Assert.ThrowsException <NotImplementedException>(
                    () => DataStoreFactory.CreateDataStore(Config, Logger)
                    );
            }
        }
示例#8
0
        private IDatastore GetPersonDatastore()
        {
            IDatastore store = DataStoreFactory.GetDatastore();

            store.AddColumn(new ColumnMetadata("PersonId"));
            store.AddColumn(new ColumnMetadata("Firstname"));
            store.AddColumn(new ColumnMetadata("Lastname"));

            store.AddData(new object[] { 1, "Simon", "Miller" });
            store.AddData(new object[] { 2, "Frank", "Houston" });
            store.AddData(new object[] { 3, "Jill", "Smith" });
            store.AddData(new object[] { 4, "Gregory", "Thomson" });

            return(store);
        }
        private void Run_MCU_server_thread()
        {
            byte slaveId = 1;

            // create and start the TCP slave
            MCU_Modbusserver = ModbusTcpSlave.CreateTcp(slaveId, MCU_TCPListener);
            //coils, inputs, holdingRegisters, inputRegisters
            MCU_Modbusserver.DataStore = DataStoreFactory.CreateDefaultDataStore(0, 0, 1054, 0);
            // PLC_Modbusserver.DataStore.SyncRoot.ToString();

            //MCU_Modbusserver.ModbusSlaveRequestReceived += new EventHandler<ModbusSlaveRequestEventArgs>(Server_Read_handler);
            //MCU_Modbusserver.DataStore.DataStoreWrittenTo += new EventHandler<DataStoreEventArgs>(Server_Written_to_handler);

            MCU_Modbusserver.Listen();

            // prevent the main thread from exiting
            ushort[] previos_out, current_out;
            previos_out = Copy_modbus_registers(1025, 20);
            while (runsimulator)
            {
                current_out = Copy_modbus_registers(1025, 20);
                if (!current_out.SequenceEqual(previos_out))
                {
                    handleCMD(current_out);
                    //Console.WriteLine("data changed");
                }
                if (mooving)
                {
                    if (distAZ != 0 || distEL != 0)
                    {
                        int travAZ = (distAZ < -AZ_speed) ? -AZ_speed : (distAZ > AZ_speed) ? AZ_speed : distAZ;
                        int travEL = (distEL < -EL_speed) ? -EL_speed : (distEL > EL_speed) ? EL_speed : distEL;
                        move(travAZ, travEL);
                    }
                    else
                    {
                        mooving = false;
                        MCU_Modbusserver.DataStore.HoldingRegisters[1] = (ushort)(MCU_Modbusserver.DataStore.HoldingRegisters[1] | 0x0080);
                    }
                }
                if (jogging)
                {
                    move(AZ_speed, EL_speed);
                }
                previos_out = current_out;
                Thread.Sleep(50);
            }
        }
示例#10
0
    public void ModbusUdpSlave_MultiThreaded()
    {
        DataStore?dataStore = DataStoreFactory.CreateDefaultDataStore();

        dataStore.CoilDiscretes.Add(false);

        using UdpClient? slave = CreateAndStartUdpSlave(502, dataStore);
        Thread?workerThread1 = new(ReadThread);
        Thread?workerThread2 = new(ReadThread);

        workerThread1.Start();
        workerThread2.Start();

        workerThread1.Join();
        workerThread2.Join();
    }
示例#11
0
        public Node(int id, int port, string typeStr)
        {
            _id        = id;
            _port      = port;
            _typeStr   = typeStr;
            _name      = id.ToString() + "#设备";
            _dataStore = DataStoreFactory.CreateDefaultDataStore();
            _status    = "服务未启动";
            string errStr = "";

            if (!initNodeData(ref errStr))
            {
                string outStr = "[" + _name + "]" + "CSV数据解析失败! \n请检查" + typeStr + ".CSV \n";
                outStr += errStr;
                MessageBox.Show(outStr, "出错了", MessageBoxButtons.OK, MessageBoxIcon.Error);  //用风机类型初始化数据
            }
        }
        public void ModbusUdpSlave_MultiThreaded()
        {
            var dataStore = DataStoreFactory.CreateDefaultDataStore();

            dataStore.CoilDiscretes.Add(false);

            using (var slave = CreateAndStartUdpSlave(502, dataStore))
            {
                var workerThread1 = new Thread(ReadThread);
                var workerThread2 = new Thread(ReadThread);
                workerThread1.Start();
                workerThread2.Start();

                workerThread1.Join();
                workerThread2.Join();
            }
        }
示例#13
0
        public void GeneralLoadTestSharepoint()
        {
            var configuration = new LoadFromSharepointConfiguration()
            {
                ListName         = "My Test List",
                CamlQueryViewXml = "<View><Query><Where><Geq><FieldRef Name='ID'/><Value Type='Number'>1</Value></Geq></Where></Query><RowLimit>100</RowLimit></View>"
            };

            IDataSource loadFromDynamicsCrm = new LoadFromSharepoint()
            {
                Configuration = configuration
            };

            IDatastore dataObject = DataStoreFactory.GetDatastore();

            loadFromDynamicsCrm.LoadData(connection, dataObject, ReportProgressMethod);
        }
        public void GeneralLoadTestExcel()
        {
            ConnectToExcelConfiguration configuration = new ConnectToExcelConfiguration();

            configuration.FilePath  = @"TestData\LoadFromExcel\TestData.xlsx";
            configuration.SheetName = "Contacts";

            IConnection excelConnection = new ConnectToExcel()
            {
                Configuration = configuration
            };

            IDataSource loadFromExcel = new LoadFromExcel();

            IDatastore dataObject = DataStoreFactory.GetDatastore();

            loadFromExcel.LoadData(excelConnection, dataObject, ReportProgressMethod);
        }
        public IDatastore TransformData(IConnection connection, IDatabaseInterface databaseInterface, IDatastore datastore1, IDatastore datastore2, ReportProgressMethod reportProgress)
        {
            IDatastore resultDatastore = DataStoreFactory.GetDatastore();

            InitializeOutputColumnsConfiguration();
            InitializeResultDatastore(resultDatastore);
            AnalyzeDatastores(datastore1, datastore2);
            BuildDatastoreKeys();
            JoinDatastoreRecords(resultDatastore);

            if (mappingHasBeenReversed)
            {
                ReverseMapping(); // Reverse it back
                mappingHasBeenReversed = false;
            }

            return(resultDatastore);
        }
示例#16
0
        private void ConfigureSensors()
        {
            mDataStore = DataStoreFactory.CreateDefaultDataStore(0, 0, 1200, 1200);

            mSensors = new List <Sensor>
            {
                new Sensor(SensorName.Filter(SignalName.Pressure), mSignals),
                new Sensor(SensorName.Steering(SignalName.Pressure), mSignals),
                new Sensor(SensorName.Cabel(SignalName.Pressure), mSignals),
                new Sensor(SensorName.Brake(SignalName.Pressure), mSignals),
                new Sensor(SensorName.Tank(SignalName.Level), mSignals),
                new Sensor(SensorName.Tank(SignalName.Temperature), mSignals)
            };


            mKeyboard = mSignals.GetSignal(SensorName.Keyboard());
            //mSignals.GetSignal(SensorName.Tank(SignalName.Level)).OnUpdate += signal => Console.WriteLine("Level: {0}", signal.Value);
            Keyboard.Init(mKeyboard);
        }
示例#17
0
        private void startButton_Click(object sender, EventArgs e)
        {
            if (logoDriver.status == LogoStatus.Offline)
            {
                IPAddress address;
                if (onlyLocal_checkBox1.Checked)
                {
                    address = new IPAddress(new byte[] { 127, 0, 0, 1 });
                }
                else
                {
                    try
                    {
                        address = IPAddress.Parse((String)addressBox.SelectedItem);
                    }
                    catch (ArgumentNullException ex) { address = new IPAddress(new byte[] { 127, 0, 0, 1 }); }
                }
                if (!logoDriver.start())
                {
                    MessageBox.Show("Der Ausgewählte Com-Port ist belegt.");
                }
                else
                {
                    slaveTcpListener = new TcpListener(address, int.Parse(portBox.Text));

                    modbusSlave = ModbusTcpSlave.CreateTcp(1, slaveTcpListener);

                    // Datenspeicher/Prozessabbild initalisieren.
                    modbusSlave.DataStore  = DataStoreFactory.CreateDefaultDataStore();
                    logoDriver.modbusSlave = modbusSlave;
                    slaveThread            = new Thread(modbusSlave.Listen);
                    slaveThread.Start();
                    startButton.Text = "Trennen";
                }
            }
            else
            {
                logoDriver.stop();
                startButton.Text = "Verbinden";
                modbusSlave.Dispose();
                slaveTcpListener.Stop();
            }
        }
示例#18
0
        /// <summary>
        /// Simple Modbus TCP slave example.
        /// </summary>
        public static void StartModbusTcpSlave()
        {
            byte      slaveId = 1;
            int       port    = 502;
            IPAddress address = new IPAddress(new byte[] { 127, 0, 0, 1 });

            // create and start the TCP slave
            TcpListener slaveTcpListener = new TcpListener(address, port);

            slaveTcpListener.Start();

            ModbusSlave slave = ModbusTcpSlave.CreateTcp(slaveId, slaveTcpListener);

            slave.DataStore = DataStoreFactory.CreateDefaultDataStore();

            slave.Listen();

            // prevent the main thread from exiting
            Thread.Sleep(Timeout.Infinite);
        }
示例#19
0
        /// <summary>
        /// Simple Modbus serial RTU slave example.
        /// </summary>
        public static void StartModbusSerialRtuSlave()
        {
            using (SerialPort slavePort = new SerialPort("COM2"))
            {
                // configure serial port
                slavePort.BaudRate = 9600;
                slavePort.DataBits = 8;
                slavePort.Parity   = Parity.None;
                slavePort.StopBits = StopBits.One;
                slavePort.Open();

                byte unitId = 1;

                // create modbus slave
                ModbusSlave slave = ModbusSerialSlave.CreateRtu(unitId, slavePort);
                slave.DataStore = DataStoreFactory.CreateDefaultDataStore();

                slave.Listen();
            }
        }
示例#20
0
        public ModbusTCPSlaveDevice(Project theProject)
        {
            mProject = theProject;

            // TODO: make ID and port properties and "start" object after fully initialized (register as needing "start" after config fully processed?  add a method to all objects which gets called after object is fully config'ed?
            byte slaveID = 1;
            int  port    = 502;
            //IPAddress address = new IPAddress(new byte[] { 127, 0, 0, 1 });

            // create and start the TCP slave
            TcpListener slaveTcpListener = new TcpListener(port);

            slaveTcpListener.Start();
            mSlave           = ModbusTcpSlave.CreateTcp(slaveID, slaveTcpListener);
            mSlave.DataStore = DataStoreFactory.CreateDefaultDataStore();
            Thread slaveThread = new Thread(mSlave.Listen);

            slaveThread.Start();
            theProject.globalModbusSlave = this;
        }
示例#21
0
        public static IDatastore LoadExcelsheet(string sheetPath, string sheetName)
        {
            ConnectToExcelConfiguration configuration = new ConnectToExcelConfiguration();

            configuration.FilePath  = sheetPath;
            configuration.SheetName = sheetName;

            IConnection excelConnection = new ConnectToExcel()
            {
                Configuration = configuration
            };

            IDataSource loadFromExcel = new LoadFromExcel();

            IDatastore dataStore = DataStoreFactory.GetDatastore();

            loadFromExcel.LoadData(excelConnection, dataStore, ReportProgressMethod);

            return(dataStore);
        }
示例#22
0
        public void DataStoreReadFromEvent_ReadHoldingRegisters()
        {
            DataStore dataStore = DataStoreFactory.CreateTestDataStore();

            bool readFromEventFired  = false;
            bool writtenToEventFired = false;

            dataStore.DataStoreReadFrom += (obj, e) =>
            {
                readFromEventFired = true;
                Assert.AreEqual(3, e.StartAddress);
                Assert.AreEqual(new ushort[] { 4, 5, 6 }, e.Data.B.ToArray());
                Assert.AreEqual(ModbusDataType.HoldingRegister, e.ModbusDataType);
            };

            dataStore.DataStoreWrittenTo += (obj, e) => writtenToEventFired = true;

            DataStore.ReadData <RegisterCollection, ushort>(dataStore, dataStore.HoldingRegisters, 3, 3, new object());
            Assert.IsTrue(readFromEventFired);
            Assert.IsFalse(writtenToEventFired);
        }
示例#23
0
        public void DataStoreReadFromEvent_ReadInputs()
        {
            DataStore dataStore = DataStoreFactory.CreateTestDataStore();

            bool readFromEventFired  = false;
            bool writtenToEventFired = false;

            dataStore.DataStoreReadFrom += (obj, e) =>
            {
                readFromEventFired = true;
                Assert.AreEqual(4, e.StartAddress);
                Assert.AreEqual(new bool[] { false }, e.Data.A.ToArray());
                Assert.AreEqual(ModbusDataType.Input, e.ModbusDataType);
            };

            dataStore.DataStoreWrittenTo += (obj, e) => writtenToEventFired = true;

            DataStore.ReadData <DiscreteCollection, bool>(dataStore, dataStore.InputDiscretes, 4, 1, new object());
            Assert.IsTrue(readFromEventFired);
            Assert.IsFalse(writtenToEventFired);
        }
示例#24
0
        public void DataStoreReadFromEvent_ReadInputRegisters()
        {
            DataStore dataStore = DataStoreFactory.CreateTestDataStore();

            bool readFromEventFired  = false;
            bool writtenToEventFired = false;

            dataStore.DataStoreReadFrom += (obj, e) =>
            {
                readFromEventFired = true;
                Assert.Equal(4, e.StartAddress);
                Assert.Equal(new ushort[] {}, e.Data.B.ToArray());
                Assert.Equal(ModbusDataType.InputRegister, e.ModbusDataType);
            };

            dataStore.DataStoreWrittenTo += (obj, e) => writtenToEventFired = true;

            dataStore.ReadData <RegisterCollection, ushort>(dataStore.InputRegisters, 4, 0, new object());
            Assert.True(readFromEventFired);
            Assert.False(writtenToEventFired);
        }
示例#25
0
        static void Initialization(Configuration config)
        {
            Logger = new Logger.Logger(config.LogPath, new TimeProvider());
            Logger.Log("Logger initialized");

            Reader = InputProviderFactory.CreateInputReader(config);
            Logger.Log("Reader of type " + Reader.GetType().Name + " initialized");

            Driver = new InternetExplorerDriver("Resources/");
            Logger.Log("InternetExplorerDriver initialized");

            Parsers = new List <IAbstractSiteParser>()
            {
                //new Auto911Parser("http://911auto.com.ua/search/", Driver, Logger),
                //new AutoKlad("SiteParser/IE Driver/", Logger)
            };
            Logger.Log("Site parsers initialized");

            Store = DataStoreFactory.CreateDataStore(config, Logger);
            Logger.Log("DataStore of type " + Store.GetType() + "Initialized");
        }
示例#26
0
        /// <summary>
        ///     Simple Modbus serial ASCII slave example.
        /// </summary>
        public static void StartModbusSerialAsciiSlave()
        {
            using (SerialPort slavePort = new SerialPort("COM2"))
            {
                // configure serial port
                slavePort.BaudRate = 9600;
                slavePort.DataBits = 8;
                slavePort.Parity   = Parity.None;
                slavePort.StopBits = StopBits.One;
                slavePort.Open();

                byte unitId = 1;

                var adapter = new SerialPortAdapter(slavePort);
                // create modbus slave
                ModbusSlave slave = ModbusSerialSlave.CreateAscii(unitId, adapter);
                slave.DataStore = DataStoreFactory.CreateDefaultDataStore();

                slave.ListenAsync().GetAwaiter().GetResult();
            }
        }
示例#27
0
        public void Test_RelateContactsWithInvoice()
        {
            Entity contact   = Test_Helpers.CreateDummyContact();
            Guid   contactId = organizationService.Create(contact);

            Entity invoice   = Test_Helpers.CreateDummyInvoice();
            Guid   invoiceId = organizationService.Create(invoice);

            WriteToDynamicsCrmN2NConfiguration writeToDynamicsCrmN2NConfig = new WriteToDynamicsCrmN2NConfiguration();

            writeToDynamicsCrmN2NConfig.MultipleFoundMode = N2NMultipleFoundMode.None;
            writeToDynamicsCrmN2NConfig.Entity1Name       = "contact";
            writeToDynamicsCrmN2NConfig.Entity1Mapping    = new List <DataMapping>()
            {
                new DataMapping("FirstName", "firstname")
            };
            writeToDynamicsCrmN2NConfig.Entity2Name    = "invoice;contactinvoices_association";
            writeToDynamicsCrmN2NConfig.Entity2Mapping = new List <DataMapping>()
            {
                new DataMapping("InvoiceNo", "invoicenumber")
            };
            writeToDynamicsCrmN2NConfig.ConfigurationId = Guid.NewGuid();
            writeToDynamicsCrmN2NConfig.SelectedConnectionConfigurationId = Test_Helpers.CRMCONNECTIONID;

            IDatastore dataObject = DataStoreFactory.GetDatastore();

            dataObject.AddColumn(new ColumnMetadata("FirstName"));
            dataObject.AddColumn(new ColumnMetadata("InvoiceNo"));

            dataObject.AddData(new object[] { contact["firstname"], invoice["invoicenumber"] });

            IModule module = Activator.CreateInstance(typeof(WriteToDynamicsCrmN2N)) as IModule;

            module.SetConfiguration(writeToDynamicsCrmN2NConfig);

            ((IDataTarget)module).WriteData(connection, new DummyDatabaseInterface(), dataObject, Test_Helpers.ReportProgressMethod);

            organizationService.Delete("contact", contactId);
            organizationService.Delete("invoice", invoiceId);
        }
示例#28
0
        public void DataStoreWrittenToEvent_WriteHoldingRegisters()
        {
            DataStore dataStore = DataStoreFactory.CreateTestDataStore();

            bool readFromEventFired  = false;
            bool writtenToEventFired = false;

            dataStore.DataStoreWrittenTo += (obj, e) =>
            {
                writtenToEventFired = true;
                Assert.AreEqual(3, e.Data.B.Count);
                Assert.AreEqual(0, e.StartAddress);
                Assert.AreEqual(new ushort[] { 5, 6, 7 }, e.Data.B.ToArray());
                Assert.AreEqual(ModbusDataType.HoldingRegister, e.ModbusDataType);
            };

            dataStore.DataStoreReadFrom += (obj, e) => readFromEventFired = true;

            DataStore.WriteData(dataStore, new RegisterCollection(5, 6, 7), dataStore.HoldingRegisters, 0, new object());
            Assert.IsFalse(readFromEventFired);
            Assert.IsTrue(writtenToEventFired);
        }
示例#29
0
        public void DataStoreWrittenToEvent_WriteCoils()
        {
            DataStore dataStore = DataStoreFactory.CreateTestDataStore();

            bool readFromEventFired  = false;
            bool writtenToEventFired = false;

            dataStore.DataStoreWrittenTo += (obj, e) =>
            {
                writtenToEventFired = true;
                Assert.AreEqual(3, e.Data.A.Count);
                Assert.AreEqual(4, e.StartAddress);
                Assert.AreEqual(new [] { true, false, true }, e.Data.A.ToArray());
                Assert.AreEqual(ModbusDataType.Coil, e.ModbusDataType);
            };

            dataStore.DataStoreReadFrom += (obj, e) => readFromEventFired = true;

            DataStore.WriteData(dataStore, new DiscreteCollection(true, false, true), dataStore.CoilDiscretes, 4, new object());
            Assert.IsFalse(readFromEventFired);
            Assert.IsTrue(writtenToEventFired);
        }
示例#30
0
        /// <summary>
        ///     Simple Modbus TCP slave example.
        /// </summary>
        public void StartModbusTcpSlave()
        {
            byte slaveId = 1;

            int port = 502;

            IPAddress address = new IPAddress(new byte[] { 127, 0, 0, 1 });

            // create and start the TCP slave

            TcpListener slaveTcpListener = new TcpListener(address, port);

            slaveTcpListener.Start();



            ModbusSlave slave = ModbusTcpSlave.CreateTcp(slaveId, slaveTcpListener);

            slave.DataStore = DataStoreFactory.CreateDefaultDataStore();

            slave.ListenAsync().GetAwaiter().GetResult();
        }