質問編集履歴

3

修正後ソースを追記

2017/10/24 07:26

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -160,7 +160,7 @@
160
160
 
161
161
 
162
162
 
163
- --追記 2017/10/18 0:58--
163
+ --追記 2017/10/24 --
164
164
 
165
165
  回答を参考にint.to_bytesを用いてPython側のプログラムを書き直しました。
166
166
 
@@ -188,7 +188,7 @@
188
188
 
189
189
  print(flag_byte)
190
190
 
191
- ser.write(flag)
191
+ ser.write(flag_byte)
192
192
 
193
193
 
194
194
 
@@ -246,4 +246,4 @@
246
246
 
247
247
 
248
248
 
249
- れで実行したところシリアル通信は行えているようなのですが、0で送った時は無反応、それ以外を送ったとき(1や2)にLチカしまいました。
249
+ このソースく動作しました。感謝します。

2

結果の追加

2017/10/24 07:26

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -246,4 +246,4 @@
246
246
 
247
247
 
248
248
 
249
- これで実行したところシリアル通信は行えているようなのですが、0で送った時は無反応、1を送った時はLチカとなってしまいました。
249
+ これで実行したところシリアル通信は行えているようなのですが、0で送った時は無反応、それ以外を送ったとき(1や2)にLチカてしまいました。

1

回答を参考にしてソース修正

2017/10/17 16:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -153,3 +153,97 @@
153
153
 
154
154
 
155
155
  成功時はstr→bytes型へ、失敗時はint→bytes型への型変換なのですが、なぜ後者ではLチカできなかったのでしょうか。
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+ --追記 2017/10/18 0:58--
164
+
165
+ 回答を参考にint.to_bytesを用いてPython側のプログラムを書き直しました。
166
+
167
+ ```Python
168
+
169
+ #coding:utf-8
170
+
171
+
172
+
173
+ import serial
174
+
175
+ from time import sleep
176
+
177
+
178
+
179
+ def main():
180
+
181
+ with serial.Serial("/dev/tty.usbmodem1421",9600,timeout=1) as ser:
182
+
183
+ sleep(5)
184
+
185
+ flag = 1
186
+
187
+ flag_byte = flag.to_bytes(1,'big')
188
+
189
+ print(flag_byte)
190
+
191
+ ser.write(flag)
192
+
193
+
194
+
195
+ if __name__ == "__main__":
196
+
197
+ main()
198
+
199
+ ```
200
+
201
+
202
+
203
+ またこれに応じてArduinoのcase文を書き直しました。
204
+
205
+
206
+
207
+ ```Arduino
208
+
209
+ #define LED_PIN 13
210
+
211
+
212
+
213
+ void setup() {
214
+
215
+ pinMode(LED_PIN, OUTPUT); //13番ピンを出力に設定
216
+
217
+ Serial.begin(9600);//シリアル通信のレートを9600に設定
218
+
219
+ digitalWrite(13, LOW);
220
+
221
+ }
222
+
223
+
224
+
225
+ void loop() {
226
+
227
+ if (Serial.available() > 0) {
228
+
229
+ int cmd = Serial.read();
230
+
231
+
232
+
233
+ switch (cmd) {
234
+
235
+ case 0 : digitalWrite(13, HIGH); break;
236
+
237
+ case 1 : digitalWrite(13, LOW); break;
238
+
239
+ }
240
+
241
+ }
242
+
243
+ }
244
+
245
+ ```
246
+
247
+
248
+
249
+ これで実行したところシリアル通信は行えているようなのですが、0で送った時は無反応、1を送った時はLチカとなってしまいました。