【发布时间】:2016-05-30 18:21:28
【问题描述】:
我想要做的实际上是查询 Arduino 以获取数据。当我从 Python 向 Arduino 发送命令时,Arduino 将根据查询关键字的内容发回一些数据。我能够做到这一点,但速度非常低,我希望有一种更有效的方法来做到这一点,例如,每秒至少查询 100 次。任何想法?谢谢!
我使用的代码:
阿杜诺:
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 秒,它将不再起作用(无法接收数据,处于等待状态)。
【问题讨论】:
-
你提到睡眠时间少了就不行了。会发生什么?
-
睡眠时间越短,Python脚本就收不到数据了。