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 秒才能打开。

有什么不同的方法可以在不暂停程序的情况下等待吗?我已经谷歌了,尝试类似的东西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 回答