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

質問編集履歴

3

わかりやすく

2019/08/18 03:26

投稿

HiroPokeHero
HiroPokeHero

スコア45

title CHANGED
@@ -1,1 +1,1 @@
1
- tkinterを使って、root.after(10, readSerial)によってシリアル信号を受け取る
1
+ tkinterを使って、root.after(10, readSerial)によってシリアル信号をサイクリックに受け取る
body CHANGED
File without changes

2

進捗更新

2019/08/18 03:26

投稿

HiroPokeHero
HiroPokeHero

スコア45

title CHANGED
File without changes
body CHANGED
@@ -258,4 +258,56 @@
258
258
  ### **補足情報(FW/ツールのバージョンなど)**
259
259
  Windows10、
260
260
  Arduino1.8.9
261
- Python.Python.3.7.4
261
+ Python.Python.3.7.4
262
+
263
+ ### **追記8/17**
264
+ 現在のスクリプトを記載します。
265
+ ボタンが2つあって、
266
+ 1つがstartSerial()とstopSerial()を割り当てています。
267
+ startSerial()によって受信開始(とうより読み込み開始?)して、
268
+ 出力。
269
+ その途中にstopSerial()のボタンを押すと中断するようにしたい。
270
+
271
+ しかし、現状では受信開始してしまうとコントロールができなくなり、
272
+ ボタンを押すことができません。
273
+
274
+ ```ここに言語を入力
275
+ ser = serial.Serial('COM3', 9600, timeout=0.1, writeTimeout=0)
276
+
277
+ def readSerial(figS):
278
+ global ser, fig
279
+ print("a")
280
+ '''
281
+ i = 0
282
+ b = True
283
+ ser = serial.Serial('COM3', 9600, timeout=0.1, writeTimeout=0)
284
+ while b == True:
285
+ data = ser.readall()
286
+ print(data)
287
+ i = i + 1
288
+ if (i>100):
289
+ b = False
290
+ ser.close()
291
+ '''
292
+ #ser = serial.Serial('COM3', 9600, timeout=0.1, writeTimeout=0)
293
+ if flgS == True:
294
+ while True:
295
+ rxData = ser.readall()
296
+ rxData2 = rxData.strip().decode('utf-8')
297
+ print(rxData)
298
+ if len(rxData) > 0:
299
+ txt.insert('end', rxData2)
300
+ break
301
+ root.after(10, readSerial(True))
302
+
303
+
304
+ def startSerial():
305
+ print("Start serial")
306
+ #ser = serial.Serial('COM3', 9600, timeout=0.1, writeTimeout=0)
307
+ readSerial(True)
308
+
309
+ def stopSerial():
310
+ print("Stop serial")
311
+ #ser.close()
312
+ readSerial(False)
313
+ ```

1

改善

2019/08/17 02:37

投稿

HiroPokeHero
HiroPokeHero

スコア45

title CHANGED
File without changes
body CHANGED
@@ -230,7 +230,23 @@
230
230
  ### **発生している問題・エラーメッセージ**
231
231
  エラーはありません。
232
232
 
233
+ ただ、シェルに文字が出てきません。
234
+ ただ、改行はしているみたいです。
235
+ 上記のプログラムでは画面がスクロールされている状態です。
233
236
 
237
+ スクリプト内部の出力を、print(rxData2)からprint(rxData)にすると
238
+ バイナリの何かしらを受信していることはわかります。
239
+ 送信と受信のタイミングでしょうか?
240
+ ※ちなみにシリアルのボーレートはすべて9600に統一していますので、
241
+  スクリプトの書き方が悪いように推測しています。
242
+ ```ここに言語を入力
243
+ b''
244
+ b''
245
+ b''
246
+ b''
247
+ b''
248
+ ```
249
+
234
250
  ### **試したこと**
235
251
  readline()を
236
252
  read_all()、read()に変えてみる。