예제 #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            string localIP;

            using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0))
            {
                socket.Connect("8.8.8.8", 65530);
                IPEndPoint endpoint = socket.LocalEndPoint as IPEndPoint;
                localIP            = endpoint.Address.ToString();
                textBoxServer.Text = " Serevr address is " + localIP;
                SERVER_IP          = localIP;
            }
            //This will check for ABB controllers and list them in a combo box
            this.scanner = new NetworkScanner();
            this.scanner.Scan();
            ControllerInfoCollection controllers = scanner.Controllers;

            foreach (ControllerInfo info in controllers)
            {
                comboBox1.Items.Add(info.ControllerName + " / " + info.IPAddress.ToString());
                comboBox1.SelectedIndex = 0;
            }

            if (backgroundWorker1.IsBusy != true)
            {
                backgroundWorker1.RunWorkerAsync();
            }
        }
        public void DynamicCreation()
        {
            // ABB 自带接口扫描类
            NetworkScanner networkScanner = new NetworkScanner();

            // 条件运算符  获取控制器类型
            ControllerInfo[] controllers = networkScanner.GetControllers(chooseSocket ? NetworkScannerSearchCriterias.Virtual : NetworkScannerSearchCriterias.Real);

            if (controllers.Length > 0)
            {
                Console.WriteLine(controllers);

                // 获取控制器信息
                ABBControllerInfo = controllers[0];

                // 根据控制器信息 船舰实例
                ABBController = ControllerFactory.CreateFrom(ABBControllerInfo);
                Console.WriteLine($"Found one ABB.System Name is:{SystemName} System ID is:{SystemID} System IP is:{SystemIP}");
                // $ 起到一个占位符的作用内容包含在 {} 中,可以用于获取{}中对应内容的信息,避免了利用{0}的形式占位。  以前占位符 需要  {0}  和 变量 配合使用
            }
            else
            {
                MessageBox.Show("No ABB Robot Found!");
            }
        }
예제 #3
0
        public async Task Start()
        {
            BConsole.WriteLine("NetworkMonitor v1.0");
            await Manager.Init();

            new Thread(delegate()
            {
                int minutes     = 10;
                int interval    = 1000;
                int IntervalMax = minutes * 1000 * 60;
                int timer       = IntervalMax;
                while (!StopCalled)
                {
                    if (timer % interval != 0 || timer > IntervalMax)
                    {
                        break;
                    }
                    if (timer < IntervalMax)
                    {
                        Thread.Sleep(interval);
                        timer += interval;
                    }
                    else
                    {
                        timer       = 0;
                        var devices = NetworkScanner.GetDevices(Config.GetDisplay());
                        Manager.AddDevices(devices);
                    }
                }
            }).Start();

            await Listener.Start();
        }
예제 #4
0
    public List <Machine> reScanMachines()
    {
        CurrentContext.Validate();
        var ips = NetworkScanner.GetAllMAchines();

        foreach (int i in ips.Keys)
        {
            var ip = ips[i];
            if (string.IsNullOrEmpty(ip.Name))
            {
                continue;
            }
            var m = MachineFactory.Find(ip.Name.ToUpper());
            if (m != null)
            {
                bool bchange = false;
                if (m.IP != ip.IpAddress)
                {
                    m.IP    = ip.IpAddress;
                    bchange = true;
                }
                if (m.MAC != ip.MacAddress)
                {
                    m.MAC   = ip.MacAddress;
                    bchange = true;
                }
                if (bchange)
                {
                    MachineFactory.Update(m);
                }
            }
        }
        return(getMachines());
    }
예제 #5
0
        private void RefreshConnectedList()
        {
            NetworkScanner networkScanner = new NetworkScanner();

            networkScanner.Scan();
            connectedControllers = networkScanner.Controllers;

            if (connectedControllers.Count != 0)
            {
                connectButton.Enabled = true;
            }
            else
            {
                connectButton.Enabled = false;
            }

            ListViewItem item = null;

            controllerListView.Items.Clear();
            foreach (ControllerInfo controllerInfo in connectedControllers)
            {
                item = new ListViewItem(controllerInfo.IPAddress.ToString());
                item.SubItems.Add(controllerInfo.Version.ToString());
                item.SubItems.Add(controllerInfo.ControllerName);
                item.SubItems.Add(controllerInfo.Id);
                item.SubItems.Add(controllerInfo.Availability.ToString());
                item.SubItems.Add(controllerInfo.IsVirtual.ToString());
                item.SubItems.Add(controllerInfo.SystemName);
                controllerListView.Items.Add(item);
                item.Tag = controllerInfo;
            }
        }
예제 #6
0
 public ControllerInfoCollection getCanner()
 {
     this.scanner = new NetworkScanner();
     this.scanner.Scan();
     infoControllers = scanner.Controllers;
     return(infoControllers);
 }
        public void Scan()
        {
            NetworkScanner netscan = new NetworkScanner();

            netscan.Scan();
            controllers = netscan.Controllers;
        }
        public ABBController()
        {
            NetworkScanner netscan = new NetworkScanner();

            netscan.Scan();
            allControllers = netscan.Controllers;// 扫描到所有控制器:
        }
        /// <summary>
        /// 初始化相关参数
        /// </summary>
        private void ABBControl_Load(object sender, EventArgs e)
        {
            this.abbscanner = new NetworkScanner();
            this.abbscanner.Scan();                   //扫描控制器
            ControllerInfoCollection controllerInfos = this.abbscanner.Controllers;
            ListViewItem             item            = null;

            foreach (ControllerInfo controllerInfo in controllerInfos)
            {
                item = new ListViewItem(controllerInfo.IPAddress.ToString());
                item.SubItems.Add(controllerInfo.SystemName);
                item.SubItems.Add(controllerInfo.ControllerName);
                item.SubItems.Add(controllerInfo.Availability.ToString());
                item.SubItems.Add(controllerInfo.Id);
                item.SubItems.Add(controllerInfo.IsVirtual.ToString());
                item.SubItems.Add(controllerInfo.VersionName);
                this.listView1.Items.Add(item);
                item.Tag = controllerInfo;
                //组合框控件添加控制器
                this.controllerscomboBox.Items.Add(controllerInfo.IPAddress.ToString() + @"/" + controllerInfo.ControllerName);
            }
            this.abbnetworkWatcher        = new NetworkWatcher(this.abbscanner.Controllers);
            this.abbnetworkWatcher.Found += AbbnetworkWatcher_Found;        //添加订阅,发现新设备
            this.abbnetworkWatcher.Lost  += AbbnetworkWatcher_Lost;
            this.abbnetworkWatcher.EnableRaisingEvents = true;              //使能监控器
            this.abbscanner = null;
            //更新Table UI 控件
            this.Invoke(new EventHandler(UpdateUI), new Object[] { this, e });
            this.timer1.Start();                                            //启动定时器
            //设置combox默认选择项
            this.comboBox2.SelectedIndex      = 0;
            this.speed_comboBox.SelectedIndex = 1;
        }
예제 #10
0
        /// <summary>
        /// 重新扫描控制器
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void scanBtn_Click(object sender, EventArgs e)
        {
            //断开控制器连接     待实现
            //...
            this.abbscanner = new NetworkScanner();
            this.abbscanner.Scan();                   //扫描控制器
            ControllerInfoCollection controllerInfos = this.abbscanner.Controllers;
            ListViewItem             item            = null;

            this.listView1.Items.Clear();             //移除所有项重新扫描
            this.controllerscomboBox.Items.Clear();   //移除所有项重新扫描
            this.listView1.BeginUpdate();             //更新数据,直到EndUpdate()
            foreach (ControllerInfo controllerInfo in controllerInfos)
            {
                item = new ListViewItem(controllerInfo.IPAddress.ToString());
                item.SubItems.Add(controllerInfo.SystemName);
                item.SubItems.Add(controllerInfo.ControllerName);
                item.SubItems.Add(controllerInfo.Availability.ToString());
                item.SubItems.Add(controllerInfo.Id);
                item.SubItems.Add(controllerInfo.IsVirtual.ToString());
                item.SubItems.Add(controllerInfo.VersionName);
                this.listView1.Items.Add(item);
                item.Tag = controllerInfo;
                //组合框控件添加控制器
                this.controllerscomboBox.Items.Add(controllerInfo.IPAddress.ToString() + @"/" + controllerInfo.ControllerName);
            }
            this.listView1.EndUpdate();           //结束数据处理,一次绘制UI
            Data.LogString = "扫描完成";
        }
예제 #11
0
        public static void Main(string[] args)
        {
            Twitchbot t = new Twitchbot();

            NetworkScanner.Espipfound += OnEspFound;
            chatsw = new Stopwatch();
            execsw = new Stopwatch();

            chatsw.Start();
            execsw.Start();
            // scan for the the esp and keep scanning untill found.
            while (!NetworkScanner.espFound && !NetworkScanner.isScanning)
            {
                NetworkScanner.Scan();
                Thread.Sleep(500);
            }

            // sub to the bot message event

            TwitchClientIrc.ChatMessage += OnTwitchChat;

            // start the twitch bot

            t.Start();
        }
예제 #12
0
 private void ScanNetwork()
 {
     Dispatcher.Invoke(() =>
     {
         NetworkScanner.ScanAvailableDevices();
     });
 }
