Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Опрос ведется в специально организованном для этоого отдельном потоке. Периодичность опроса формируется чтением системного времени и добавлением заданного интервала.

Отправлено Леонид Иванович (87.252.227.56) 13 декабря 2010, г. 14:01
В ответ на: А вот нефиг по таймеру порты опрашивать. отправлено Trashy 13 декабря 2010, г. 13:21


//----------------------- Основной метод потока: ----------------------------

void __fastcall TSenThread::Execute()
{
while(!Terminated)
{
while(!Terminated && FStarted && SampleIndex < FData->RowCount)
{
try
{
int a = FData->Rows[SampleIndex]->Box + 1;
int p = FData->Rows[SampleIndex]->Pod + 1;
MainForm->WakePort->GetData(a, p, FBuffer);
}
catch(EInOutError &E)
{
for(int i = 0; i < SENCOUNT; i++)
FBuffer[i] = NOT_RESPOND;
}

FData->Lock();
try
{
for(int i = 0; i < SENCOUNT; i++)
FData->Rows[SampleIndex]->Data[i] = FBuffer[i];
}
__finally { FData->Unlock(); }
Synchronize(UpdateTable);
SampleIndex++;
Sleep(1);
}
if(FStarted && FNextSampleTime <= Now())
{
TDateTime NowTime = Now();
if(NowTime - FNextSampleTime < FPeriod)
FSampleTime = FNextSampleTime;
else FSampleTime = NowTime;
SampleIndex = 0;
FNextSampleTime = FSampleTime + FPeriod;
FData->Time = FSampleTime;
}
Sleep(1);
}
}


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
отымите от 2 единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru