1

私はプログラミングが初めてです。画像処理プログラムを作りたいです。私の問題は、カメラの前を何かが通過した場合に、プログラムにテキストメッセージ (AT COMMAND) を送信してもらいたいことです。コードは次のとおりです。

for( ; contour != 0; contour = contour->h_next )
{
    Sleep(10000);
    char buf[20];
    DWORD read = 0;
    DWORD CommModemStatus;
    DWORD write=1; // Number of bytes to write to serial port
    buf[0] = 72; // Decimal value to write to serial port
    char valor4[26] = ("at+cmgf=1\r");
    BOOL bWriteRC4;
           static DWORD iBytesWritten4;
             bWriteRC4 = WriteFile(hPort, &valor4, 100, &iBytesWritten4,NULL);
char valor[26] = ("at+cmgs=\"+62xxxxxxxxxx\"\r");
            BOOL bWriteRC;
           static DWORD iBytesWritten;
             bWriteRC = WriteFile(hPort, &valor, 100, &iBytesWritten,NULL);
char valor2[17] = ("SOMEONE HAS ENTERED YOU ROOM!!!");
            BOOL bWriteRC2;
           static DWORD iBytesWritten2;
             bWriteRC2 = WriteFile(hPort, &valor2, 100, &iBytesWritten2,NULL);
char valor3 = (char)0x1A;
            BOOL bWriteRC3;
           static DWORD iBytesWritten3;
                 bWriteRC3 = WriteFile(hPort, &valor3, 100, &iBytesWritten3,NULL);
}

何かがカメラの前を通過し、その動きがキャプチャされた場合、それは平均輪郭 != 0 なので、次のようになると思います。

for (contour != 0)
//sending text message....

しかし、明らかに電源を入れると、カメラは光の強さに適応するので、Sleep(10000);テキストが送信されるまでカメラを 10 秒待つつもりでした。実際、カメラ (およびプログラムの残りの部分) がオンになるまで 10 秒間待機するだけでした。

プログラムを一時停止せずに待つ別の方法はありますか? 私はすでにそれをGoogleにしていますsystem("pause")。などを試してみてください。うまくいきません。

WindowsでVisual Studio 2010を使用しています。

4

1 に答える 1

0

あなたは次のようなことを試すことができます

#include <time.h>
...
for ( ; contour != 0; contour = contour->h_next) {
    //skip to the next iteration if the program started less than 10 seconds ago
    if (((float)clock())/CLOCKS_PER_SEC) < 10.0) continue;
    ...
}

time.hのclock()関数は、プログラムが開始されてからのクロックティック数を返します。クロックティックは必ずしもミリ秒ではないため、クロックティックと秒の関係を指定するマクロ定数式CLOCKS_PER_SECで除算すると、経過した合計秒数が得られます。

clock()の詳細については、http ://www.cplusplus.com/reference/clibrary/ctime/clock/を参照してください。

于 2012-11-21T20:27:41.607 に答える