/// <summary> /// 全局函数,获得设备清单 /// </summary> /// <returns></returns> static public List <string> GetAllDevices() { List <string> devices = new List <string>(); List <string> CNCparameter = null; try { string sLictCNC = CNC_Discover(); //调用CADM_CNC_Discover探测接口,探测是否有机器.并且返回机器字串. if (sLictCNC.Length > 0) { string[] cncList = sLictCNC.ToString().Split(new char[1] { ';' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < cncList.Length; i++) { string[] CNC_Online = cncList[i].Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries); try { CNCparameter = new List <string>(); for (int n = 0; n < CNC_Online.Length; n++) { if (CNC_Online[n].Split(new char[1] { '=' }, StringSplitOptions.RemoveEmptyEntries)[0] != "Model") { CNCparameter.Add(CNC_Online[n].Split(new char[1] { '=' }, StringSplitOptions.RemoveEmptyEntries)[1]); } } string deviceStr = String.Format("设备ID:{0},设备名称:{1},设备IP:{2},当前连接:{3},设备状态:{4}", CNCparameter[0], CNCparameter[2], CNCparameter[1], CNCparameter[3], CNCparameter[4].ToString() == "1" ? "联机" : "脱机"); //临时获取Cycle状态. //temp_ReturnCycleID = int.Parse(CNCparameter[5]); //temp_ReturnCycleState = int.Parse(CNCparameter[6]); devices.Add(deviceStr); } catch (Exception err) { Debug.WriteLine(CNController.GetCodeLineAndFileName() + err.Message); Debug.WriteLine("设备:" + CNCparameter[0] + " Model暂未获取..."); } } } } catch (Exception err) { Debug.WriteLine(CNController.GetCodeLineAndFileName() + err.Message); } return(devices); }
public static long UpdateCncList(ComboBox listCombo) { List <string> _foundDevices = CNController.GetAllDevices(); //搜索到的设备串 Dictionary <Int64, string> foundDeviceID = new Dictionary <long, string>(); //搜索到的设备ID for (int i = 0; i < _foundDevices.Count; i++) { Int64 id = CNController.GetDeviceID(_foundDevices[i]); if (!foundDeviceID.ContainsKey(id)) { foundDeviceID.Add(id, _foundDevices[i]); } } Int64 nCurDevID = -1; String sCurDevice = ""; if ((listCombo.Items.Count > 0) && (listCombo.SelectedIndex != -1)) { //更新之前,获取当前选中设备 sCurDevice = listCombo.Text; nCurDevID = CNController.GetDeviceID(sCurDevice); } Boolean bNeedUpdate = false; //删除掉线的设备. List <Int64> listDeviceID = new List <long>(); //搜索到的设备ID for (int i = listCombo.Items.Count - 1; i >= 0; i--) { Int64 did = CNController.GetDeviceID(listCombo.Items[i].ToString()); if (!foundDeviceID.ContainsKey(did)) { //已经掉线的设备 listCombo.Items.RemoveAt(i); bNeedUpdate = true; } else { if (!foundDeviceID[did].Equals(listCombo.Items[i].ToString())) { bNeedUpdate = true; } listDeviceID.Add(did); } } foreach (string dev in _foundDevices) { Int64 did = CNController.GetDeviceID(dev); if (!listDeviceID.Contains(did)) { //新增 listCombo.Items.Add(dev); bNeedUpdate = true; } } if (bNeedUpdate) { listCombo.Items.Clear(); if (_foundDevices.Count > 0) { foreach (string dev in _foundDevices) { listCombo.Items.Add(dev); } int nSel = 0; for (int j = 0; j < listCombo.Items.Count; j++) { if (nCurDevID == CNController.GetDeviceID(listCombo.Items[j].ToString())) { nSel = j; break; } } listCombo.SelectedIndex = nSel; } } return(nCurDevID); }