回答編集履歴
2
回答の修正
test
CHANGED
@@ -10,9 +10,13 @@
|
|
10
10
|
|
11
11
|
これは、他の処理で受信操作の実行が遅れると取りこぼしが発生します
|
12
12
|
|
13
|
+
まず、他の処理をコメントアウトし、MIDI_RXルーチンだけを無限ループで実行させ、取りこぼしが出るかどうかを見てみてください。
|
13
14
|
|
14
15
|
|
16
|
+
|
17
|
+
これで取りこぼしがなく、その他の処理を入れると取りこぼしが発生するという場合は、
|
18
|
+
|
15
|
-
|
19
|
+
その処理を分割して、取りこぼしが発生する時間間隔より早い周期で受信操作(リングバッファの格納)を行う必要があります
|
16
20
|
|
17
21
|
そこらへんの対策はオシロスコープなどで、どこで時間がかかるか、どこで分割するかというのを見ていく必要があります
|
18
22
|
|
1
回答の修正
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
ちと気になるところとしては、
|
1
|
+
取りこぼしとは関係ないですが、ちと気になるところとしては、
|
2
2
|
|
3
|
-
|
3
|
+
MIDI_Rxルーチンで、いきなりmidi.getcを呼んでいますが、受信データが来ていない場合はここで待ちに入ってしまいます
|
4
4
|
|
5
5
|
ここはまず、受信データが有るかどうかを判断し、ない場合は以下の処理をパスするようにするほうがベストですね
|
6
6
|
|