我想要做的是实际查询Arduino以获取数据。当我从Python向Arduino发送命令时,Arduino将根据查询关键字的内容发回一些数据。我能够以非常低的速度执行此操作,我希望能够以更有效的方式执行此操作,例如,每秒查询至少100次。任何的想法?谢谢!
我使用的代码:
Arduino的:
int temp=1;
char s[2];
int speedIn=0;
void setup() {
Serial.begin(115200);
}
void loop() {
if(Serial.available()>0){
Serial.readBytes(s,1);
speedIn=int(s[0]);
if(speedIn==49){
Serial.println(">Data1Send<");
speedIn=0;
}
else if(speedIn==50){
Serial.print(">");
Serial.print(temp);
Serial.println("<");
speedIn=0;
}
else{
Serial.println(">Wrong Data<");
speedIn=0;
}
}
if(temp<300){
temp=temp+1;
}
//delay(100);
}
的Python:
import serial
import time
if __name__=="__main__":
sc = serial.Serial('/dev/tty.usbmodem1421',timeout=None,baudrate=115200)
sc.flush()
while True:
#s=raw_input()
s=str(50)
if len(s) >0:
if s.isdigit():
sc.write(chr(int(s)))
time.sleep(1.0)
if sc.inWaiting()>0:
print(sc.read(sc.inWaiting()))
如果我将Python中的时间延迟从1.0秒更改为0.1秒,它将不再起作用(无法接收数据且只处于等待状态)。
答案 0 :(得分:0)
看起来你的python代码就是这样:
你提到如果睡眠时间太短,它就不起作用。我想知道以下情况是否会发生。想象一下,没有睡眠期。 python代码将立即检查回复,这可能不存在,因为arduino没有时间回复。在这种情况下,它会立即尝试发送另一个命令。这可能会反复发生 - python代码可能会使arduino无法跟上的请求泛滥成灾。你可以使用休眠期防止这种情况发生,但睡眠时间可能比arduino实际需要的时间长,这会降低你的数据速率。
如果是这种情况,可能会在python代码中执行此操作: