回答編集履歴

4

説明文の修正

2020/06/08 12:13

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -108,7 +108,7 @@
108
108
 
109
109
  # ここで終了処理
110
110
 
111
- # サブスレッドで実行すれば、別スレッドからの同時アクセスの心配がない
111
+ # GPIO関連の入出力を全てこのスレッドで実行すれば、別スレッドからの同時アクセスの心配がない
112
112
 
113
113
  GPIO.cleanup()
114
114
 

3

追記、終了時の処理の他の方法について

2020/06/08 12:13

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -119,3 +119,13 @@
119
119
  GPIO.cleanup()
120
120
 
121
121
  ```
122
+
123
+
124
+
125
+ 追記:
126
+
127
+ 他には、QThread.finished シグナルで終了時に呼び出す方法もありますが、
128
+
129
+ その場合も、メインスレッドでの実行になるので、
130
+
131
+ 出来れば GPIO 関連の入出力はスレッド側で完結した方が良いです。

2

コメント修正

2020/06/08 12:11

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -106,7 +106,9 @@
106
106
 
107
107
 
108
108
 
109
- # ここで終了処理をする
109
+ # ここで終了処理
110
+
111
+ # サブスレッド側で実行すれば、別スレッドからの同時アクセスの心配がない
110
112
 
111
113
  GPIO.cleanup()
112
114
 

1

コードの場所を追記>run()メソッド内

2020/06/08 12:05

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -96,20 +96,24 @@
96
96
 
97
97
  ```python
98
98
 
99
- while not self.isInterruptionRequested():
99
+ def run(self):
100
-
101
- ... 省略 (ネストしたループの中断方法は別途考える)
102
100
 
103
101
 
104
102
 
105
- # ここで終了処理をする
103
+ while not self.isInterruptionRequested():
106
104
 
107
- GPIO.cleanup()
105
+ ... 省略 (ネストしたループの中断方法は別途考える)
108
106
 
109
- Motor_Stop()
110
107
 
111
- time.sleep(1)
112
108
 
109
+ # ここで終了処理をする
110
+
113
- GPIO.cleanup()
111
+ GPIO.cleanup()
112
+
113
+ Motor_Stop()
114
+
115
+ time.sleep(1)
116
+
117
+ GPIO.cleanup()
114
118
 
115
119
  ```