質問編集履歴
3
修正後ソースを追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -79,7 +79,7 @@
|
|
79
79
|
|
80
80
|
|
81
81
|
|
82
|
-
--追記 2017/10/
|
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(
|
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
|
-
こ
|
125
|
+
このソースで正しく動作しました。感謝します。
|
2
結果の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -122,4 +122,4 @@
|
|
122
122
|
}
|
123
123
|
```
|
124
124
|
|
125
|
-
これで実行したところシリアル通信は行えているようなのですが、0で送った時は無反応、
|
125
|
+
これで実行したところシリアル通信は行えているようなのですが、0で送った時は無反応、それ以外を送ったとき(1や2)にLチカしてしまいました。
|
1
回答を参考にしてソース修正
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チカとなってしまいました。
|