|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.11.2015, 10:19 | #1 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
Как сделать программу, если нужно выдавать данные четко по времени
Нужна программа, работающая как бы в реальном времени. Мне нужно преобразовывать текстовую информацию в некоторый мой сигнал и записывать в текстовый файл так, чтобы в итоге в текстовом файле каждые новые 1024 отсчета появлялись четко через каждые 50 мс.
50 мс - я так понял если я вывожу графики - они должны просто летать, то есть я даже не должен замечать отдельных функций, функция просто должна болтыхаться, как анимация. А у меня задержка между сменами графиков приличная. Вот тут я и понял, что у меня сейчас только процесс обработки занимает порядка 100 мс и даже больше. А мне эти данные нужны хотя бы раз в 50мс. Что можно сделать? По идее, подобные системы давно делаются другими разработчиками, ничего не лагает. Просто для меня это первая отладка приложения на полной скорости. И надо понять, как это сделать. Можно и оптимизировать код, ну жду Ваших предложений! Представьте себе систему передачи информации. Программно-определяемая радиосистема, если слышали. Вот мне желательно бы в нее данные подгружать с компьютера. Можно просто больше выборок за раз генерировать. В общем, мне нужен Ваш опыт! |
13.11.2015, 10:27 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
1)можно разделять на потоки, один обработает данные, без всякой графики, и передаст их набором другому потоку, который уже все выведет.
2)для справки, Windows не является системой реального времени. и не выдаст вам точности ровно 50мс. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
13.11.2015, 11:44 | #4 | |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
Цитата:
Код:
|
|
13.11.2015, 11:54 | #5 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну дык многопоточность не простая тема, в двух словах не рассказать, берите гугл и изучайте.
Простой пример выглядит как-то примерно так http://programmersforum.ru/showthrea...38#post1535544 или так http://programmersforum.ru/showthread.php?t=268067 (во втором примере вместо .Send для этого случая вероятно больше подходит .Post, чтоб не тормозить второй поток)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
13.11.2015, 12:08 | #6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
|
13.11.2015, 12:21 | #7 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
Ок, хочу спросить конкретно тогда по одной из Ваших ссылок, потому что сколько пялюсь в код, до меня пока не доходит. Я написал в комментах все, что понял. Можно попроще? Как мне конкретно сделать, чтобы в 1 потоке была обработка данных, а в другом вывод на графики. Допустим, обработка данных - data = data_proc(inputs), a вывод на графики: PlotAndSave(data). тогда смотрите, я хоть что-то понял в коде?
Код:
Последний раз редактировалось Krasi; 13.11.2015 в 12:28. |
13.11.2015, 12:59 | #8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну дык надо не пялиться, а гуглить материал на эту тему, читать документацию. Под вторым примером даже было немного ссылок.
startNumber и т.п. это просто входные данные потока в том примере (разделить диапазон чисел от 0 до 4000 на 4 потока и в каждом потоке генерировать хеш для каждого числа от startNumber до endNumber и выводить число; генерации хеша там нет, просто сразу вывод). Вместо того цикла for тут видимо нужен бесконечный цикл типа такого: Код:
Progress<T> это появившаяся в .NET 4.5 более удобная обертка над SynchronizationContext (SynchronizationContext используется во втором примере, в старых примерах обычно используется он или myWinFormsControl.Invoke/BeginInvoke).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 13.11.2015 в 14:56. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как сделать ссылку если данные загружаются с баззы даных | влдаислав | PHP | 3 | 28.01.2015 05:46 |
Всем доброго времени суток!Если можете помогите пожалуйста переделать программу под сдвиг единицы по синусойде | Ddradok | Помощь студентам | 0 | 14.12.2014 21:13 |
Помогите!!!!!!!!))) нужно сделать в кратчайшие сроки а времени у меня не очень!)) | Illya | Помощь студентам | 0 | 05.11.2013 21:12 |
Как извлечь данные в таблицу, если нужно посылать сразу множество запросов? | Novichok PHP | PHP | 1 | 28.03.2011 19:28 |
Мне нужно выбрать данные из первого запроса, если он вернул хоть одно число=числу из | nata | Общие вопросы Delphi | 8 | 05.06.2007 23:57 |