質問するログイン新規登録

回答編集履歴

1

other呼び出しをやめることで、3秒余りの間隔で回っているループを約1秒間隔にできることを追記

2018/11/16 05:47

投稿

coco_bauer
coco_bauer

スコア6921

answer CHANGED
@@ -16,7 +16,7 @@
16
16
  A) [1秒毎にGPS表示しながら]
17
17
  rungpsのループの中に、シリアル通信からの読み出し("sentence = s.readline().decode('utf-8')")をするコードが含まれています。
18
18
   シリアル通信にどのようなデータが送られていることになっているのかわかりませんが、シリアル通信からデータが来なければループはデータ待ちで止まることになります。1秒の時間待ち以外に、シリアル通信待ちが入る(データが来るのを待つ時間、届いたデータを読み出す時間が発生する)ので、不定期にループが実行されているのではと思われます。
19
-  ループの前にシリアル通信から一連の指示データを読み込むようにして、ループ内では指示データに従って動作する(シリアル通信は使わない)ようにすれば、1秒ごとに動作するように出来ると思われます。
19
+  ループの前にシリアル通信から一連の指示データを読み込むようにして、ループ内では指示データに従って動作する(シリアル通信は使わない)ようにすれば、1秒ごとに動作するように出来ると思われます。(2秒の待ちを含む other()の呼び出しをやめてください。そうすれば3秒+α間隔で回っていたループが、1秒+アルファ間隔で回るようになるはず)
20
20
   また、"if sentence[0] != '$':"の付近は、シリアル通信から'$'が送られてきたら、何かの動作をさせるコードの断片(残骸)だと思われますが、今はcontinueで何もなかったことにしてしまっているので改良が必要だと思います。 
21
21
 
22
22
  B) [2秒毎にokを表示]