Занесение данных в таблицу
-
- beginner
- Сообщения: 33
- Зарегистрирован: 27 фев 2008, 01:19
- Версия LabVIEW: 7.0 и 8.6
- Откуда: Россия/Клин
- Контактная информация:
Занесение данных в таблицу
Здравствуйте! Попытался создать модуль, который мог бы мне позволить заносить данные в таблицу с определенным интервалом времени. В процессе написания возникла проблема. Когда я пытаюсь занести показания в таблицу, у меня перестает выполняться передача данных с прибора, а в таблицу заносятся одни и те же показания, при отключении данного модуля прибор начинает снова передавать значения. Как нужно сделать, чтобы при занесении данных в таблицу, прибор не переставал пересылать пакеты???
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Занесение данных в таблицу.
Ну скажем так, скорее всего прибор так и посылает значения, просто ты их не считываешь, так как занят другим делом. А точнее занесением данных в таблицу.
Здесь нужно обязательно знать сколько времени занимает запись в таблицу одного пакета и сколько времени занимает чтение одного пакета с прибора. Если первое превышает второе, то задача тудновыполнима.
Обычно запись на винт происходит намного быстрее считывания данных. Здесь обязательно надо проверить!
Если же невыходит, то я предлагаю два варианта:
1) записывать не каждый пакет, а пропускать несколько и записывать например каждый десятый
2) разделить программу на два параллельных процесса (считывание и запись) и передавать данные с одного в другой через буфер. Но рано или поздно буфер переполнится если конечно прибор посылает данные без перерыва и запись длится дольше считывания.
Лучше всего приложить прибор или скрин отвечающий за запись на диск, я думаю проблема в другом.
Здесь нужно обязательно знать сколько времени занимает запись в таблицу одного пакета и сколько времени занимает чтение одного пакета с прибора. Если первое превышает второе, то задача тудновыполнима.
Обычно запись на винт происходит намного быстрее считывания данных. Здесь обязательно надо проверить!
Если же невыходит, то я предлагаю два варианта:
1) записывать не каждый пакет, а пропускать несколько и записывать например каждый десятый
2) разделить программу на два параллельных процесса (считывание и запись) и передавать данные с одного в другой через буфер. Но рано или поздно буфер переполнится если конечно прибор посылает данные без перерыва и запись длится дольше считывания.
Лучше всего приложить прибор или скрин отвечающий за запись на диск, я думаю проблема в другом.
-
Pavel Krivozubov
- professor
- Сообщения: 4421
- Зарегистрирован: 07 фев 2008, 16:39
- Награды: 3
- Версия LabVIEW: 7.0 - 2013
- Откуда: г. Электросталь
- Благодарил (а): 24 раза
- Поблагодарили: 9 раз
- Контактная информация:
Re: Занесение данных в таблицу.
Вообще тут действительно напрашиваются два параллельных цикла. А что бы буфер не переполнился (если запись длится дольше считывания конечно) то можно поставить флаг на окончание записи и передавать его в цикл считывания например с помощью глобальной переменной (самое простое), чтобы считывание начиналось только по этому флагу.eg писал(а):2) разделить программу на два параллельных процесса (считывание и запись) и передавать данные с одного в другой через буфер. Но рано или поздно буфер переполнится если конечно прибор посылает данные без перерыва и запись длится дольше считывания.
Правила форума
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Занесение данных в таблицу.
В твоём приборе очень трудно разобраться (получил по личке). Дело в том, что хотя прибор и разделён на части и в принципе понять можно что к чему, но если например хочешь его продибагить, то скорее всего не получится. Я понимаю конечно, что ты пока начинающий, но всё же постарайся разбивать программу на подприборы. Сам увидишь, тебе будет намного легче программировать. Надеюсь этот топик ты уже видел:
/viewtopic.php?f=60&t=80
Ну а что касается проблемы с остановкой второго цикла (работает параллельно), который вносит данные в таблицу, то сдесь надо как минимум поместить кнопку стоп во внутренний цикл. А лучше переделать его совсем. Тебе в принципе не нужен в нижнем цикле ещё один внутренний.
/viewtopic.php?f=60&t=80
Ну а что касается проблемы с остановкой второго цикла (работает параллельно), который вносит данные в таблицу, то сдесь надо как минимум поместить кнопку стоп во внутренний цикл. А лучше переделать его совсем. Тебе в принципе не нужен в нижнем цикле ещё один внутренний.
- Вложения
-
- StopWhile.PNG (5.4 КБ) 4675 просмотров
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 16 Ответы
- 625 Просмотры
-
Последнее сообщение Artem.spb
-
- 3 Ответы
- 875 Просмотры
-
Последнее сообщение IvanLis
-
- 13 Ответы
- 1226 Просмотры
-
Последнее сообщение Boxa
-
- 0 Ответы
- 503 Просмотры
-
Последнее сообщение Juri
-
- 3 Ответы
- 272 Просмотры
-
Последнее сообщение AndreyDmitriev