예제 #13
0
        public void AutoConnect()
        {
            scanner = new NetworkScanner();
            scanner.Scan();
            controllers = scanner.Controllers;
            string id = config.Read("ID", "RobID", "0", cfgPath);
            Guid   a  = Guid.Parse(id);

            foreach (ControllerInfo info in controllers)
            {
                if (info.SystemId == a)
                {
                    controller = Controller.Connect(info.SystemId, ConnectionType.Standalone);
                    controller.Logon(UserInfo.DefaultUser);
                    Text             = "当前已自动连接 ID:" + id + "    IP:" + info.IPAddress.ToString() + "    Port:" + info.WebServicesPort.ToString();
                    label2_INFO.Text = "已连接。";
                    setInfoColor();
                    ShowNewMessage("ヽ(✿゚▽゚)ノ 成功连接到示教器啦:" + id);
                    button_connect.Text = "     断开";
                }
            }
            if (controller == null)
            {
                MessageBox.Show("(ノへ ̄、) 未扫描到控制器或控制器ID不存在,请检查配置文件!", "自动连接错误");
            }
        }
예제 #14
0
        //RapidData a, b;

        private void Form1_Load(object sender, EventArgs e)
        {
            this.scanner = new NetworkScanner();
            this.scanner.Scan();
            ControllerInfoCollection controllers = scanner.Controllers;
            ListViewItem             item        = null;

            foreach (ControllerInfo controllerInfo in controllers)
            {
                item = new ListViewItem(controllerInfo.IPAddress.ToString());
                item.SubItems.Add(controllerInfo.Id);
                item.SubItems.Add(controllerInfo.Availability.ToString());
                item.SubItems.Add(controllerInfo.IsVirtual.ToString());
                item.SubItems.Add(controllerInfo.SystemName);
                item.SubItems.Add(controllerInfo.Version.ToString());
                item.SubItems.Add(controllerInfo.ControllerName);
                this.listView1.Items.Add(item);
                item.Tag = controllerInfo;
            }
            //Controller aController = new Controller();
            //item = new ListViewItem(aController.IPAddress.ToString());
            //item.SubItems.Add(aController.SystemId.ToString());
            //item.SubItems.Add(aController.Connected.ToString());
            //item.SubItems.Add(aController.IsVirtual.ToString());
            //item.SubItems.Add(aController.SystemName);
            //item.SubItems.Add(aController.RobotWareVersion.ToString());
            ////item.SubItems.Add(controllerInfo.ControllerName);
            //this.listView1.Items.Add(item);
            //item.Tag = aController;

            this.networkwatcher        = new NetworkWatcher(scanner.Controllers);
            this.networkwatcher.Found += new EventHandler <NetworkWatcherEventArgs>(HandleFoundEvent);
            this.networkwatcher.Lost  += new EventHandler <NetworkWatcherEventArgs>(HandleLostEvent);
            this.networkwatcher.EnableRaisingEvents = true;
        }
        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            Main.OnClientRequested += Main_OnClientRequested;
            ShowFileList(false);
            if (Main.FilePaths != null)
            {
                FilePaths = Main.FilePaths.ToList();
                ShowFileList(true);
                list_Files.ItemsSource = FilePaths;
            }
            else
            {
                FilePaths = new List <string>();
                ShowFileList(false);
            }

            NetworkScanner.GetDeviceAddress(out DeviceIP, out DeviceHostName);
            Main.FileSaveURL = Parameters.SavingPath;
            Debug.WriteLine("Save file path: " + Main.FileSaveURL);
            Dispatcher.Invoke(() =>
            {
                txt_DeviceIP.Content = DeviceIP;
                txt_DeviceName.Text  = Parameters.DeviceName;
            });
        }
예제 #16
0
        public LogEditor()
        {
            NetworkScanner netScan = new NetworkScanner();

            netScan.Scan();

            ctrlInfo = netScan.GetControllers();

            foreach (var i in ctrlInfo)
            {
                if (i.SystemName.ToString() == "2600-109425") // ABB IRC5 Controller number 26-00268, 4600-800484
                {
                    aController = new Controller(i);
                }
            }
            // can be used like this, if you know which controller inside of ctrlInfo[] array.
            //aController = new Controller(ctrlInfo[0]);

            // using ControllerInfoCollection cntInfoColl -
            //cntInfoColl = netScan.Controllers;

            log = aController.EventLog;

            Console.WriteLine($"Application is running.");
            aController.EventLog.MessageWritten += _errorEventHappened;

            Console.ReadLine();
        }
예제 #17
0
        // 声明一个私有变量 动态创建扫描接口   创建与控制器的连接
        public void DynamicCreation()
        {
            //  建立一个扫描接口的 引用变量 networkScanner
            NetworkScanner networkScanner = new NetworkScanner();

            // 扫描接口 虚拟接口还是实际接口  条件运算符
            ControllerInfo[] controllers = networkScanner.GetControllers(chooseSocket ? NetworkScannerSearchCriterias.Virtual : NetworkScannerSearchCriterias.Real);

            // 发现控制器后
            if (controllers.Length > 0)
            {
                // 确认controller 包含哪些信息
                Console.WriteLine(controllers);

                // 提取controller中的第默认序列第一的信息
                ABBControllerinfo = controllers[0];

                Console.WriteLine(ABBControllerinfo);


                // 根据控制器的信息创建一个实例   并且可以输出  其基本信息
                ABBController = ControllerFactory.CreateFrom(ABBControllerinfo);
                Console.WriteLine($"Found one ABB.System Name is:{SystemName} System ID is:{SystemID} System IP is:{SystemIP}");
                // $ 起到一个占位符的作用内容包含在 {} 中,可以用于获取{}中对应内容的信息
            }
            else
            {
                MessageBox.Show("No ABB Robot Found.");
            }
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //Event search, and if found connect to Kinect module and then search, and if found add to listView robot controllers
            kinectSensor = KinectSensor.GetDefault();

            if (kinectSensor != null)
            {
                kinectSensor.Open();
                bodyFrameReader = kinectSensor.BodyFrameSource.OpenReader();
                bodyFrameReader.FrameArrived += ReaderFrameArrived;
            }
            this.scanner = new NetworkScanner();
            this.scanner.Scan();
            ControllerInfoCollection controllers = scanner.Controllers;

            //for each found controller method add item in listView(create new RobotController object and assign them found controller values)
            foreach (ControllerInfo controllerInfo in controllers)
            {
                listViewRobotControlers.Items.Add(new RobotController
                {
                    IPAddress        = controllerInfo.IPAddress.ToString(),
                    Availability     = controllerInfo.Availability.ToString(),
                    Virtual          = controllerInfo.IsVirtual.ToString(),
                    SystemName       = controllerInfo.SystemName,
                    RobotWareVersion = controllerInfo.Version.ToString(),
                    ControllerName   = controllerInfo.ControllerName,
                    Tag = controllerInfo
                });
            }
        }
예제 #19
0
파일: BaseRobot.cs 프로젝트: jack06215/tmc
        public void Initialise()
        {
            var networkScanner = new NetworkScanner();

            for(int i = 0; i < 20; i++)
            {
                Thread.Sleep(100);
                networkScanner.Scan();

                foreach (ControllerInfo controller in networkScanner.Controllers)
                {
                    if (controller.IPAddress.Equals(this.RobotIPAddress))
                    {
                        this.Controller = ControllerFactory.CreateFrom(controller);
                        this.Controller.Rapid.ExecutionStatusChanged += new EventHandler<ExecutionStatusChangedEventArgs>(RapidExecutionStatusChanged);
                        this.SetSpeed(100);
                        _status = HardwareStatus.Operational;
                        return;
                    }
                }
            }

            _status = HardwareStatus.Offline;
            throw new Exception(string.Format("Robot at {0} could not be found.", this.RobotIPAddress));
        }
예제 #20
0
 private void Window_Loaded(object sender, RoutedEventArgs e)
 {
     try
     {
         AddVersionNumber();
         CheckForUpdates();
         LoadOptions();
         NetworkScanner.PublishDevice();
         NetworkScanner.ScanAvailableDevices();
         NetworkScanner.OnScanCompleted   += NetworkScanner_OnScanCompleted;
         NetworkScanner.OnClientConnected += NetworkScanner_OnClientConnected;
         Dispatcher.Invoke(() =>
         {
             chc_AutoShare.IsChecked      = Parameters.IsAutoShareEnabled;
             chc_EnableControls.IsChecked = Parameters.IsControlsEnabled;
             IsControlsEnabled            = Parameters.IsControlsEnabled;
         });
         if (Parameters.IsAutoShareEnabled)
         {
             //if (ServiceBot)
             //{
             Task.Run(() =>
             {
                 try
                 {
                     bool noIP = true;
                     while (noIP)
                     {
                         var localIP = NetworkScanner.MyIP;
                         if (localIP != null)
                         {
                             char[] splitter = { '.' };
                             var ipBlocks    = localIP.ToString().Split(splitter);
                             if (string.Equals(ipBlocks[0], "192") && string.Equals(ipBlocks[1], "168"))
                             {
                                 noIP = false;
                             }
                         }
                         Thread.Sleep(500);
                     }
                     btn_Share_Click(null, null);
                 }
                 catch (Exception exc)
                 {
                     Debug.WriteLine("Exception in loading: " + exc.ToString());
                 }
             });
             //}
             //else
             //{
             //    btn_Share_Click(null, null);
             //}
         }
     }
     catch
     {
         Debug.WriteLine("Failed when initializing ");
     }
 }
예제 #21
0
        /// <summary>
        /// Searches the network for a robot controller and establishes a connection with the specified one by position.
        /// Performs no LogOn actions or similar.
        /// </summary>
        /// <returns></returns>
        private bool LoadController(int controllerID)
        {
            // Scan the network and hookup to the specified controller
            bool success = false;

            // This is specific to ABB, should become abstracted at some point...
            logger.Verbose("Scanning the network for controllers...");
            NetworkScanner scanner = new NetworkScanner();

            ControllerInfo[] controllers = scanner.GetControllers();
            if (controllers.Length > 0)
            {
                int cId = controllerID > controllers.Length ? controllers.Length - 1 :
                          controllerID < 0 ? 0 : controllerID;
                controller = ControllerFactory.CreateFrom(controllers[cId]);
                if (controller != null)
                {
                    //isConnected = true;
                    logger.Verbose($"Found controller {controller.SystemName} on {controller.Name}");
                    success = true;

                    logger.Debug(controller);
                    //Console.WriteLine(controller.RobotWare);
                    //Console.WriteLine(controller.RobotWareVersion);

                    //try
                    //{
                    //    this.robotWare = this.controller.RobotWare;
                    //    this.robotWareOptions = this.robotWare.Options;

                    //    this._hasMultiTasking = HasMultiTaskOption(this.robotWareOptions);
                    //    this._hasEGM = HasEGMOption(this.robotWareOptions);
                    //}
                    //catch
                    //{
                    //    Console.WriteLine("Could not access ROBOTWARE options");
                    //}
                }
                else
                {
                    logger.Debug("Could not connect to controller...");
                }
            }
            else
            {
                logger.Debug("No controllers found on the network");
            }

            //if (!success)
            //{
            //    Disconnect();
            //    //throw new Exception("ERROR: could not LoadController()");
            //}

            return(success);
        }
예제 #22
0
파일: YuMi.cs 프로젝트: david0f/yumi
        public void ConnectAndDisplayData()
        {
            Console.Out.WriteLine("Scanning for controllers...");
            NetworkScanner scanner = new NetworkScanner();

            scanner.Scan();
            ControllerInfoCollection controllers = scanner.Controllers;

            if (controllers.Count == 0)
            {
                status = Status.NotFound;
            }
            Console.Out.WriteLine("Number of controllers found: {0}", controllers.Count);
            //connecting to first controller found. usually only one is present.
            if (status != Status.NotFound)
            {
                selectedController = controllers.First();
                Console.Out.WriteLine(selectedController.Name + " " + selectedController.HostName + " " + selectedController.IPAddress + " " + selectedController.Availability);
                Name = selectedController.Name + "\n" + selectedController.IPAddress;

                if (selectedController.Availability == Availability.Available)
                {
                    try
                    {
                        status     = Status.Connecting;
                        controller = ControllerFactory.CreateFrom(selectedController);
                        controller.Logon(UserInfo.DefaultUser);
                        status = Status.Connected;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Could not establish a connection to the controller" + Environment.NewLine + e.StackTrace);
                        status = Status.Disconnected;
                    }
                    finally { Console.Out.WriteLine("Connected to " + controller.IPAddress); }
                }
                else
                {
                    Console.WriteLine("The controller is not available for connections");
                    status = Status.NotAvailable;
                    status = Status.Disconnected;
                }

                controller.OperatingModeChanged += Controller_ModeChangedHandler;

                Console.Out.WriteLine(controller.OperatingMode);
                tasks = controller.Rapid.GetTasks();
                foreach (var task in tasks)
                {
                    Console.Out.WriteLine("Current task on the controller: {0} ", task.Name);
                }

                PrintRapidData(Tasks.LEFT, Modules.LEFT, "codeL");
                PrintRapidData(Tasks.RIGHT, Modules.RIGHT, "codeR");
            }
        }
예제 #23
0
        public void createcontroler()
        {
            this.objNetworkWatcher = new NetworkScanner();
            objNetworkWatcher.Scan();

            ControllerInfoCollection objControllerInfoCollection = objNetworkWatcher.Controllers;

            objController = new Controller(objControllerInfoCollection[0]);
            objController.Logon(UserInfo.DefaultUser);
        }
예제 #24
0
        public override List <ListViewItem> scanRobot()
        {
            this.scanner = new NetworkScanner();
            this.scanner.Scan();
            ControllerInfoCollection controllers = this.scanner.Controllers;

            List <ListViewItem> target = this.getConnectedRobot();

            return(target);
        }
