Exemple #1
0
        public static bool Init()
        {
            var result = false;

            try
            {
                var comNum = FindSerialPort.GetComNo(ComName);
                if (comNum.Count() != 1)
                {
                    return(false);
                }

                if (!port.IsOpen)
                {
                    //Agilent34401A用のシリアルポート設定
                    port.PortName = comNum[0]; //この時点で既にポートが開いている場合COM番号は設定できず例外となる(イニシャライズは1回のみ有効)
                    port.BaudRate = 9600;
                    port.DataBits = 8;
                    port.Parity   = System.IO.Ports.Parity.None;
                    port.StopBits = System.IO.Ports.StopBits.One;
                    port.NewLine  = ("\r\n");
                    port.Open();
                }

                //クエリ送信
                if (!SendData("*IDN?", setLog: false))
                {
                    return(false);
                }
                return(result = ReceiveData.Contains(ID_LPC1768));
            }
            catch
            {
                return(result = false);
            }
            finally
            {
                if (!result)
                {
                    ClosePort();
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// 周辺機器の初期化
        /// </summary>
        public static void InitDevices()//TODO:
        {
            Flags.Initializing周辺機器 = true;

            Task.Run(() =>
            {
                Flags.DoGetDeviceName = true;
                while (Flags.DoGetDeviceName)
                {
                    FindSerialPort.GetDeviceNames();
                    Thread.Sleep(400);
                }
            });



            //LPC1768の初期化
            bool StopMbed = false;

            Task.Run(() =>
            {
                while (true)
                {
                    if (Flags.StopInit周辺機器)
                    {
                        break;
                    }

                    Flags.StateMbed = LPC1768.Init();
                    if (Flags.StateMbed)
                    {
                        break;
                    }

                    Thread.Sleep(500);
                }
                StopMbed = true;
            });

            //マルチメータの初期化
            bool StopMulti = false;

            Task.Run(() =>
            {
                while (true)
                {
                    if (Flags.StopInit周辺機器)
                    {
                        break;
                    }

                    Flags.StateMultimeter = InitGdm();
                    if (Flags.StateMultimeter)
                    {
                        break;
                    }

                    Thread.Sleep(500);
                }
                StopMulti = true;
            });

            Task.Run(() =>
            {
                while (true)
                {
                    CheckAll周辺機器フラグ();
                    var IsAllStopped = StopMbed && StopMulti;

                    if (Flags.AllOk周辺機器接続 || IsAllStopped)
                    {
                        break;
                    }
                    Thread.Sleep(400);
                }
                Flags.DoGetDeviceName = false;
                Thread.Sleep(500);
                Flags.Initializing周辺機器 = false;
            });
        }