/// <summary> /// 单独创建一个会话,并通过它获得其型号,之后将对应的Session放入到Session字典当中。并返回设备型号 /// </summary> /// <param name="inInstAddress"></param> /// <returns></returns> public static string DetermineModel(string inInstAddress) { Mutex tmpMutex = new Mutex(false, inInstAddress); tmpMutex.WaitOne(); try { InstrumentIOSession session = IOManager.ProvideDirectIO(inInstAddress); if (session == null) { throw new Exception("无法连接到地址:" + inInstAddress); return(string.Empty); } try { //session.WriteLine("*RST"); session.WriteLine("*IDN?"); } catch { ///出错时移除对应的IO连接对象 IOManager.Remove(inInstAddress); //再次探测 session = IOManager.ProvideDirectIO(inInstAddress); if (session != null) { session.WriteLine("*IDN?"); } else { throw new Exception(string.Format("无法连接到地址: {0}", inInstAddress)); } } string text = session.ReadLine(); char[] separator = new char[] { ',' }; return(text.Split(separator)[1].Trim()); } finally { tmpMutex.ReleaseMutex(); } }
/// <summary> /// 关闭会话 /// </summary> /// <param name="inAddress"></param> /// <returns></returns> public bool TryConnect(string inAddress) { try { InstrumentIOSession tmpIO = IOManager.ProvideDirectIO(inAddress); if (tmpIO.IsConnected) { tmpIO.Close(); return(true); } else { return(false); } } catch (Exception ex) { return(false); } }
public static string DetermineInstrumentInfo(string inInstAddress, out string outInstIdentity, out string outInstSN, out string outInstOptions, out string outFirmwareVersion, out string outManufator, bool isIdn = true) { Mutex tmpMutex = new Mutex(false, inInstAddress); tmpMutex.WaitOne(); try { outInstIdentity = ""; outInstOptions = ""; outInstSN = ""; outFirmwareVersion = ""; outManufator = ""; InstrumentIOSession session = null; try { session = IOManager.ProvideDirectIO(inInstAddress); if (session == null) { return(string.Empty); } if (isIdn) { try { session.WriteLine("*IDN?"); } catch { ///出错时移除对应的IO连接对象 IOManager.Remove(inInstAddress); //再次探测 session = IOManager.ProvideDirectIO(inInstAddress); session.WriteLine("*IDN?"); } string text = session.ReadLine(); char[] separator = new char[] { ',' }; string[] strArrays = text.Split(separator); if (strArrays.Length > 2) { outInstSN = strArrays[2].Trim(); } if (strArrays.Length > 3) { outFirmwareVersion = strArrays[3].Trim(); } string outModelNo = text.Split(separator)[1].Trim(); if (strArrays.Length > 0) { outManufator = strArrays[0].Trim(); } outInstIdentity = text; outInstOptions = ""; return(outModelNo); } else { return("用户自定义设备"); } } catch { return(""); } } finally { tmpMutex.ReleaseMutex(); } }