本当に必要な精度はどのくらいでしょう。
'00秒000' と書いていますが、1msのズレも問題になるのですか? だとすると、実現は厳しいです。
USB-シリアル変換を使う場合、USBのパケットが16msだったかの周期に丸められるはずです。ここはほぼ制御不能でしょう。
その他にも、Windowsのタスク切り替えも数10msのブレを生む要因になるでしょうし、シリアル通信であれば9600bpsとして1バイトの送信におよそ1msかかる、なんていうのは考慮しなければいけません。
Arduino側を何らかの方法でインターネットにつないでNTPで時計合わせをするとか、GPSを繋いでそこから時刻を得るとかして、データにタイムスタンプを付けるのが実用的かなとは思いますが。
100msでいい、とのことでとりあえず原理的なところだけ試してみました。
Teraterm
1;Teraterm Macro
2logopen "C:\Users\default\Documents\teraterm\testSec.log" 0 1 1 1 1
3gettime sec "%S"
4psec=sec
5while 1
6 gettime sec "%S"
7 strcompare sec psec
8 if result<>0 then
9 send "q"
10 endif
11 psec=sec
12endwhile
Arduino
1void setup() {
2 Serial.begin(9600);
3}
4
5void loop() {
6 if(Serial.available()){
7 Serial.read();
8 Serial.println(millis());
9 }
10}
で出来たTeratermのタイムスタンプ付きログファイル
[Sat Nov 16 19:20:47.005 2019] 2268429
[Sat Nov 16 19:20:48.004 2019] 2269427
[Sat Nov 16 19:20:49.004 2019] 2270426
[Sat Nov 16 19:20:50.007 2019] 2271425
[Sat Nov 16 19:20:51.009 2019] 2272424
[Sat Nov 16 19:20:52.006 2019] 2273423
[Sat Nov 16 19:20:53.005 2019] 2274422
[Sat Nov 16 19:20:54.005 2019] 2275421
[Sat Nov 16 19:20:55.006 2019] 2276420
[Sat Nov 16 19:20:56.004 2019] 2277419
[Sat Nov 16 19:20:57.007 2019] 2278418
[Sat Nov 16 19:20:58.007 2019] 2279416
[Sat Nov 16 19:20:59.005 2019] 2280416
[Sat Nov 16 19:21:00.006 2019] 2281414
[Sat Nov 16 19:21:01.005 2019] 2282415
[Sat Nov 16 19:21:02.007 2019] 2283413
[Sat Nov 16 19:21:03.004 2019] 2284411
[Sat Nov 16 19:21:04.007 2019] 2285411
[Sat Nov 16 19:21:05.007 2019] 2286409
[Sat Nov 16 19:21:06.007 2019] 2287409
[Sat Nov 16 19:21:07.005 2019] 2288407
あなたの用途にあうかどうかは私は知りませんが。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/16 08:21
2019/11/16 08:36