Example #1
0
        /// <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();
            }
        }
Example #2
0
 /// <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);
     }
 }
Example #3
0
        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();
            }
        }