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

質問編集履歴

3

修正後ソースを追記

2017/10/24 07:26

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -79,7 +79,7 @@
79
79
 
80
80
 
81
81
 
82
- --追記 2017/10/18 0:58--
82
+ --追記 2017/10/24 --
83
83
  回答を参考にint.to_bytesを用いてPython側のプログラムを書き直しました。
84
84
  ```Python
85
85
  #coding:utf-8
@@ -93,7 +93,7 @@
93
93
  flag = 1
94
94
  flag_byte = flag.to_bytes(1,'big')
95
95
  print(flag_byte)
96
- ser.write(flag)
96
+ ser.write(flag_byte)
97
97
 
98
98
  if __name__ == "__main__":
99
99
  main()
@@ -122,4 +122,4 @@
122
122
  }
123
123
  ```
124
124
 
125
- れで実行したところシリアル通信は行えているようなのですが、0で送った時は無反応、それ以外を送ったとき(1や2)にLチカしまいました。
125
+ このソースく動作しました。感謝します。

2

結果の追加

2017/10/24 07:26

投稿

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

1

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

2017/10/17 16:06

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -75,4 +75,51 @@
75
75
  成功時、失敗時ともにflagをbytes型に変換したつもりです。
76
76
  type(flag)の結果はどちらもbytes型でした。
77
77
 
78
- 成功時はstr→bytes型へ、失敗時はint→bytes型への型変換なのですが、なぜ後者ではLチカできなかったのでしょうか。
78
+ 成功時はstr→bytes型へ、失敗時はint→bytes型への型変換なのですが、なぜ後者ではLチカできなかったのでしょうか。
79
+
80
+
81
+
82
+ --追記 2017/10/18 0:58--
83
+ 回答を参考にint.to_bytesを用いてPython側のプログラムを書き直しました。
84
+ ```Python
85
+ #coding:utf-8
86
+
87
+ import serial
88
+ from time import sleep
89
+
90
+ def main():
91
+ with serial.Serial("/dev/tty.usbmodem1421",9600,timeout=1) as ser:
92
+ sleep(5)
93
+ flag = 1
94
+ flag_byte = flag.to_bytes(1,'big')
95
+ print(flag_byte)
96
+ ser.write(flag)
97
+
98
+ if __name__ == "__main__":
99
+ main()
100
+ ```
101
+
102
+ またこれに応じてArduinoのcase文を書き直しました。
103
+
104
+ ```Arduino
105
+ #define LED_PIN 13
106
+
107
+ void setup() {
108
+ pinMode(LED_PIN, OUTPUT); //13番ピンを出力に設定
109
+ Serial.begin(9600);//シリアル通信のレートを9600に設定
110
+ digitalWrite(13, LOW);
111
+ }
112
+
113
+ void loop() {
114
+ if (Serial.available() > 0) {
115
+ int cmd = Serial.read();
116
+
117
+ switch (cmd) {
118
+ case 0 : digitalWrite(13, HIGH); break;
119
+ case 1 : digitalWrite(13, LOW); break;
120
+ }
121
+ }
122
+ }
123
+ ```
124
+
125
+ これで実行したところシリアル通信は行えているようなのですが、0で送った時は無反応、1を送った時はLチカとなってしまいました。