【发布时间】:2017-01-23 16:55:45
【问题描述】:
我在 Raspberry Pi 上的 C++ 应用程序出现问题。此脚本应在终止前打印一次以厘米为单位的距离。但它还应该检查超声波传感器是否连接,如果没有,脚本应该中断。我怎么能那样做?有没有办法为 getCM() 方法设置超时或者有其他想法来解决这个问题? 这是代码:
...
void setup() {
wiringPiSetup();
pinMode(TRIG_R, OUTPUT);
pinMode(ECHO_R, INPUT);
digitalWrite(TRIG_F, LOW);
delay(30);
}
int getCM() {
digitalWrite(TRIG_R, HIGH);
delayMicroseconds(20);
digitalWrite(TRIG_R, LOW);
//Wait for echo start
while(digitalRead(ECHO_R) == LOW);
//Wait for echo end
long startTime = micros();
while(digitalRead(ECHO_R) == HIGH);
long travelTime = micros() - startTime;
int distance = travelTime / 58;
return distance;
}
int main(void) {
setup();
printf("Distance: %dcm\n", getCM());
return 0;
}
提前致谢!
蒂姆
【问题讨论】:
-
我希望人们停止将 C++ 程序称为“脚本”。
标签: c++ raspberry-pi timeout