私は、Javaアプリケーションによって起動される単純なCファイルを持っています。Cファイルブロック..どのようにそれを知っている?
このスクリプトは、距離を検出するための物理センサーを管理します。すべてのクライアントについて、私は複数のセンサーを持っています。 Cファイルにアクセスするすべてのオブジェクトは、精巧なスレッドで実行されます。基本的に、起動時に、アプリケーションはセンサーごとに1つのスレッドを作成します。
私の問題は、時には(理由を知らない...)スレッドの1つ以上が動作を停止することが判明したことです。彼らはクラッシュしない、彼らは単に停止します。私はこの瞬間に、クライアントプロセスリストでCファイルが長い時間(通常は2秒間続く...)実行されていることを発見しました。だから問題はCの実行可能ファイルにあると思う。
この
は#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
int main(int argc, char **argv)
{
int TRIG = atoi(argv[1]);
int ECHO = atoi(argv[2]);
wiringPiSetup();
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
int a;
int totalDistance;
int steps = 10;
long travelTime;
for (a = 0; a < steps; a = a + 1){
digitalWrite(TRIG, LOW);
delay(100);
// Send trig pulse
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
// Wait for echo start
while (digitalRead(ECHO) == LOW);
// Wait for echo end
long startTime = micros();
while (digitalRead(ECHO) == HIGH) {
travelTime = micros() - startTime;
if (travelTime > 25000) {
travelTime = 25000;
break;
}
}
printf("tempo: %d", travelTime);
// Get distance in cm
int distance = travelTime/58;
totalDistance = totalDistance + distance;
delay(100);
}
int meanDistance = totalDistance/steps;
printf("%d", meanDistance);
return 0;
}
フォーマット、フォーマット、フォーマット... –
フォーマットはどのようにブロックの責任を負うことができますか?実際のスクリプトでは、Javaアプリケーションでインポートするため、 'printf("%d "、meanDistance);'(int)を出力します。 – besmart
コードはコードの読みやすさと潜在的に可能な人が読む意志がありますあなたを援助する。 –