我有以下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发送命令。 我做错了什么?
主机操作系统:Raspian
PS:我已经尝试用这个来解决它了:stty -F /dev/ttyACM0 9600 cs8 cread clocal
但这没有帮助。
答案 0 :(得分:0)
使用
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()
您也可以将此答案https://stackoverflow.com/a/40438103/7505395提示纳入考虑范围