回答編集履歴
2
追記
test
CHANGED
@@ -4,17 +4,25 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
-
しかし空の文字列が帰ってきているのか、受信漏れがあり、さらに改善していこうと思います。
|
7
|
+
しかし空の文字列が帰ってきているのか、~~受信漏れがあり~~、さらに改善していこうと思います。
|
8
8
|
|
9
9
|
ありがとうございました!
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
以下プログラムと実行結果
|
13
|
+
~~以下プログラムと実行結果~~
|
14
14
|
|
15
|
-
```Python3
|
16
15
|
|
16
|
+
|
17
|
+
**追記**
|
18
|
+
|
17
|
-
|
19
|
+
<改良版(受信漏れなし)>
|
20
|
+
|
21
|
+
(Python) "Py(数字)" > (Arduino) "Ard(数字)" > (Python) 表示
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
```Python
|
18
26
|
|
19
27
|
import serial
|
20
28
|
|
@@ -24,19 +32,15 @@
|
|
24
32
|
|
25
33
|
i = 1 #送信する文字
|
26
34
|
|
27
|
-
ser = serial.Serial('COM
|
35
|
+
ser = serial.Serial('COMポート',9600,timeout=None)
|
28
36
|
|
29
|
-
time.sleep(3)
|
37
|
+
time.sleep(3)
|
30
|
-
|
31
|
-
|
32
38
|
|
33
39
|
while True:
|
34
40
|
|
35
41
|
#送信
|
36
42
|
|
37
|
-
time.sleep(1)
|
38
|
-
|
39
|
-
data = str(i) + '.' #終端文字
|
43
|
+
data = 'Py' + str(i) + '.' #終端文字
|
40
44
|
|
41
45
|
flag=bytes(data,'utf-8')
|
42
46
|
|
@@ -48,27 +52,23 @@
|
|
48
52
|
|
49
53
|
time.sleep(1) #必要か?
|
50
54
|
|
51
|
-
line = 'null'
|
55
|
+
line = 'null'
|
52
56
|
|
53
|
-
|
57
|
+
|
54
58
|
|
55
59
|
#受信
|
56
60
|
|
57
|
-
while
|
61
|
+
while not ('.\n' in line):
|
58
62
|
|
59
|
-
|
63
|
+
temp = ser.readline()
|
60
64
|
|
61
|
-
temp =
|
65
|
+
temp = temp.decode('utf-8')
|
62
66
|
|
63
|
-
temp = temp.decode('utf-8') #lineに格納する前にdecode
|
64
|
-
|
65
|
-
line
|
67
|
+
line = line + temp
|
66
|
-
|
67
|
-
print(line) #確認用
|
68
68
|
|
69
69
|
line = line.replace('null', '')
|
70
70
|
|
71
|
-
line = line.s
|
71
|
+
line = line.rstrip('\n') #余分な改行は取り除く
|
72
72
|
|
73
73
|
print(line) #確認用
|
74
74
|
|
@@ -80,17 +80,33 @@
|
|
80
80
|
|
81
81
|
ser.close()
|
82
82
|
|
83
|
+
```
|
83
84
|
|
84
85
|
|
85
|
-
```
|
86
86
|
|
87
87
|
```Arduino
|
88
88
|
|
89
|
-
|
89
|
+
#include <stdio.h>
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
char input[30]; // 受信文字列格納
|
94
|
+
|
95
|
+
char sendata[30]; // 送信文字列格納
|
96
|
+
|
97
|
+
int i = 0; // 文字数のカウンタ
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
void setup() {
|
102
|
+
|
103
|
+
Serial.begin(9600);
|
104
|
+
|
105
|
+
}
|
106
|
+
|
107
|
+
|
90
108
|
|
91
109
|
void loop() {
|
92
|
-
|
93
|
-
// データ受信したとき
|
94
110
|
|
95
111
|
if (Serial.available()) {
|
96
112
|
|
@@ -98,21 +114,25 @@
|
|
98
114
|
|
99
115
|
// 文字数が10以上 or 末尾文字'.'
|
100
116
|
|
101
|
-
if (i >
|
117
|
+
if (i > 30 || input[i] == '.') {
|
102
118
|
|
103
119
|
// 末尾に終端文字の挿入
|
104
120
|
|
105
121
|
input[i+1] = '\0';
|
106
122
|
|
107
|
-
S
|
123
|
+
String tmp = input; //replaceするために1度str型に
|
108
124
|
|
125
|
+
tmp.replace("Py" , "Ard");
|
126
|
+
|
127
|
+
tmp.toCharArray( sendata , tmp.length() ) ;
|
128
|
+
|
109
|
-
Serial.write(
|
129
|
+
Serial.write(sendata); //送信
|
130
|
+
|
131
|
+
Serial.write(".\n"); //何故か受信した.が消える謎
|
110
132
|
|
111
133
|
// カウンタの初期化
|
112
134
|
|
113
135
|
i = 0;
|
114
|
-
|
115
|
-
bytenum++;
|
116
136
|
|
117
137
|
} else { i++; }
|
118
138
|
|
@@ -122,60 +142,28 @@
|
|
122
142
|
|
123
143
|
}
|
124
144
|
|
125
|
-
|
126
|
-
|
127
145
|
```
|
128
146
|
|
129
147
|
```jikkoukekka
|
130
148
|
|
131
|
-
1. b'1.'
|
149
|
+
Py1. b'Py1.'
|
132
150
|
|
133
|
-
|
151
|
+
Ard1.
|
134
152
|
|
135
|
-
|
153
|
+
Py2. b'Py2.'
|
136
154
|
|
137
|
-
2.
|
155
|
+
Ard2.
|
138
156
|
|
139
|
-
|
157
|
+
Py3. b'Py3.'
|
140
158
|
|
141
|
-
|
159
|
+
Ard3.
|
142
160
|
|
143
|
-
|
161
|
+
Py4. b'Py4.'
|
144
162
|
|
145
|
-
|
163
|
+
Ard4.
|
146
164
|
|
165
|
+
Py5. b'Py5.'
|
147
166
|
|
148
|
-
|
149
|
-
['']
|
150
|
-
|
151
|
-
4. b'4.'
|
152
|
-
|
153
|
-
null2
|
154
|
-
|
155
|
-
['2']
|
156
|
-
|
157
|
-
5. b'5.'
|
158
|
-
|
159
|
-
|
167
|
+
Ard5.
|
160
|
-
|
161
|
-
['.']
|
162
|
-
|
163
|
-
6. b'6.'
|
164
|
-
|
165
|
-
null
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
['']
|
170
|
-
|
171
|
-
7. b'7.'
|
172
|
-
|
173
|
-
null3
|
174
|
-
|
175
|
-
['3']
|
176
|
-
|
177
|
-
8. b'8.'
|
178
|
-
|
179
|
-
|
180
168
|
|
181
169
|
```
|
1
修正
test
CHANGED
@@ -92,7 +92,7 @@
|
|
92
92
|
|
93
93
|
// データ受信したとき
|
94
94
|
|
95
|
-
if (Serial.available()
|
95
|
+
if (Serial.available()) {
|
96
96
|
|
97
97
|
input[i] = Serial.read();
|
98
98
|
|