Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

E20-10 ERROR: ADC Thread: STOP_ADC() --> Bad

Вы не вошли.

 Поиск | Регистрация | Вход 

12.09.2019 17:15:35
#1

Участник
Здесь с 11.06.2019
Сообщений: 4

E20-10 ERROR: ADC Thread: STOP_ADC() --> Bad

Добрый  день!

1. Работаю с модулем Е20-10:

Module E20-10 (S/N 6T193838) is ready ... 
   Module Info:
     Module  Revision   is 'B'
     AVR Driver Version is 2.2 (Sep  7 2012)
     PLD    Version     is 2.00.06 (01.09.08)
  Adc parameters:
     ChannelsQuantity =  1
     AdcRate          = 10000.00 kHz
     InterKadrDelay   = 0.00010 ms
     KadrRate         = 10000.00 kHz ,

на основе адаптации примера ReadData для MicroSoft Visual C++ 6.0.



2. В ходе запуска консольной программы модуль периодические выдает ошибку:

ReleaseLInstance() --> OK
ADC Thread: STOP_ADC() --> Bad,

в следующих процедурах

2.1.
DWORD WINAPI ServiceReadThread(PVOID /*Context*/)
{
        ........
    // остановим работу АЦП и одновременно сбросим USB-канал чтения данных
    if(!pModule->STOP_ADC())
    {
        printf("ERROR: STOP_ADC\n");
        ReadThreadErrorNumber = 0x1;
        IsReadThreadComplete = true;
        return 0x0;
    }

2.2.
    // остановим работу АЦП
    // !!!ВАЖНО!!! Если необходима достоверная информация о целостности   .......

    if (!pModule->STOP_ADC())
    {
        printf("ERROR: STOP_ADC - 2\n");
        ReadThreadErrorNumber = 0x1;
    }


3. Как я понимаю это связано с низкоуровневым взаимодействием модуля с ОС Windows.
Есть ли какие нибудь методы "лечения", вставка программных задержек или производить опрос до успешного выполнения?


Алексей

12.09.2019 18:20:35
#2

Участник
Здесь с 11.06.2019
Сообщений: 4

Re: E20-10 ERROR: ADC Thread: STOP_ADC() --> Bad

... Вроде разобрался!

1. Не стоило комментировать блок
    // ---- цикл записи получаемых данных и ожидания окончания работы приложения ------------
    while (!IsReadThreadComplete)
    {
                 ......
    }
в теле функции main


2. Заменил код  примера ReadData
// -----------------------------------
    if (!pModule->STOP_ADC())
    {
            ReadThreadErrorNumber = 0x1;
            IsReadThreadComplete = true;
            return 0x0;
    }


на собственный код
// -----------------------
    while (!pModule->STOP_ADC())
    {
        Sleep(10);
        printf("ERROR: STOP_ADC - 1\n");
    }

Алексей

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск