回答編集履歴
1
ソースにコメントを追加
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
送信するデータをintからbytesに変えました。ソースを読むに、数値型で送って数値型で返してほしいわけではないと判断したからです。`ser.write(5)`ではストリームに0x05が
|
1
|
+
送信するデータをintからbytesに変えました。ソースを読むに、数値型で送って数値型で返してほしいわけではないと判断したからです。`ser.write(5)`ではストリームに0x05が送られるのであって、strまたはcharの'5'が送られるわけではありません。
|
2
2
|
|
3
3
|
また、Arduinoでunicodeを使うのは少々骨が折れるのでエンコードをASCIIに変更しました。
|
4
4
|
|
@@ -16,21 +16,27 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
-
ser.write("5".encode('ascii'))
|
19
|
+
ser.write("5".encode('ascii')) #ascii文字として'5'を送信
|
20
20
|
|
21
21
|
|
22
22
|
|
23
23
|
while True:
|
24
24
|
|
25
|
-
|
25
|
+
try:
|
26
26
|
|
27
|
-
line =
|
27
|
+
line = ser.readline()
|
28
28
|
|
29
|
-
line = line.
|
29
|
+
line = line.decode('ascii') #ascii文字としてデコード
|
30
30
|
|
31
|
-
|
31
|
+
line = line.rstrip()
|
32
32
|
|
33
|
+
print(line)
|
34
|
+
|
33
|
-
time.sleep(1)
|
35
|
+
time.sleep(1)
|
36
|
+
|
37
|
+
except KeyboardInterrupt:
|
38
|
+
|
39
|
+
break #Ctrl+C キーストロークで中断
|
34
40
|
|
35
41
|
ser.close()
|
36
42
|
|
@@ -40,7 +46,7 @@
|
|
40
46
|
|
41
47
|
```arduino
|
42
48
|
|
43
|
-
#define retchar 1 //#ifdef用フラグ
|
49
|
+
#define retchar 1 //#ifdef用フラグ (True, Falseを送信したい場合はコメントアウトしてください)
|
44
50
|
|
45
51
|
|
46
52
|
|
@@ -54,13 +60,19 @@
|
|
54
60
|
|
55
61
|
void loop() {
|
56
62
|
|
63
|
+
/** Serial.available()はストリームに残っているバイト数を返す。
|
64
|
+
|
65
|
+
* Serial.readで読みだしてあげる必要あり。
|
66
|
+
|
67
|
+
*/
|
68
|
+
|
57
69
|
if(Serial.available() > 0){
|
58
70
|
|
59
|
-
char num = Serial.read();
|
71
|
+
char num = Serial.read(); //1バイト分読み込みます。
|
60
72
|
|
61
73
|
#ifdef retchar
|
62
74
|
|
63
|
-
Serial.println(num);
|
75
|
+
Serial.println(num); //文字として送り返します。
|
64
76
|
|
65
77
|
#else
|
66
78
|
|