예제 #25
0
파일: GH_Connect.cs 프로젝트: AxisArch/Axis
        private void Scan(object sender, object e)
        {
            //Reset Controllers
            if (controllers != null)
            {
                foreach (var controller in controllers)
                {
                    controller.LogOff();
                }
                controllers = new List <Controller>();
            }

            // Find ABB robots on the network
            NetworkScanner scanner = new NetworkScanner();

            scanner.Scan();

            if (ipAddresses != null)
            {
                // Scan the network for controllers and add them to our controller array.
                foreach (string ip in ipAddresses)
                {
                    NetworkScanner.AddRemoteController(ip);
                }
            }
            ControllerInfo[] controllersID = scanner.GetControllers();
            foreach (ControllerInfo id in controllersID)
            {
                controllers.Add(new AbbIRC5Contoller(id));
            }

            // Possibility to scan for other robots

            // Allow value list to be updated
            updateVL = true;

            if (controllers != null)
            {
                if (controllers.Count > 0)
                {
                    log.Add("Controllers found:");

                    // List the controller names that were found on the network.
                    for (int i = 0; i < controllers.Count; i++)
                    {
                        log.Add(controllers[i].Name);
                    }
                }
                else
                {
                    log.Add("Scan timed out. No controllers were found.");
                }
            }
            ExpireSolution(true);
        }
예제 #26
0
        public void TEST_GET_NETWORKSHARES()
        {
            DateTime start = DateTime.Now;

            foreach (string share in NetworkScanner.GetAllAvailableNetworkShares())
            {
                Console.WriteLine(share);
            }

            Console.WriteLine("Took: " + (DateTime.Now - start).TotalMilliseconds + " milliseconds");
        }
예제 #27
0
 /// <summary>
 /// 搜索控制器返回控制器列表
 /// </summary>
 /// <returns></returns>
 public List <ControllerInfo> ScanList()
 {
     ns = new NetworkScanner();
     ns.Scan();
     foreach (ControllerInfo item in ns.Controllers)
     {
         ConList.Add(item);
     }
     JudgeLogStatus = true;
     return(ConList);
 }
예제 #28
0
        static ControllerPresenter()
        {
            logger = NLog.Web.NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();

            Scanner = new NetworkScanner();
            Scanner.Scan();
            if (Scanner.Controllers.Count != 0)
            {
                CntPresent = true;
            }
        }
예제 #29
0
        private void Form1_Load(object sender, EventArgs e)
        {
            this.scanner = new NetworkScanner();
            this.scanner.Scan();
            ControllerInfoCollection controllers = scanner.Controllers;

            foreach (ControllerInfo info in controllers)
            {
                comboBox1.Items.Add(info.ControllerName + " / " + info.IPAddress.ToString());
            }
        }
        private void button_systemGuid_Click(object sender, RoutedEventArgs e)
        {
            Match m = Regex.Match(this.textBox_systemGuid.Text, @"^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", RegexOptions.IgnoreCase);

            if (m.Success)
            {
                NetworkScanner scanner = new NetworkScanner();
                scanner.Scan();
                ControllerInfoCollection controllers = scanner.Controllers;
                foreach (ControllerInfo controllerinfo in controllers)
                {
                    if (controllerinfo.SystemId.ToString().ToUpper() == this.textBox_systemGuid.Text.ToUpper())
                    {
                        try
                        {
                            if (this.myController != null)
                            {
                                this.myController.Logoff();
                                this.myController.Dispose();
                                this.myController = null;
                            }
                            this.myController = Controller.Connect(new Guid(this.textBox_systemGuid.Text), ConnectionType.Standalone);
                            if (string.IsNullOrEmpty(this.textBox_userName.Text))
                            {
                                this.myController.Logon(UserInfo.DefaultUser);
                            }
                            else
                            {
                                UserInfo userInfo_login = new UserInfo(this.textBox_userName.Text);
                                userInfo_login.Password = this.passwordBox_password.Password;
                                this.myController.Logon(userInfo_login);
                            }

                            systemGuid = this.textBox_systemGuid.Text;
                            userName   = this.textBox_userName.Text;
                            password   = Class_Encrypt.EncryptDES(this.passwordBox_password.Password);

                            this.DialogResult = true;
                            return;
                        }catch (Exception exception)
                        {
                            MessageBox.Show(exception.Message);
                            return;
                        }
                    }
                }
                MessageBox.Show("This system guid is not valid or the controller is not connected, please check it angin.");
            }
            else
            {
                MessageBox.Show("This system guid's format is not valid, please check it angin.");
            }
        }
예제 #31
0
        static Controller CreateController()
        {
            NetworkScanner scanner = new NetworkScanner();

            ControllerInfo[] controllers = scanner.GetControllers(NetworkScannerSearchCriterias.Virtual);
            if (controllers.Length > 0)
            {
                Controller dynamic = ControllerFactory.CreateFrom(controllers[0]);
                return(dynamic);
            }
            return(null);
        }
예제 #32
0
        void OnScanPortsClick(object sender, EventArgs e)
        {
            view.Log += "Scanning for open port on " + view.EndpointIP + ". This may take a few minutes..." + Environment.NewLine;

            Thread scannerThread = new Thread(new ThreadStart(() =>
            {
                NetworkScanner scanner = new NetworkScanner();
                IList<int> openPorts = scanner.GetOpenPorts(view.EndpointIP, 2999, 3001);
                view.Log += "Found " + openPorts.Count + " open ports:" + Environment.NewLine;
                foreach (int openPort in openPorts)
                {
                    view.Log += openPort + Environment.NewLine;
                }
            }));
            scannerThread.IsBackground = true;
            scannerThread.Start();
        }
예제 #33
0
        public static Dictionary<string, List<string[]>> findControllers(bool run)
        {
            List<string[]> roboCtrl = new List<string[]> { };
            List<string[]> virtCtrl = new List<string[]> { };

            if (run == true)
            {
                NetworkScanner scanner = new NetworkScanner();
                scanner.Scan();

                ControllerInfoCollection controllers = scanner.Controllers;
                foreach (ControllerInfo controller in controllers)
                {
                    if (controller.IsVirtual == false)
                    {
                        string[] eachController1 = new string[5]
                        {
                                controller.SystemName.ToString(),
                                controller.SystemId.ToString(),
                                controller.Availability.ToString(),
                                controller.Version.ToString(),
                                controller.IPAddress.ToString()
                        };
                        roboCtrl.Add(eachController1);
                    }

                    else
                    {
                        string[] eachController2 = new string[5]
                        {
                                controller.SystemName.ToString(),
                                controller.SystemId.ToString(),
                                controller.Availability.ToString(),
                                controller.Version.ToString(),
                                controller.IPAddress.ToString()
                        };
                        virtCtrl.Add(eachController2);
                    }
                }
            }
            return new Dictionary<string, List<string[]>>
            {
                {"robotController", roboCtrl},
                {"virtualController", virtCtrl}
            };
        }
예제 #34
0
        void OnScanForReceiverClick(object sender, EventArgs e)
        {
            view.Log += "Scanning for receivers..." + Environment.NewLine;

            Thread scannerThread = new Thread(new ThreadStart(() =>
            {
                NetworkScanner scanner = new NetworkScanner();
                scanner.OnOpenPortFound += new EventHandler<OpenPortFoundArgs>(scanner_OnOpenPortFound);
                IList<string> endpoints = scanner.GetNetworkedDevices();
                view.Log += endpoints.Count + " devices found:" + Environment.NewLine;
                foreach (string endpoint in endpoints)
                {
                    view.Log += endpoint.ToString() + Environment.NewLine;
                }
            }));
            scannerThread.IsBackground = true;
            scannerThread.Start();
        }
예제 #35
0
        private void btnScan_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();
            listView_left_robots.Items.Clear();
            listView_left_robots.Visible=true;
            listView_right_robots.Items.Clear();
            listView_right_robots.Visible=true;
            this.label_left.Text = "Choose Left Controller";
            this.label_right.Text = "Choose Right Controller";
            if (this.controller_100 != null )
            {
                try
                {
                    this.controller_100.Logoff();
                    this.controller_100 = null;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            if (this.controller_101 != null)
            {
                try
                {
                    this.controller_101.Logoff();
                    this.controller_101 = null;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            listView_left_robots.Enabled=true;
            listView_right_robots.Enabled=true;

            this.scanner = new NetworkScanner();
            this.scanner.Scan();
            ControllerInfoCollection controllers = scanner.Controllers;
            ListViewItem item = null;
            foreach (ControllerInfo controllerInfo in controllers)
            {
                item = new ListViewItem(controllerInfo.IPAddress.ToString());
                item.SubItems.Add(controllerInfo.Availability.ToString());
                item.SubItems.Add(controllerInfo.IsVirtual.ToString());
                item.SubItems.Add(controllerInfo.SystemName);
                item.SubItems.Add(controllerInfo.Version.ToString());
                item.SubItems.Add(controllerInfo.ControllerName);
                this.listView1.Items.Add(item);
                item.Tag = controllerInfo;

                Console.WriteLine("IP: " + controllerInfo.IPAddress.ToString() + " Sys: " + controllerInfo.SystemName);

                //left controllers
                if ((controllerInfo.IsVirtual) && (controllerInfo.SystemName == "J-L-IRB_120_3kg_0.58m") &&
                                                        (controllerInfo.IPAddress.ToString() == "127.0.0.1")
                                                        ||
                 (!(controllerInfo.IsVirtual) && (controllerInfo.IPAddress.ToString() == "10.234.3.100")))
                {
                    item = new ListViewItem(controllerInfo.IPAddress.ToString());
                    item.SubItems.Add(controllerInfo.Availability.ToString());
                    item.SubItems.Add(controllerInfo.IsVirtual.ToString());
                    item.SubItems.Add(controllerInfo.SystemName);
                    item.SubItems.Add(controllerInfo.Version.ToString());
                    item.SubItems.Add(controllerInfo.ControllerName);
                    this.listView_left_robots.Items.Add(item);
                    item.Tag = controllerInfo;
                }

                //right controllers
                if ((controllerInfo.IsVirtual) && (controllerInfo.SystemName == "J-R-IRB_120_3kg_0.58m") &&
                                                        (controllerInfo.IPAddress.ToString() == "127.0.0.1")
                                                        ||
                 (!(controllerInfo.IsVirtual) && (controllerInfo.IPAddress.ToString() == "10.234.3.101")))
                {
                    item = new ListViewItem(controllerInfo.IPAddress.ToString());
                    item.SubItems.Add(controllerInfo.Availability.ToString());
                    item.SubItems.Add(controllerInfo.IsVirtual.ToString());
                    item.SubItems.Add(controllerInfo.SystemName);
                    item.SubItems.Add(controllerInfo.Version.ToString());
                    item.SubItems.Add(controllerInfo.ControllerName);
                    this.listView_right_robots .Items.Add(item);
                    item.Tag = controllerInfo;
                }

            }
        }
예제 #36
0
        /// <summary>
        /// Send robot target to controller.
        /// </summary>
        /// <param name="moduleName">Name of module</param>
        /// <param name="targetName">Name of target</param>
        /// <param name="targetValue">New value for target</param>
        public static void sendRobTargetToController(string moduleName, string targetName, string targetValue)
        {
            try
            {
                var scanner = new NetworkScanner();
                scanner.Scan();

                ControllerInfoCollection controllers = scanner.Controllers;
                using (var controller = ControllerFactory.CreateFrom(controllers[0]))
                {
                    controller.Logon(UserInfo.DefaultUser);
                    using (Mastership.Request(controller.Rapid))
                    {
                        if (controller.OperatingMode == ControllerOperatingMode.Auto)
                        {
                            using (var task = controller.Rapid.GetTask("T_ROB1"))
                            {
                                var target = new RobTarget();
                                using (var rapidData = task.GetRapidData(moduleName, targetName))
                                {
                                    if (rapidData.Value is RobTarget)
                                    {
                                        target.FillFromString2(targetValue);
                                        rapidData.Value = target;
                                    }
                                }

                                var result = task.Start(true);
                                Debug.WriteLine(result.ToString());

                                task.ResetProgramPointer();
                            }
                        }
                        else
                        {
                            Debug.WriteLine("Automatic mode is required to start execution from a remote client.");
                        }
                    }
                    controller.Logoff();
                }

            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                Debug.WriteLine(ex.StackTrace);
            }
        }
예제 #37
0
        //////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Send RAPID to controller.
        /// </summary>
        /// <param name="filePath">File path</param>
        /// <returns></returns>
        public static bool sendRapidToController(string filePath)
        {
            if (!File.Exists(filePath))
            {
                throw new Exception("File could not be found.");
            }

            var scanner = new NetworkScanner();
            scanner.Scan();

            ControllerInfoCollection controllers = scanner.Controllers;
            using (var controller = ControllerFactory.CreateFrom(controllers[0]))
            {
                controller.Logon(UserInfo.DefaultUser);
                using (Mastership.Request(controller.Rapid))
                {
                    if (controller.OperatingMode == ControllerOperatingMode.Auto)
                    {
                        var fileName = Path.GetFileName(filePath);

                        try
                        {
                            var remoteDir = controller.FileSystem.RemoteDirectory.Replace('/', '\\');
                            var localDir = Path.GetDirectoryName(filePath);
                            controller.FileSystem.LocalDirectory = localDir;

                            //write the mod file
                            controller.FileSystem.PutFile(fileName, true);

                            //write the prf file
                            controller.FileSystem.PutFile("Dynamo.prg", true);

                        }
                        catch (Exception ex)
                        {
                            Debug.WriteLine(ex.Message);
                            return false;
                        }

                        using (var task = controller.Rapid.GetTask("T_ROB1")) // note the task name needs to be set up like this in Robot Studio
                        {
                            // read data from file
                            task.LoadProgramFromFile("Dynamo.prg", RapidLoadMode.Replace);
                            task.LoadModuleFromFile(fileName, RapidLoadMode.Add);
                            try
                            {
                                task.ResetProgramPointer();//seems to get hung up here.
                            }
                            catch (Exception ex)
                            {
                                Debug.WriteLine(ex.Message.ToString());
                                throw;
                            }

                            var result = task.Start(true);
                            Debug.WriteLine(result.ToString());
                        }
                    }
                    else
                    {
                        Debug.WriteLine("Automatic mode is required to start execution from a remote client.");
                    }
                }
                controller.Logoff();
            }

            return true;
        }