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


L780M ServiceThread не работает

Вы не вошли.

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

Дмитрий
18.04.2011 23:35:48
#1

Гость

L780M ServiceThread не работает

Взял тестовый пример L7xx.tst и практически не меняя (убрал варианты для различных плат) пытался создать рабочую версию (Ваш не пашет, я так понял из-за настроек путей библиотек и драйверов что ли). Обнаружил, что ни разу не запускается потоковая функция ServiceThread. Дабы быть уверенным вставлял туда изменение фиктивных переменных, но они не менялись. Пытался по совету одной из веток конференции сделать глобальными переменными fl1,fl2 - не помогло. Игрался с tm, доводил до миллиона - эффекта 0. Цикл крутится впустую, данные нулевые. Запускаю Лграф - сигнал снимается нормально.Сигнал снимаю в общем режиме,усиление 1, канал один,код назначаю соответственно 0х20. В чём может быть проблема?

19.04.2011 09:41:54
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L780M ServiceThread не работает

А просто собратьсовсем не меняя? Кроме треда там счетчик собираемых данных меняется в основном цикле - как он себя ведет?

Дмитрий
19.04.2011 09:52:15
#3

Гость

Re: L780M ServiceThread не работает

Просто собрать попробую, но не вижу смысла - плата загружается, параметры выводятся, цифровые линии пашут...
Счетчик собираемых данных это *synс имеется в виду?...Он 0 всё время выдаёт...параметр complete зависает на значении 0, т.к. в треде он должен меняться на 1, но тред ни разу не прогоняется...

Дмитрий
19.04.2011 10:02:20
#4

Гость

Re: L780M ServiceThread не работает

Вот, как и сказал, картина та же самая и без изменений в коде...СервисТред не прогоняется, *sync выдает 0...

19.04.2011 11:31:44
#5

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L780M ServiceThread не работает

если sync 0 то так и должно быть. Может биос неверный загружаете? ReadPlataDescr вызыаете? Или синхронизацию какую выставили?

Дмитрий
19.04.2011 14:40:02
#6

Гость

Re: L780M ServiceThread не работает

adcPar.t1.s_Type = L_ADC_PARAM;
         adcPar.t1.AutoInit = 1;
         adcPar.t1.dRate = 100.0;
         adcPar.t1.dKadr = 0,0067;
         adcPar.t1.dScale = 0;
         adcPar.t1.SynchroType = 3; //3
         adcPar.t1.SynchroSensitivity = 0;
         adcPar.t1.SynchroMode = 0;
         adcPar.t1.AdChannel = 0;
         adcPar.t1.AdPorog = 0;
         adcPar.t1.NCh = 1;
         adcPar.t1.Chn[0] = 0x1;
         adcPar.t1.FIFO = 1024;
         adcPar.t1.IrqStep = 1024;
         adcPar.t1.Pages = 128;

настройки АЦП,
биос точно верный, иначе не работали бы цифровые линии или выпала бы ошибка (я всё поставил на проверку удачного выполнения процедур)
*sync судя по его смыслу и правда наверное 0 должен быть, но почему тогда СервисТред не прогоняется ни разу?

#pragma optimize ("", off)
ULONG WINAPI ServiceThread(PVOID /*Context*/)
{USHORT *tmp, *tmp1;

   fl1 = (*sync<=halfbuffer)? 0:1;
   fl2 = (*sync<=halfbuffer)? 0:1;
  for(int i=0;i<multi;i++)
{
while(fl2==fl1) fl2=(*sync<=halfbuffer)? 0:1;
tmp=fdata+(halfbuffer*i);
tmp1=data+(halfbuffer*fl1);
memcpy(tmp,tmp1,halfbuffer*sizeof(ULONG));
j++;
fl1=(*sync<=halfbuffer)? 0:1;
Sleep(0);
}
   complete=1;
   return 0;
}
#pragma optimize ("", on)

параметр j (сам ввёл) не меняется, то есть тело функции не работает...ну и в файл естесна ничего не пишется...

ReadPlataDescr вызываю,да

Дмитрий
19.04.2011 14:59:09
#7

Гость

Re: L780M ServiceThread не работает

Да, и еще вопрос - в файл .dat в какой кодировке всё сохранится? Просматриваю листером, ничего не понимаю, что туда пишется..

19.04.2011 15:12:23
#8

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 674

Re: L780M ServiceThread не работает

dat файл - согласно описанию это бинарный файл (не текстовый), в котором каждые два байта содержат один отсчет АЦП.

Дмитрий
19.04.2011 17:06:22
#9

Гость

Re: L780M ServiceThread не работает

Ок, открыл в листере в шестнадцатиричном виде....а как оттудова инфу вытащить?...

19.04.2011 17:10:54
#10

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 674

Re: L780M ServiceThread не работает

Для чтения бинарных файлов надо писать программу. Dat файлы также можно открыть в Matlab-е или в Origin. Если же надо перетащить данные в Excel, то проще всего воспользоваться экспортом в текстовый формат в ЛГраф2.

Дмитрий
19.04.2011 17:18:19
#11

Гость

Re: L780M ServiceThread не работает

в Origin открываются только ASCII .dat, какая кодировка в конечном итоге используется у Вас в примере никак не разберу, перебрал всё что есть в листере

19.04.2011 17:32:31
#12

Сотрудник "Л Кард"
Здесь с 23.04.2014
Сообщений: 237

Re: L780M ServiceThread не работает

Экспорт dat-файлов в Origin подробно (аж с картинками!) описан в хелпе LGraph2 в разделе 5.4.5. стр. 77

19.04.2011 17:33:31
#13

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 674

Re: L780M ServiceThread не работает

Посмотрите раздел 5.4.5 "Импорт данных в Origin" описания http://www.lcard.ru/download/lgraph2_help.pdf

Дмитрий
19.04.2011 18:10:32
#14

Гость

Re: L780M ServiceThread не работает

Так, большое спасибо, с этим разобрался. Теперь убедился, что считанных данных 0. Почему-то при окончании цикла сбора (я его конечным сделал) вылетает ошибка, причём указывает на строчку в процедуре СервисТред...Ничего не понимаю...Текст ошибки:
Unhandled exception at 0x00411523 in Oscil.exe: 0xC0000005: Access violation reading location 0x00a10000
Ощущение, что программа некорректно закрывается, только где не пойму? Если просто закрывать окно консоли во время работы закрытие идёт нормально.

Дмитрий
19.04.2011 19:13:24
#15

Гость

Re: L780M ServiceThread не работает

Всё, разобрался, всем спасибо. Вылетать с ошибкой продолжает, но главное данные собрать получилось!Оказалось глупейшую ошибку допустил - удалил при заполнении настроек АЦП строчку с настройками прерывания...