Есть ли способ ждать без «ввода ключа»? и приостановить программу?

Я новичок в программировании. Я хочу сделать программу обработки изображений. Моя проблема в том, что я хочу, чтобы моя программа отправляла мне текстовое сообщение (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")и т. д., это не работает.

Я использую Visual Studio 2010 в Windows.

1

Решение

Вы можете попробовать что-то вроде

#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;
...
}

Функция clock () в time.h возвращает количество тактов с момента запуска программы. Тик такта не обязательно равен миллисекунде, поэтому при делении на макрос-константу CLOCKS_PER_SEC, которая задает соотношение между тактом и секундой, вы получите общее количество прошедших секунд.

Вы можете получить больше информации о clock () здесь: http://www.cplusplus.com/reference/clibrary/ctime/clock/

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector