コード例 #1
0
        public void TestRepMgr()
        {
            testName = "TestRepMgr";
            SetUpTest(true);

            // Initialize ports for master and client.
            ports.Clear();
            AvailablePorts portGen = new AvailablePorts();

            ports.Insert(0, portGen.Current);
            portGen.MoveNext();
            ports.Insert(1, portGen.Current);

            clientStartSignal = new AutoResetEvent(false);
            masterCloseSignal = new AutoResetEvent(false);

            Thread thread1 = new Thread(new ThreadStart(Master));
            Thread thread2 = new Thread(new ThreadStart(Client));

            // Start master thread before client thread.
            thread1.Start();
            Thread.Sleep(1000);
            thread2.Start();
            thread2.Join();
            thread1.Join();

            clientStartSignal.Close();
            masterCloseSignal.Close();
        }
コード例 #2
0
ファイル: SerialPortFactory.cs プロジェクト: quain24/SHIELD
        public virtual bool Create(int portNumber,
                                   int baudRate      = 19200,
                                   int dataBits      = 8,
                                   Parity parity     = Parity.None,
                                   StopBits stopBits = StopBits.One)
        {
            string portName = "COM" + portNumber;

            if (!AvailablePorts.Contains(portName))
            {
                return(false);
            }

            _port = new SerialPort
            {
                PortName     = portName,
                BaudRate     = baudRate,
                DataBits     = dataBits,
                Parity       = parity,
                StopBits     = stopBits,
                ReadTimeout  = 1000,
                WriteTimeout = 1000,
                Encoding     = Encoding.ASCII
            };

            return(true);
        }
コード例 #3
0
 public ComPortParams()
 {
     PortId   = AvailablePorts.FirstOrDefault();
     BaudRate = 57600;
     DataBits = 8;
     Parity   = AvailableParity.FirstOrDefault();
     StopBits = "One";
 }
コード例 #4
0
        private void OnRefreshingAvailablePorts()
        {
            string selectedPort = SelectedPort;

            AvailablePorts.Clear();
            AvailablePorts.AddCollection(_connectionManager.GetSerialPortNames());
            SelectedPort = !AvailablePorts.Contains(selectedPort) ? null : selectedPort;
        }
コード例 #5
0
 private void RefreshPorts()
 {
     AvailablePorts.Clear();
     foreach (var c in _comms.ListCommPorts())
     {
         AvailablePorts.Add(c);
     }
 }
コード例 #6
0
 private void UpdatePorts()
 {
     AvailablePorts.Clear();
     foreach (var port in SerialPort.GetPortNames())
     {
         AvailablePorts.Add(port);
     }
 }
コード例 #7
0
        public MainVm(IComms session)
        {
            _comms = session;
            _comms.LineOfDataReceived += _session_LineOfDataReceived;

            MonitorVms = new BindingList <IPresentationModel>
            {
                new SensorsVm(),
                new TransmitterChannelsVm(),
                new FlightControlPidsVm(),
                new PositionAltitudePidsVm(),
                new GpsStatusVm(),

                //new MotorCommandsVm(session),
                new SerialMonitorVm(),
            };

            foreach (var vm in MonitorVms)
            {
                if (vm is ItalksToApm)
                {
                    vm.sendTextToApm += MainVm_sendTextToApm;
                }
            }

            ConnectCommand = new DelegateCommand(
                _ => Connect(),
                _ => _connectionState == SessionStates.Disconnected && AvailablePorts.Contains(SelectedPort));

            DisconnectCommand = new DelegateCommand(_ => Disconnect(), _ => IsConnected);

            RefreshPortListCommand = new DelegateCommand(_ => RefreshPorts());

            RestoreDefaultsCommand = new DelegateCommand(_ => RestoreDefaults(), _ => IsConnected);

            WriteToEepromCommand = new DelegateCommand(_ => WriteToEeprom(), _ => IsConnected);

            ConnectionState = SessionStates.Disconnected;

            AvailablePorts = new BindingList <string>();

            AvailableBaudRates = new BindingList <int>()
            {
                115200, 57600, 38400, 9600
            };
            SelectedBaudRate = 115200;

            RefreshPorts();

            // Initially have selected the last discovered com port.
            // I think this is more likely to be the correct one, as
            // the built in comports come first, then the usb/serial
            // converter ports
            if (AvailablePorts.Count > 0)
            {
                SelectedPort = AvailablePorts[AvailablePorts.Count - 1];
            }
        }
コード例 #8
0
ファイル: RIProxy.cs プロジェクト: AlphaSound/Gamma
        protected async Task ReleasePort(int port)
        {
            if (Sockets.TryGetValue(port, out ProxySocket socket))
            {
                await Task.Run(socket.Dispose);

                AvailablePorts.Enqueue(port);
            }
        }
コード例 #9
0
        public MainViewModel()
        {
            AvailablePorts = SerialPort.GetPortNames().OrderBy(x => x).ToList();

            SelectedComsPort = AvailablePorts.Last();

            BaudRate = "19200";

            AvailableDevices = new List <GSIOCDeviceInfo>();
        }
コード例 #10
0
        public void TestElection()
        {
            testName = "TestElection";
            SetUpTest(true);

            // Initialize ports for one master, and three clients.
            ports.Clear();
            AvailablePorts portGen = new AvailablePorts();

            ports.Insert(0, portGen.Current);
            portGen.MoveNext();
            ports.Insert(1, portGen.Current);
            portGen.MoveNext();
            ports.Insert(2, portGen.Current);
            portGen.MoveNext();
            ports.Insert(3, portGen.Current);

            client1StartSignal = new AutoResetEvent(false);
            client2StartSignal = new AutoResetEvent(false);
            client1ReadySignal = new AutoResetEvent(false);
            client2ReadySignal = new AutoResetEvent(false);
            client3StartSignal = new AutoResetEvent(false);
            client3ReadySignal = new AutoResetEvent(false);
            masterLeaveSignal  = new AutoResetEvent(false);

            Thread thread1 = new Thread(
                new ThreadStart(UnstableMaster));
            Thread thread2 = new Thread(
                new ThreadStart(StableClient1));
            Thread thread3 = new Thread(
                new ThreadStart(StableClient2));
            Thread thread4 = new Thread(
                new ThreadStart(StableClient3));

            thread1.Start();
            Thread.Sleep(1000);
            thread2.Start();
            thread3.Start();
            thread4.Start();

            thread4.Join();
            thread3.Join();
            thread2.Join();
            thread1.Join();

            client1StartSignal.Close();
            client2StartSignal.Close();
            client1ReadySignal.Close();
            client2ReadySignal.Close();
            client3ReadySignal.Close();
            client3StartSignal.Close();
            masterLeaveSignal.Close();
        }
コード例 #11
0
        //private WUData _LastReadWUData;
        //public WUData LastReadWattData
        //{
        //    get { return _LastReadWUData; }
        //    set { _LastReadWUData = value; }
        //}
        #endregion

        #region Public Methods
        /// <summary> Connect to the WattsUp and start recording. Returns true on success, else false  </summary>
        public bool Start(out string err)
        {
            err = string.Empty;
            // LastReadWattData = new WUData();

            if (AvailablePorts.Count() > 0)
            {
                //Set the default port to the first available open port in the computer
                if (string.IsNullOrEmpty(this.Port))
                {
                    this.Port = AvailablePorts.FirstOrDefault();
                }

                try
                {
                    //Initialize the serial port
                    this.sp = new SerialPort(this.Port, this.BAUD, System.IO.Ports.Parity.None, this.DATABITS);
                    this.sp.DataReceived += new SerialDataReceivedEventHandler(this.sp_DataReceived);

                    //Open the serial port, set a read timeout on the serial port,
                    //ans then command the WattsUp to return data for the specified internal sampling rate.

                    this.sp.Open();
                    if (this.sp.IsOpen)
                    {
                        this.sp.ReadTimeout = this.READTIMEOUT;
                        if (this.Write(WUCommands.ExternalModeStartString + this.InternalSamplingRate.ToString() + WUCommands.ExternalModeEndString) == "")
                        {
                            return(false);
                        }
                        return(true);
                    }
                    return(false);
                }
                catch (Exception ex)
                {
                    err = ex.Message;
                    return(false);
                }
            }
            else
            {
                err = "No open serial port found!!!";
                return(false);
            }
        }
コード例 #12
0
 /// <summary> Default constructor. </summary>
 public ELLDevicesViewModel()
 {
     MaxSearchLimit   = 'F';
     MinSearchLimit   = '0';
     SelectedPort     = CommonUserSettings.ReadUserSetting("DevicePort", "Com1");
     ShowTxLoggedCmds = CommonUserSettings.ReadUserSetting("ShowTxOutput", true);
     ShowRxLoggedCmds = CommonUserSettings.ReadUserSetting("ShowRxOutput", true);
     ValidAddress     = _ellDevice.ValidAddress;
     AvailablePorts   = SerialPort.GetPortNames().ToList();
     if (!AvailablePorts.Contains(SelectedPort))
     {
         SelectedPort = AvailablePorts.Count > 0 ? AvailablePorts[0] : "";
     }
     IsConnected             = false;
     _commsLogStore          = new List <OutputItem>();
     CommsLog                = new ObservableCollection <OutputItem>(_commsLogStore);
     BackgroundThreadManager = new BackgroundThreadManager();
     _ellDevice.MessageUpdates.OutputUpdate    += OutputUpdate;
     _ellDevice.MessageUpdates.ParameterUpdate += ParameterUpdate;
     _sequenceViewModel = new ELLSequenceViewModel(this, _ellDevice);
     UpdateUI();
 }
