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(); } } }
/// <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; }); }