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

回答編集履歴

3

誤字修正

2021/04/28 10:40

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -8,8 +8,8 @@
8
8
  - 非同期 I/O (asyncio)
9
9
 
10
10
  **GUI のイベントループ内で実行する場合**は、 read(in_waiting) でも、
11
- blacking mode である以上、GUIが止まる可能性が残っているので、
11
+ blocking mode である以上、GUIが止まる可能性が残っているので、
12
- timeout, write_timeoutを設定し、non-blocking mode での読出にする必要があります。
12
+ timeout, write_timeoutを設定し、non-blocking mode にする必要があります。
13
13
  稀なケースですが、read(),write()が完了しない**障害時にGUI全体がフリーズしてしまいます**
14
14
 
15
15
  ----

2

ドキュメントのサンプルコードのリンクを追加

2021/04/28 10:39

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -18,6 +18,10 @@
18
18
  pySerial であれば、行バッファリングならLineReader クラスで、
19
19
  改行コード受信時にメソッド呼び出しできます。(受信待機にはスレッドを利用)
20
20
 
21
+ - [serial.threaded.LineReader example](https://pythonhosted.org/pyserial/pyserial_api.html#module-serial.threaded)
22
+ 改行コードを受信すると、それ迄の入力を引数にして handle_line() が呼び出される。
23
+
24
+ ----
21
25
  asyncio を使う場合、非同期シリアル通信のライブラリは複数あるようですが、
22
26
  行単位の読み出し処理には asyncio.StreamReader を併用すると、
23
27
  `line = await stream.readline()` みたいなコードで、

1

語句の修正

2021/04/28 10:38

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -25,5 +25,5 @@
25
25
 
26
26
  但し、GUIプログラムの場合は、
27
27
  非同期 I/O のイベントループもGUIのイベントループと一緒に動かさないといけないので、
28
- 結局はスレッドを導入することになります。
28
+ 結局はスレッドを導入することになります。
29
- (スレッドなしでも可能ですが、tkinter + asyncio の事例が少ない為)
29
+ (同一スレッドでも可能ですが、tkinter + asyncio の事例が少ない為)