コード例 #13
0
        public void TestElection()
        {
            testName = "TestElection";
            SetUpTest(true);

            // Initialize ports for one master, and three clients.
            ports.Clear();
            AvailablePorts portGen = new AvailablePorts();

            ports.Insert(0, portGen.Current);
            portGen.MoveNext();
            ports.Insert(1, portGen.Current);
            portGen.MoveNext();
            ports.Insert(2, portGen.Current);
            portGen.MoveNext();
            ports.Insert(3, portGen.Current);

            /*
             * The *Signals are used as triggers to control the test
             * work flow.  The client1StartSignal would be set once
             * the master is ready and notify the client1 to start.
             * The client2StartSignal would be set once the client1
             * is ready and notify the client2 to start.  The
             * client3StartSignal is similar.  The masterLeaveSignal
             * would be set once the last client client3 is ready
             * and notify the master to leave.  The
             * clientsElectionSignal would be set when the master
             * has already left and new master would be elected.
             */
            client1StartSignal    = new AutoResetEvent(false);
            client2StartSignal    = new AutoResetEvent(false);
            client3StartSignal    = new AutoResetEvent(false);
            clientsElectionSignal = new AutoResetEvent(false);
            masterLeaveSignal     = new AutoResetEvent(false);
            // Count startup done event.
            startUpDone = 0;
            // Whether finish election.
            electionDone = false;

            Thread thread1 = new Thread(
                new ThreadStart(UnstableMaster));
            Thread thread2 = new Thread(
                new ThreadStart(StableClient1));
            Thread thread3 = new Thread(
                new ThreadStart(StableClient2));
            Thread thread4 = new Thread(
                new ThreadStart(StableClient3));

            try {
                thread1.Start();

                /*
                 * After start up is done at master, start
                 * client1.  Wait for the signal for 50000 ms.
                 */
                if (!client1StartSignal.WaitOne(50000))
                {
                    throw new TestException();
                }
                thread2.Start();

                // Ready to start client2.
                if (!client2StartSignal.WaitOne(50000))
                {
                    throw new TestException();
                }
                thread3.Start();

                // Ready to start client3.
                if (!client3StartSignal.WaitOne(50000))
                {
                    throw new TestException();
                }
                thread4.Start();

                thread4.Join();
                thread3.Join();
                thread2.Join();
                thread1.Join();

                Assert.IsTrue(electionDone);
            } catch (TestException e) {
                if (thread1.IsAlive)
                {
                    thread1.Abort();
                }
                if (thread2.IsAlive)
                {
                    thread2.Abort();
                }
                if (thread3.IsAlive)
                {
                    thread3.Abort();
                }
                if (thread4.IsAlive)
                {
                    thread4.Abort();
                }
                throw e;
            } finally {
                client1StartSignal.Close();
                client2StartSignal.Close();
                client3StartSignal.Close();
                clientsElectionSignal.Close();
                masterLeaveSignal.Close();
            }
        }
