Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Тема закрыта
|
||||
|
В продолжение темы E14-140 - Проблема. Вопрос к прЗдравствййте всем снова! Это а продолжение темы "E14-140 - Проблема. Вопрос к производителям!" Вот нашел у себя в программе ЧТО грузит ОС и вызывает потерю данных с перемешиванием каналов. Это оказался вызов
Это вызывается из потока, котоый опрашивает АЦП (после получения порции данных).
|
|||
|
||||
|
Re: В продолжение темы E14-140 - Проблема. Вопрос к пр... такой
Но при большом размере буфера и высокой частоте АЦП иногда TChart не успевает перерисоваться вовремя и возникаяет коллизия доступа к буферу - поток начинает его обновлять а TChart еще читает в это время. Ну правильно, синхронизации то нет никакой.
нужно чтобы алгоритм был примерно такой:
В программе два буфера и 2 асинхронных запроса в очереди заполняют их поочередно, практически как в демонстрационном примере на Дельфе...
|
|||
|
||||
|
Re: В продолжение темы E14-140 - Проблема. Вопрос к прбез синхронизации все работает, как ни странно. очень редко возникает ошибка "List Ondex out bounds()" от Tchart осциллографа. скорее всего из-за того, что происходит повторный вход а процедуру рисования в то время как она еще не отработала.
|
|||
|
||||
|
Re: В продолжение темы E14-140 - Проблема. Вопрос к приз главного буфера делайте копии данных для локальных задач типа прорисовки. Копируется все сейчас очень быстро. А так почитайте http://www.frolov-lib.ru/ 26 и 27 книжки. |
|||
|
||||
|
Re: В продолжение темы E14-140 - Проблема. Вопрос к пр>А так почитайте http://www.frolov-lib.ru/ 26 и >27 книжки. Спасибо за ссылку на очень полезные книги. Сделал так. Объявил флаг занятости - глобальную переменную boolean. если флаг False поток выставляет в TRUE и запускает рисование. В конце рисования процедура выставляет флаг занятости в FALSE, на всяк случай через таймаут в 55 мс - через таймер.
|
|||
|
||||
|
Re: В продолжение темы E14-140 - Проблема. Вопрос к прЯ надеюсь Вы понимаете что это не атомарная операция..... |
|||
|
||||
|
Re: В продолжение темы E14-140 - Проблема. Вопрос к прВот все и выяснилось... Конечно, поток реального времени не должен ждать GUI. Согласен с Poul - для задач типа отрисовки лучше сделать собственный буфер (thread-safe) и копировать в него данные. Если нет места - выбросить блок (можно выставить флажок предупреждения).
|
|||
|
||||
|
Re: В продолжение темы E14-140 - Проблема. Вопрос к прну вот, все отлично работает наконец-то. Никаких ошибок. Даже на маленьком ноуте ASUS EEE-pc 701 с дохленьким процессором. При этом запись данных ведется на воткнутую в УСБ флешку. При этом у него загрух процессора около 7 процентов. Вот уже вторые сутки пишет без ошибок... |
|||
|
||||
|
Re: В продолжение темы E14-140 - Проблема. Вопрос к прРады за Вас. Успехов! |
Страницы 1
Тема закрыта