Sub GetM3870D() 'TR0107_P313 'アクティブ・シートにM3870Dから10秒間隔で5000回データを収集する Dim MeasCount As Long '計測回数のカウント変数 Dim MeasTime As Date '計測時間 ec.COMn = 1 'M3870DはCOM1に接続 ec.Setting = "1200,n,7,2" '通信条件の設定 ec.Delimiter = "CR" 'デリミタはCR ec.HandShaking = "N" 'ハンドシェークなし ec.RTSCTS = False 'RTSをマイナス・レベル出力に ec.DTRDSR = True 'DTRをプラス・レベル出力に '表題の書き込み Range("B3") = "測定回数" Range("C3") = "測定時間" Range("D3") = "受信データ" '計測時間の初期調整 MeasTime = Now - TimeSerial(0, 0, 1) '初回はすぐに開始 2回目 1秒後 '計測ループ For MeasCount = 1 To 5000 '測定回数 5000回 'M3870D -> MeasTime = MeasTime + TimeSerial(0, 0, 4) '計測時間を 4秒後にセット Do DoEvents Loop While MeasTime > Now '計測時間まで待つ ec.Ascii = "D" '計測コマンドの送信 Range("B3").Offset(MeasCount, 2) = ec.AsciiLine '受信データのストア Range("B3").Offset(MeasCount, 0) = MeasCount '測定回数のストア Range("B3").Offset(MeasCount, 1) = Format(Now, "hh:mm:ss") '現在の時間をストア 'PIC -> MeasTime = MeasTime + TimeSerial(0, 0, 1.5) '計測時間を 1.5秒後にセット Do DoEvents Loop While MeasTime > Now '計測時間まで待つ ec.RTSCTS = True 'RTSをプラス・レベル出力に MeasTime = MeasTime + TimeSerial(0, 0, 0.5) '計測時間を 0.5秒後にセット Do DoEvents Loop While MeasTime > Now '計測時間まで待つ ec.RTSCTS = False 'RTSをマイナス・レベル出力に 'M3870D -> MeasTime = MeasTime + TimeSerial(0, 0, 4) '計測時間を 4秒後にセット Do DoEvents Loop While MeasTime > Now '計測時間まで待つ ec.Ascii = "D" '計測コマンドの送信 Range("B3").Offset(MeasCount, 4) = ec.AsciiLine '受信データのストア 'PIC -> MeasTime = MeasTime + TimeSerial(0, 0, 1.5) '計測時間を 1.5秒後にセット Do DoEvents Loop While MeasTime > Now '計測時間まで待つ ec.RTSCTS = True 'RTSをプラス・レベル出力に MeasTime = MeasTime + TimeSerial(0, 0, 0.5) '計測時間を 0.5秒後にセット Do DoEvents Loop While MeasTime > Now '計測時間まで待つ ec.RTSCTS = False 'RTSをマイナス・レベル出力に Next MeasCount '繰り返し ec.COMn = 0 'ポートを閉じます End Sub