コード例 #14
0
        public void TestReplicationView()
        {
            testName = "TestReplicationView";
            SetUpTest(true);

            string masterHome = testHome + "\\Master";

            Configuration.ClearDir(masterHome);

            string clientHome1 = testHome + "\\Client1";

            Configuration.ClearDir(clientHome1);

            string clientHome2 = testHome + "\\Client2";

            Configuration.ClearDir(clientHome2);

            ports.Clear();
            AvailablePorts portGen = new AvailablePorts();
            uint           mPort   = portGen.Current;

            portGen.MoveNext();
            uint cPort1 = portGen.Current;

            portGen.MoveNext();
            uint cPort2 = portGen.Current;

            /* Open environment with replication configuration. */
            DatabaseEnvironmentConfig cfg =
                new DatabaseEnvironmentConfig();

            cfg.Create         = true;
            cfg.RunRecovery    = true;
            cfg.UseLocking     = true;
            cfg.UseLogging     = true;
            cfg.UseMPool       = true;
            cfg.UseReplication = true;
            cfg.FreeThreaded   = true;
            cfg.UseTxns        = true;
            cfg.EventNotify    = new EventNotifyDelegate(stuffHappened);

            cfg.RepSystemCfg = new ReplicationConfig();
            cfg.RepSystemCfg.RepmgrSitesConfig.Add(new DbSiteConfig());
            cfg.RepSystemCfg.RepmgrSitesConfig[0].Host         = "127.0.0.1";
            cfg.RepSystemCfg.RepmgrSitesConfig[0].Port         = mPort;
            cfg.RepSystemCfg.RepmgrSitesConfig[0].LocalSite    = true;
            cfg.RepSystemCfg.RepmgrSitesConfig[0].GroupCreator = true;
            cfg.RepSystemCfg.Priority = 100;

            /* Start up the master site. */
            DatabaseEnvironment mEnv = DatabaseEnvironment.Open(
                masterHome, cfg);

            mEnv.DeadlockResolution = DeadlockPolicy.DEFAULT;
            mEnv.RepMgrStartMaster(2);

            /* Open the environment of the client 1 site. */
            cfg.RepSystemCfg.RepmgrSitesConfig[0].Port         = cPort1;
            cfg.RepSystemCfg.RepmgrSitesConfig[0].GroupCreator = false;
            cfg.RepSystemCfg.Priority = 10;
            cfg.RepSystemCfg.RepmgrSitesConfig.Add(new DbSiteConfig());
            cfg.RepSystemCfg.RepmgrSitesConfig[1].Host   = "127.0.0.1";
            cfg.RepSystemCfg.RepmgrSitesConfig[1].Port   = mPort;
            cfg.RepSystemCfg.RepmgrSitesConfig[1].Helper = true;
            /* Set the site as a partial view. */
            cfg.RepSystemCfg.ReplicationView = repView;
            DatabaseEnvironment cEnv1 = DatabaseEnvironment.Open(
                clientHome1, cfg);

            /* Open the environment of the client 2 site. */
            cfg.RepSystemCfg.RepmgrSitesConfig[0].Port         = cPort2;
            cfg.RepSystemCfg.RepmgrSitesConfig[0].GroupCreator = false;
            cfg.RepSystemCfg.Priority = 10;
            /* Set the site as a full view. */
            cfg.RepSystemCfg.ReplicationView = null;
            DatabaseEnvironment cEnv2 = DatabaseEnvironment.Open(
                clientHome2, cfg);

            /*
             * Create two database files db1.db and db2.db
             * on the master.
             */
            BTreeDatabaseConfig btreeDBConfig =
                new BTreeDatabaseConfig();

            btreeDBConfig.Env        = mEnv;
            btreeDBConfig.Creation   = CreatePolicy.ALWAYS;
            btreeDBConfig.AutoCommit = true;
            BTreeDatabase db1 =
                BTreeDatabase.Open("db1.db", btreeDBConfig);
            BTreeDatabase db2 =
                BTreeDatabase.Open("db2.db", btreeDBConfig);

            db1.Close();
            db2.Close();

            /* Start up the client sites. */
            cEnv1.RepMgrStartClient(2, false);
            cEnv2.RepMgrStartClient(2, false);

            /* Wait for clients to start up */
            int i = 0;

            while (!cEnv1.ReplicationSystemStats().ClientStartupComplete)
            {
                if (i < 20)
                {
                    Thread.Sleep(1000);
                    i++;
                }
                else
                {
                    throw new TestException();
                }
            }
            i = 0;
            while (!cEnv2.ReplicationSystemStats().ClientStartupComplete)
            {
                if (i < 20)
                {
                    Thread.Sleep(1000);
                    i++;
                }
                else
                {
                    throw new TestException();
                }
            }

            /*
             * Verify that the file db2.db is replicated to the
             * client 2 (full view), but not to the client 1
             * (partial view), and the file db1.db is
             * replicated to both sites.
             */
            btreeDBConfig.Env      = cEnv1;
            btreeDBConfig.Creation = CreatePolicy.NEVER;
            db1 = BTreeDatabase.Open("db1.db", btreeDBConfig);
            try
            {
                db2 = BTreeDatabase.Open("db2.db", btreeDBConfig);
                throw new TestException();
            }
            catch (DatabaseException e) {
                Assert.AreEqual(0, String.Compare(
                                    "No such file or directory", e.Message));
            }
            db1.Close();
            btreeDBConfig.Env = cEnv2;
            db1 = BTreeDatabase.Open("db1.db", btreeDBConfig);
            db2 = BTreeDatabase.Open("db2.db", btreeDBConfig);
            db1.Close();
            db2.Close();

            /* Get the replication manager statistic. */
            RepMgrStats repMgrStats = mEnv.RepMgrSystemStats();

            Assert.AreEqual(1, repMgrStats.ParticipantSites);
            Assert.AreEqual(3, repMgrStats.TotalSites);
            Assert.AreEqual(2, repMgrStats.ViewSites);

            /*
             * Verify the master is not a view locally
             * or from remote site.
             */
            ReplicationStats repstats =
                mEnv.ReplicationSystemStats();

            Assert.AreEqual(false, repstats.View);
            RepMgrSite[] rsite = cEnv1.RepMgrRemoteSites;
            Assert.AreEqual(2, rsite.Length);
            for (i = 0; i < rsite.Length; i++)
            {
                if (rsite[i].Address.Port == mPort)
                {
                    break;
                }
            }
            Assert.Greater(rsite.Length, i);
            Assert.AreEqual(false, rsite[i].isView);

            /*
             * Verify the clients are views locally
             * and from remote site.
             */
            rsite = mEnv.RepMgrRemoteSites;
            Assert.AreEqual(2, rsite.Length);
            Assert.AreEqual(true, rsite[0].isView);
            Assert.AreEqual(true, rsite[1].isView);
            repstats = cEnv1.ReplicationSystemStats();
            Assert.AreEqual(true, repstats.View);
            repstats = cEnv2.ReplicationSystemStats();
            Assert.AreEqual(true, repstats.View);

            cEnv2.Close();
            cEnv1.Close();
            mEnv.Close();
        }
コード例 #15
0
        private void loadForm()
        {
            clearErrors();

            AvailablePorts.Clear();
            AvailableStatuses.Clear();
            AvailableStatuses.Add("AT GIN");
            AvailableStatuses.Add("GINNED");

            this.TargetStatus = "AT GIN";

            AvailablePorts.Add("NONE");
            foreach (var p in System.IO.Ports.SerialPort.GetPortNames().OrderBy(s => s))
            {
                AvailablePorts.Add(p);
            }

            using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork())
            {
                var repo = dp.SettingsRepository;

                var portSetting = repo.FindSingle(x => x.Key == BridgeSettingKeys.SCALE_COM_PORT);
                if (portSetting != null && !string.IsNullOrWhiteSpace(portSetting.Value))
                {
                    PortName = portSetting.Value;
                }
                else
                {
                    if (AvailablePorts.Count > 0)
                    {
                        PortName = AvailablePorts.First();
                    }
                    else
                    {
                        PortName = "";
                    }
                }

                portSetting = repo.FindSingle(x => x.Key == BridgeSettingKeys.BARCODE_COM_PORT);
                if (portSetting != null && !string.IsNullOrWhiteSpace(portSetting.Value))
                {
                    BarcodePortName = portSetting.Value;
                }
                else
                {
                    if (AvailablePorts.Count > 0)
                    {
                        BarcodePortName = AvailablePorts.First();
                    }
                    else
                    {
                        BarcodePortName = "";
                    }
                }

                ScreenTitle          = repo.GetSettingWithDefault(BridgeSettingKeys.GIN_NAME, "");
                BridgeID             = repo.GetSettingWithDefault(BridgeSettingKeys.BRIDGE_ID, "");
                Latitude             = repo.GetSettingWithDefault(BridgeSettingKeys.LATITUDE, "");
                Longitude            = repo.GetSettingWithDefault(BridgeSettingKeys.LONGITUDE, "");
                TargetStatus         = repo.GetSettingWithDefault(BridgeSettingKeys.TARGET_STATUS, "AT GIN");
                DocumentDbConnection = repo.GetSettingWithDefault(BridgeSettingKeys.DOCUMENT_DB_KEY, "");
                DocumentDbEndpoint   = repo.GetSettingWithDefault(BridgeSettingKeys.DOCUMENTDB_ENDPOINT, "");
                DataSyncInterval     = int.Parse(repo.GetSettingWithDefault(BridgeSettingKeys.DATA_SYNC_INTERVAL, "1"));
            }
        }
コード例 #16
0
        public void TestRepMgrSite()
        {
            testName = "TestRepMgrSite";
            SetUpTest(true);

            string masterHome = testHome + "\\Master";

            Configuration.ClearDir(masterHome);

            string clientHome = testHome + "\\Client";

            Configuration.ClearDir(clientHome);

            ports.Clear();
            AvailablePorts portGen = new AvailablePorts();
            uint           mPort   = portGen.Current;

            portGen.MoveNext();
            uint cPort = portGen.Current;

            // Open environment with replication configuration.
            DatabaseEnvironmentConfig cfg =
                new DatabaseEnvironmentConfig();

            cfg.Create         = true;
            cfg.RunRecovery    = true;
            cfg.UseLocking     = true;
            cfg.UseLogging     = true;
            cfg.UseMPool       = true;
            cfg.UseReplication = true;
            cfg.FreeThreaded   = true;
            cfg.UseTxns        = true;
            cfg.EventNotify    = new EventNotifyDelegate(stuffHappened);

            cfg.RepSystemCfg = new ReplicationConfig();
            cfg.RepSystemCfg.RepmgrSitesConfig.Add(new DbSiteConfig());
            cfg.RepSystemCfg.RepmgrSitesConfig[0].Host         = "127.0.0.1";
            cfg.RepSystemCfg.RepmgrSitesConfig[0].Port         = mPort;
            cfg.RepSystemCfg.RepmgrSitesConfig[0].LocalSite    = true;
            cfg.RepSystemCfg.RepmgrSitesConfig[0].GroupCreator = true;
            cfg.RepSystemCfg.Priority = 100;

            DatabaseEnvironment mEnv = DatabaseEnvironment.Open(
                masterHome, cfg);

            mEnv.DeadlockResolution = DeadlockPolicy.DEFAULT;
            mEnv.RepMgrStartMaster(2);

            cfg.RepSystemCfg.RepmgrSitesConfig[0].Port         = cPort;
            cfg.RepSystemCfg.RepmgrSitesConfig[0].GroupCreator = false;
            cfg.RepSystemCfg.Priority = 10;
            cfg.RepSystemCfg.RepmgrSitesConfig.Add(new DbSiteConfig());
            cfg.RepSystemCfg.RepmgrSitesConfig[1].Host   = "127.0.0.1";
            cfg.RepSystemCfg.RepmgrSitesConfig[1].Port   = mPort;
            cfg.RepSystemCfg.RepmgrSitesConfig[1].Helper = true;
            DatabaseEnvironment cEnv = DatabaseEnvironment.Open(
                clientHome, cfg);

            cEnv.RepMgrStartClient(2, false);

            /* Wait for client to start up */
            int i = 0;

            while (!cEnv.ReplicationSystemStats().ClientStartupComplete)
            {
                if (i < 20)
                {
                    Thread.Sleep(1000);
                    i++;
                }
                else
                {
                    throw new TestException();
                }
            }

            /*
             * Verify the client info could be observed by master's
             * remote site.
             */
            Assert.AreEqual(1, mEnv.RepMgrRemoteSites.Length);
            RepMgrSite rsite = mEnv.RepMgrRemoteSites[0];

            Assert.AreEqual("127.0.0.1", rsite.Address.Host);
            Assert.AreEqual(cPort, rsite.Address.Port);
            Assert.AreEqual(true, rsite.isConnected);
            Assert.AreEqual(false, rsite.isPeer);

            DbSite site = mEnv.RepMgrSite("127.0.0.1", mPort);

            Assert.AreEqual("127.0.0.1", site.Address.Host);
            Assert.AreEqual(mPort, site.Address.Port);
            Assert.LessOrEqual(0, site.EId);
            Assert.AreEqual(true, site.GroupCreator);
            Assert.AreEqual(true, site.LocalSite);
            Assert.AreEqual(false, site.Helper);
            Assert.AreEqual(false, site.Legacy);
            Assert.AreEqual(false, site.Peer);
            site.Close();

            site = mEnv.RepMgrSite("127.0.0.1", cPort);
            Assert.AreEqual("127.0.0.1", site.Address.Host);
            Assert.AreEqual(cPort, site.Address.Port);
            Assert.AreEqual(rsite.EId, site.EId);
            Assert.AreEqual(false, site.GroupCreator);
            Assert.AreEqual(false, site.LocalSite);
            Assert.AreEqual(false, site.Helper);
            Assert.AreEqual(false, site.Legacy);
            Assert.AreEqual(false, site.Peer);
            site.Remove();

            cEnv.Close();
            mEnv.Close();

            /*
             * Update the repmgr site, and verify it is updated in
             * unmanaged memory.
             */
            rsite.Address = new ReplicationHostAddress(
                "192.168.1.1", 1000);
            rsite.EId         = 1024;
            rsite.isConnected = false;
            rsite.isPeer      = true;
            Assert.AreEqual("192.168.1.1", rsite.Address.Host);
            Assert.AreEqual(1000, rsite.Address.Port);
            Assert.AreEqual(1024, rsite.EId);
            Assert.AreEqual(false, rsite.isConnected);
            Assert.AreEqual(true, rsite.isPeer);
        }
