通过串行命令 arduino 仅在拖尾时有效
Commanding arduino over serial only works while tailing
我有以下arduino代码:
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
char rfSetting[6] = "01111";
String command;
void setup() {
Serial.begin(9600);
// Transmitter is connected to Arduino Pin #10
mySwitch.enableTransmit(10);
}
void loop() {
if (Serial.available() > 0) {
// get incoming byte:
command = Serial.readString();
command.trim();
if( command.length() == 2 &&
command[0] > 64 && command[0] < 69 &&
(command[1] == '0' | command[1] == '1')){
char rfCommand[6] = "00000";
rfCommand[command[0]-65] = '1';
Serial.println(rfCommand);
if(command[1] == '0') {
mySwitch.switchOff(rfSetting, rfCommand);
} else {
mySwitch.switchOn(rfSetting, rfCommand);
}
delay(1000);
} else {
Serial.println("Invalid Input");
}
}
}
要命令 arduino,我使用以下 python 脚本:
import serial
import sys
import time
ser = serial.Serial("/dev/ttyACM0",9600)
time.sleep(2)
ser.write(sys.argv[1])
ser.close()
现在,当我执行 python 脚本时:
python test.py A0
没有任何反应。如果我运行这个
tail -f /dev/ttyACM0
并行,有效。
我试图在不拖尾端口的情况下向 arduino 发送命令。
我做错了什么?
主机OS:Raspian
PS:我已经尝试用这个解决了:
stty -F /dev/ttyACM0 9600 cs8 cread clocal
但这没有帮助。
使用
import serial
import sys
import time
ser = serial.Serial("/dev/ttyACM0",9600)
time.sleep(2)
ser.write(sys.argv[1])
ser.flush() # THIS here should put the data through,
# might block until your os decides to put the data through
ser.close()
您也可以考虑这个答案 提示
我有以下arduino代码:
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
char rfSetting[6] = "01111";
String command;
void setup() {
Serial.begin(9600);
// Transmitter is connected to Arduino Pin #10
mySwitch.enableTransmit(10);
}
void loop() {
if (Serial.available() > 0) {
// get incoming byte:
command = Serial.readString();
command.trim();
if( command.length() == 2 &&
command[0] > 64 && command[0] < 69 &&
(command[1] == '0' | command[1] == '1')){
char rfCommand[6] = "00000";
rfCommand[command[0]-65] = '1';
Serial.println(rfCommand);
if(command[1] == '0') {
mySwitch.switchOff(rfSetting, rfCommand);
} else {
mySwitch.switchOn(rfSetting, rfCommand);
}
delay(1000);
} else {
Serial.println("Invalid Input");
}
}
}
要命令 arduino,我使用以下 python 脚本:
import serial
import sys
import time
ser = serial.Serial("/dev/ttyACM0",9600)
time.sleep(2)
ser.write(sys.argv[1])
ser.close()
现在,当我执行 python 脚本时:
python test.py A0
没有任何反应。如果我运行这个
tail -f /dev/ttyACM0
并行,有效。
我试图在不拖尾端口的情况下向 arduino 发送命令。 我做错了什么?
主机OS:Raspian
PS:我已经尝试用这个解决了:
stty -F /dev/ttyACM0 9600 cs8 cread clocal
但这没有帮助。
使用
import serial
import sys
import time
ser = serial.Serial("/dev/ttyACM0",9600)
time.sleep(2)
ser.write(sys.argv[1])
ser.flush() # THIS here should put the data through,
# might block until your os decides to put the data through
ser.close()
您也可以考虑这个答案 提示