質問編集履歴
3
わかりやすく
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
tkinterを使って、root.after(10, readSerial)によってシリアル信号を受け取る
|
1
|
+
tkinterを使って、root.after(10, readSerial)によってシリアル信号をサイクリックに受け取る
|
test
CHANGED
File without changes
|
2
進捗更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -519,3 +519,107 @@
|
|
519
519
|
Arduino1.8.9
|
520
520
|
|
521
521
|
Python.Python.3.7.4
|
522
|
+
|
523
|
+
|
524
|
+
|
525
|
+
### **追記8/17**
|
526
|
+
|
527
|
+
現在のスクリプトを記載します。
|
528
|
+
|
529
|
+
ボタンが2つあって、
|
530
|
+
|
531
|
+
1つがstartSerial()とstopSerial()を割り当てています。
|
532
|
+
|
533
|
+
startSerial()によって受信開始(とうより読み込み開始?)して、
|
534
|
+
|
535
|
+
出力。
|
536
|
+
|
537
|
+
その途中にstopSerial()のボタンを押すと中断するようにしたい。
|
538
|
+
|
539
|
+
|
540
|
+
|
541
|
+
しかし、現状では受信開始してしまうとコントロールができなくなり、
|
542
|
+
|
543
|
+
ボタンを押すことができません。
|
544
|
+
|
545
|
+
|
546
|
+
|
547
|
+
```ここに言語を入力
|
548
|
+
|
549
|
+
ser = serial.Serial('COM3', 9600, timeout=0.1, writeTimeout=0)
|
550
|
+
|
551
|
+
|
552
|
+
|
553
|
+
def readSerial(figS):
|
554
|
+
|
555
|
+
global ser, fig
|
556
|
+
|
557
|
+
print("a")
|
558
|
+
|
559
|
+
'''
|
560
|
+
|
561
|
+
i = 0
|
562
|
+
|
563
|
+
b = True
|
564
|
+
|
565
|
+
ser = serial.Serial('COM3', 9600, timeout=0.1, writeTimeout=0)
|
566
|
+
|
567
|
+
while b == True:
|
568
|
+
|
569
|
+
data = ser.readall()
|
570
|
+
|
571
|
+
print(data)
|
572
|
+
|
573
|
+
i = i + 1
|
574
|
+
|
575
|
+
if (i>100):
|
576
|
+
|
577
|
+
b = False
|
578
|
+
|
579
|
+
ser.close()
|
580
|
+
|
581
|
+
'''
|
582
|
+
|
583
|
+
#ser = serial.Serial('COM3', 9600, timeout=0.1, writeTimeout=0)
|
584
|
+
|
585
|
+
if flgS == True:
|
586
|
+
|
587
|
+
while True:
|
588
|
+
|
589
|
+
rxData = ser.readall()
|
590
|
+
|
591
|
+
rxData2 = rxData.strip().decode('utf-8')
|
592
|
+
|
593
|
+
print(rxData)
|
594
|
+
|
595
|
+
if len(rxData) > 0:
|
596
|
+
|
597
|
+
txt.insert('end', rxData2)
|
598
|
+
|
599
|
+
break
|
600
|
+
|
601
|
+
root.after(10, readSerial(True))
|
602
|
+
|
603
|
+
|
604
|
+
|
605
|
+
|
606
|
+
|
607
|
+
def startSerial():
|
608
|
+
|
609
|
+
print("Start serial")
|
610
|
+
|
611
|
+
#ser = serial.Serial('COM3', 9600, timeout=0.1, writeTimeout=0)
|
612
|
+
|
613
|
+
readSerial(True)
|
614
|
+
|
615
|
+
|
616
|
+
|
617
|
+
def stopSerial():
|
618
|
+
|
619
|
+
print("Stop serial")
|
620
|
+
|
621
|
+
#ser.close()
|
622
|
+
|
623
|
+
readSerial(False)
|
624
|
+
|
625
|
+
```
|
1
改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -462,6 +462,38 @@
|
|
462
462
|
|
463
463
|
|
464
464
|
|
465
|
+
ただ、シェルに文字が出てきません。
|
466
|
+
|
467
|
+
ただ、改行はしているみたいです。
|
468
|
+
|
469
|
+
上記のプログラムでは画面がスクロールされている状態です。
|
470
|
+
|
471
|
+
|
472
|
+
|
473
|
+
スクリプト内部の出力を、print(rxData2)からprint(rxData)にすると
|
474
|
+
|
475
|
+
バイナリの何かしらを受信していることはわかります。
|
476
|
+
|
477
|
+
送信と受信のタイミングでしょうか?
|
478
|
+
|
479
|
+
※ちなみにシリアルのボーレートはすべて9600に統一していますので、
|
480
|
+
|
481
|
+
スクリプトの書き方が悪いように推測しています。
|
482
|
+
|
483
|
+
```ここに言語を入力
|
484
|
+
|
485
|
+
b''
|
486
|
+
|
487
|
+
b''
|
488
|
+
|
489
|
+
b''
|
490
|
+
|
491
|
+
b''
|
492
|
+
|
493
|
+
b''
|
494
|
+
|
495
|
+
```
|
496
|
+
|
465
497
|
|
466
498
|
|
467
499
|
### **試したこと**
|