コード例 #17
0
        public void Initialize()
        {
            Settings settings = TagDataProvider.GetSettings();

            if (settings != null)
            {
                Antenna1ReceivePower  = Convert.ToInt32(settings.Antennas.GetAntenna(1).RxSensitivityInDbm);
                Antenna1TransmitPower = Convert.ToInt32(settings.Antennas.GetAntenna(1).TxPowerInDbm);

                Antenna2ReceivePower  = Convert.ToInt32(settings.Antennas.GetAntenna(2).RxSensitivityInDbm);
                Antenna2TransmitPower = Convert.ToInt32(settings.Antennas.GetAntenna(2).TxPowerInDbm);

                Antenna3ReceivePower  = Convert.ToInt32(settings.Antennas.GetAntenna(3).RxSensitivityInDbm);
                Antenna3TransmitPower = Convert.ToInt32(settings.Antennas.GetAntenna(3).TxPowerInDbm);

                Antenna4ReceivePower  = Convert.ToInt32(settings.Antennas.GetAntenna(4).RxSensitivityInDbm);
                Antenna4TransmitPower = Convert.ToInt32(settings.Antennas.GetAntenna(4).TxPowerInDbm);
            }

            if (Antenna1ReceivePower == 0)
            {
                Antenna1ReceivePower = -80;
            }
            if (Antenna2ReceivePower == 0)
            {
                Antenna2ReceivePower = -80;
            }
            if (Antenna3ReceivePower == 0)
            {
                Antenna3ReceivePower = -80;
            }
            if (Antenna4ReceivePower == 0)
            {
                Antenna4ReceivePower = -80;
            }

            if (Antenna1TransmitPower == 0)
            {
                Antenna1TransmitPower = 30;
            }
            if (Antenna2TransmitPower == 0)
            {
                Antenna2TransmitPower = 30;
            }
            if (Antenna3TransmitPower == 0)
            {
                Antenna3TransmitPower = 30;
            }
            if (Antenna4TransmitPower == 0)
            {
                Antenna4TransmitPower = 30;
            }


            foreach (var p in System.IO.Ports.SerialPort.GetPortNames().OrderBy(s => s))
            {
                AvailablePorts.Add(p);
            }

            using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork())
            {
                var repo = dp.SettingsRepository;

                var setting = repo.FindSingle(x => x.Key == TruckClientSettingKeys.RFID_READ_DELAY);
                if (setting != null && !string.IsNullOrWhiteSpace(setting.Value))
                {
                    RFIDReadDelay = int.Parse(setting.Value);
                }

                var portSetting = repo.FindSingle(x => x.Key == TruckClientSettingKeys.GPS_COM_PORT);

                if (portSetting != null && !string.IsNullOrWhiteSpace(portSetting.Value))
                {
                    PortName = portSetting.Value;
                }
                else
                {
                    if (AvailablePorts.Count > 0)
                    {
                        PortName = AvailablePorts.First();
                    }
                    else
                    {
                        PortName = "";
                    }
                }
            }
        }
コード例 #18
0
 public SerialConnection()
 {
     Portname = AvailablePorts.FirstOrDefault();
     Baudrate = 115200;
 }
コード例 #19
0
        public void TestRepMgrSite()
        {
            testName = "TestRepMgrSite";
            SetUpTest(true);

            string masterHome = testHome + "\\Master";

            Configuration.ClearDir(masterHome);

            string clientHome = testHome + "\\Client";

            Configuration.ClearDir(clientHome);

            ports.Clear();
            AvailablePorts portGen = new AvailablePorts();
            uint           mPort   = portGen.Current;

            portGen.MoveNext();
            uint cPort = portGen.Current;

            // Open environment with replication configuration.
            DatabaseEnvironmentConfig cfg =
                new DatabaseEnvironmentConfig();

            cfg.Create         = true;
            cfg.RunRecovery    = true;
            cfg.UseLocking     = true;
            cfg.UseLogging     = true;
            cfg.UseMPool       = true;
            cfg.UseReplication = true;
            cfg.FreeThreaded   = true;
            cfg.UseTxns        = true;
            cfg.EventNotify    = new EventNotifyDelegate(stuffHappened);

            cfg.RepSystemCfg = new ReplicationConfig();
            cfg.RepSystemCfg.RepMgrLocalSite =
                new ReplicationHostAddress("127.0.0.1", mPort);
            cfg.RepSystemCfg.Priority = 100;
            cfg.RepSystemCfg.NSites   = 2;

            DatabaseEnvironment mEnv = DatabaseEnvironment.Open(
                masterHome, cfg);

            mEnv.DeadlockResolution = DeadlockPolicy.DEFAULT;
            mEnv.RepMgrStartMaster(2);

            cfg.RepSystemCfg.RepMgrLocalSite =
                new ReplicationHostAddress("127.0.0.1", cPort);
            cfg.RepSystemCfg.Priority = 10;
            cfg.RepSystemCfg.AddRemoteSite(
                new ReplicationHostAddress("127.0.0.1", mPort),
                false);
            DatabaseEnvironment cEnv = DatabaseEnvironment.Open(
                clientHome, cfg);

            cEnv.RepMgrStartClient(2, false);

            /*
             * Verify the client info could be achived by master's
             * remote site.
             */
            Assert.AreEqual(1, mEnv.RepMgrRemoteSites.Length);
            RepMgrSite site = mEnv.RepMgrRemoteSites[0];

            Assert.AreEqual("127.0.0.1", site.Address.Host);
            Assert.AreEqual(cPort, site.Address.Port);
            Assert.AreEqual(0, site.EId);
            Assert.AreEqual(true, site.isConnected);
            Assert.AreEqual(false, site.isPeer);

            cEnv.Close();
            mEnv.Close();

            /*
             * Update the repmgr site, and verify it is updated in
             * unmanged memory.
             */
            site.Address = new ReplicationHostAddress(
                "192.168.1.1", 1000);
            site.EId         = 1024;
            site.isConnected = false;
            site.isPeer      = true;
            Assert.AreEqual("192.168.1.1", site.Address.Host);
            Assert.AreEqual(1000, site.Address.Port);
            Assert.AreEqual(1024, site.EId);
            Assert.AreEqual(false, site.isConnected);
            Assert.AreEqual(true, site.isPeer);
        }
コード例 #20
0
        private void loadForm()
        {
            try
            {
                clearErrors();

                if (IsFirstLaunch)
                {
                    trySaveDbKeysFromInstallDrive();
                }

                AvailablePorts.Clear();
                AvailableStatuses.Clear();
                AvailableStatuses.Add("AT GIN");
                AvailableStatuses.Add("ON FEEDER");

                this.TargetStatus = "AT GIN";

                AvailablePorts.Add("NONE");
                foreach (var p in SerialPort.GetPortNames().OrderBy(s => s))
                {
                    AvailablePorts.Add(p);
                }

                using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork())
                {
                    var repo = dp.SettingsRepository;

                    var portSetting = repo.FindSingle(x => x.Key == BridgeSettingKeys.SCALE_COM_PORT);
                    if (portSetting != null && !string.IsNullOrWhiteSpace(portSetting.Value))
                    {
                        PortName = portSetting.Value;
                    }
                    else
                    {
                        if (AvailablePorts.Count > 0)
                        {
                            PortName = AvailablePorts.First();
                        }
                        else
                        {
                            PortName = "";
                        }
                    }

                    portSetting = repo.FindSingle(x => x.Key == BridgeSettingKeys.BARCODE_COM_PORT);
                    if (portSetting != null && !string.IsNullOrWhiteSpace(portSetting.Value))
                    {
                        BarcodePortName = portSetting.Value;
                    }
                    else
                    {
                        if (AvailablePorts.Count > 0)
                        {
                            BarcodePortName = AvailablePorts.First();
                        }
                        else
                        {
                            BarcodePortName = "";
                        }
                    }

                    ReaderHostname = repo.GetSettingWithDefault(BridgeSettingKeys.READER_HOST_NAME, "169.254.1.1");
                    _originalHost  = ReaderHostname;

                    ScreenTitle          = repo.GetSettingWithDefault(BridgeSettingKeys.GIN_NAME, "");
                    BridgeID             = repo.GetSettingWithDefault(BridgeSettingKeys.BRIDGE_ID, "");
                    Latitude             = repo.GetSettingWithDefault(BridgeSettingKeys.LATITUDE, "");
                    Longitude            = repo.GetSettingWithDefault(BridgeSettingKeys.LONGITUDE, "");
                    TargetStatus         = repo.GetSettingWithDefault(BridgeSettingKeys.TARGET_STATUS, "AT GIN");
                    DocumentDbConnection = repo.GetSettingWithDefault(BridgeSettingKeys.DOCUMENT_DB_KEY, "");
                    DocumentDbEndpoint   = repo.GetSettingWithDefault(BridgeSettingKeys.DOCUMENTDB_ENDPOINT, "");
                    DataSyncInterval     = int.Parse(repo.GetSettingWithDefault(BridgeSettingKeys.DATA_SYNC_INTERVAL, "1"));
                    WeighInTimeout       = int.Parse(repo.GetSettingWithDefault(BridgeSettingKeys.WEIGH_IN_TIMEOUT, "30"));
                    StableWeightSeconds  = int.Parse(repo.GetSettingWithDefault(BridgeSettingKeys.STABLE_WEIGHT_SECONDS, "10"));

                    WeightAutoSaveTimeout = int.Parse(repo.GetSettingWithDefault(BridgeSettingKeys.WEIGHT_AUTO_SAVE_TIMEOUT, "10"));
                    UnattendedMode        = bool.Parse(repo.GetSettingWithDefault(BridgeSettingKeys.UNATTENDED_MODE, "FALSE"));
                }
            }
            catch (Exception exc)
            {
                Logging.Logger.Log(exc);
            }
        }
コード例 #21
0
        private void loadForm()
        {
            try
            {
                clearErrors();

                if (IsFirstLaunch)
                {
                    trySaveDbKeysFromInstallDrive();
                }

                AvailablePorts.Clear();

                AvailablePorts.Add("NONE");
                foreach (var p in SerialPort.GetPortNames().OrderBy(s => s))
                {
                    AvailablePorts.Add(p);
                }

                using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork())
                {
                    var repo = dp.SettingsRepository;

                    var portSetting = repo.FindSingle(x => x.Key == BridgeSettingKeys.SCALE_COM_PORT);
                    if (portSetting != null && !string.IsNullOrWhiteSpace(portSetting.Value))
                    {
                        PortName = portSetting.Value;
                    }
                    else
                    {
                        if (AvailablePorts.Count > 0)
                        {
                            PortName = AvailablePorts.First();
                        }
                        else
                        {
                            PortName = "";
                        }
                    }

                    portSetting = repo.FindSingle(x => x.Key == BridgeSettingKeys.BARCODE_COM_PORT);
                    if (portSetting != null && !string.IsNullOrWhiteSpace(portSetting.Value))
                    {
                        BarcodePortName = portSetting.Value;
                    }
                    else
                    {
                        if (AvailablePorts.Count > 0)
                        {
                            BarcodePortName = AvailablePorts.First();
                        }
                        else
                        {
                            BarcodePortName = "";
                        }
                    }

                    DocumentDbConnection = repo.GetSettingWithDefault(BridgeSettingKeys.DOCUMENT_DB_KEY, "");
                    DocumentDbEndpoint   = repo.GetSettingWithDefault(BridgeSettingKeys.DOCUMENTDB_ENDPOINT, "");
                    TareWeight           = repo.GetSettingWithDefault(BridgeSettingKeys.TARE_WEIGHT, "");
                    StableWeightSeconds  = int.Parse(repo.GetSettingWithDefault(BridgeSettingKeys.STABLE_WEIGHT_SECONDS, "5"));
                }
            }
            catch (Exception exc)
            {
                Logging.Logger.Log(exc);
            }
        }
コード例 #22
0
        /// <summary>
        /// Gets the available ports by applying the supplied filter.
        /// </summary>
        /// <param name="filter">A predicate to filter out ports that should not be included. If <c>null</c>, all ports in <see cref="AvailablePorts"/> are returned.</param>
        /// <returns>The available ports, excluding those that do not pass the given filter.</returns>
        public static IEnumerable <string> GetAvailablePorts(Predicate <INTV.Core.Model.Device.IConnection> filter)
        {
            var availablePorts = filter == null ? AvailablePorts : AvailablePorts.Where(p => filter(Connection.CreatePseudoConnection(p, ConnectionType.Serial)));

            return(availablePorts);
        }