информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыПортрет посетителяВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Немного работавший с портами и проч... 26.11.01 22:49  Число просмотров: 1034
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
> Так вот чел поставил мне задачу: как используя
> многозадачность считать
> необходимо положим 10 секунд, а для считывания в одном
> положении установки
> числа фотонов - 7 секунд, т.е. данные хронически не
> успевают считываться...
> |------------- ВРЕМЯ ПОСЫЛКИ ДАННЫХ-------
> |------- ВРЕМЯ СЧИТЫВАНИЯ------

Простой пример. Пусть чтение из порта делается так:

@Начало цикла:
Ждем там чего -то из порта xxxx в каком-нить бите.
Дождались или тайм-аут.
Читаем из порта данные.
Сохраняем их.
repeat until (данные не собраны) goto @Начало цикла.

Спрашивается: все ли время проца тратиться на чтение
из порта ?
Ответ: естессно, нет. Чтение из портов - одна из самых тормознутых
вещей в компе ;)))
В это время прерывания там бегают (аж 18 раз / сек).
Винда там по таймеру куда-еще переключается.
Получается примерно вот что:

|------------------------------------------------
|-------------------------------------------
Цикл ожидания Считывание
<------------------------------- Около 10-1000 мкс --------------------------->

А теперь вспомни, скока проц успеет сделать тактов за
это безумно огромное для него время в ~500мкс ?!







<programming>
[C++] Кто здесь cильный в мультизадачности ? 26.11.01 20:56  
Автор: КоЛЯн Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Дело вот в чем. Собираю контроллер, ходящий по кругу и в каждом
дискретном положении считывающий число фотонов. Ну считывание
осуществляется быстрыми двоично-десятичными счетчиками, данные через
'спектрум' - Z180 - загоняются в ПК.

Так вот чел поставил мне задачу: как используя многозадачность считать
данные в том случае, если время считывания меньше времени измерения-
это по-видимому нужно понимать так: для заправки единичных данных в комп
необходимо положим 10 секунд, а для считывания в одном положении установки
числа фотонов - 7 секунд, т.е. данные хронически не успевают считываться...

И этот 'светоч премудрости' на полном серьезе грузит мне, что данные можно
обработать лишь при использовании одной только мультизадачности без каких
либо электронных ухищрений типа УВХ и т.д.

???
НУ НЕ ПОНИМАЮ Я, НА КОЙ Х Р Е Н МНЕ ЗДЕСЬ СДАЛАСЬ МУЛЬТИЗАДАЧНОСТЬ
И КАК ЕЕ ИСПОЛЬЗОВАТЬ
???

p.s.

------------ ВРЕМЯ ПОСЫЛКИ ДАННЫХ-------
|------- ВРЕМЯ СЧИТЫВАНИЯ------

[C++] Кто здесь cильный в мультизадачности ? 27.11.01 15:55  
Автор: IgorR Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Так вот чел поставил мне задачу: как используя
> многозадачность считать
> данные в том случае, если время считывания меньше времени
> измерения

На первый взгляд ты не правильно понял задачу. И путаешь всех с определениями "считывание", "измерение", "посылка". Надо бы определиться. А на счет мультизадачности это ИМХО бред. Если это СОМ то там же УАПП. Все что можно сделать это настроить его на максимальную скорость приема. Или я чего то не понимаю...
Ну перепутал малость - смысл люди все равно поняли...() 27.11.01 21:06  
Автор: КоЛЯн Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1)Максимальной скорости приема все равно похоже не хватвет...
2)Ну перепутал там два слова местами - обязательно мордой тыкать нада ?..
Ну перепутал малость - смысл люди все равно поняли...() 28.11.01 09:14  
Автор: IgorR Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> 1)Максимальной скорости приема все равно похоже не
> хватвет...

Ну тогда опаньки :)

> 2)Ну перепутал там два слова местами - обязательно мордой
> тыкать нада ?..

Извини, но я просто не понял что брать за истину, то ли "время считывания меньше времени измерения", то ли наоборот.

Да, кстати, а как насчет скорости приема от девайса к контроллеру и посылки от контроллера к ПК?

Что говорит 'светоч премудрости' ?
[C++] Два вопроса 27.11.01 10:53  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
> необходимо положим 10 секунд, а для считывания в одном
> положении установки
> числа фотонов - 7 секунд, т.е. данные хронически не
> успевают считываться...
> |------------- ВРЕМЯ ПОСЫЛКИ ДАННЫХ-------
> |------- ВРЕМЯ СЧИТЫВАНИЯ------

1. Если время считывания меньше (!), то наоборот все будет успевать считываться.
2. Точно нет путаницы со считыванием и обработкой ?
Что-то мне кажется, что комп не может ТАК долго писать из порта в память, что не успеет поглотить все приходящие данные.

Если есть путаница по 2му пункту, то один срид будет писать в буфер, а другой из него читать и обрабатывать.
Если же он реально неуспевает ЧИТАТЬ из порта и ПИСАТЬ в память (без обработки), то никакая мультизадачность не поможет (но такая ситуация, имо, из разряда фантастики).
Немного работавший с портами и проч... 26.11.01 22:49  
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
> Так вот чел поставил мне задачу: как используя
> многозадачность считать
> необходимо положим 10 секунд, а для считывания в одном
> положении установки
> числа фотонов - 7 секунд, т.е. данные хронически не
> успевают считываться...
> |------------- ВРЕМЯ ПОСЫЛКИ ДАННЫХ-------
> |------- ВРЕМЯ СЧИТЫВАНИЯ------

Простой пример. Пусть чтение из порта делается так:

@Начало цикла:
Ждем там чего -то из порта xxxx в каком-нить бите.
Дождались или тайм-аут.
Читаем из порта данные.
Сохраняем их.
repeat until (данные не собраны) goto @Начало цикла.

Спрашивается: все ли время проца тратиться на чтение
из порта ?
Ответ: естессно, нет. Чтение из портов - одна из самых тормознутых
вещей в компе ;)))
В это время прерывания там бегают (аж 18 раз / сек).
Винда там по таймеру куда-еще переключается.
Получается примерно вот что:

|------------------------------------------------
|-------------------------------------------
Цикл ожидания Считывание
<------------------------------- Около 10-1000 мкс --------------------------->

А теперь вспомни, скока проц успеет сделать тактов за
это безумно огромное для него время в ~500мкс ?!







[C++] Кто здесь cильный в мультизадачности ? 26.11.01 21:19  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>

> Так вот чел поставил мне задачу: как используя
> многозадачность считать
> данные в том случае, если время считывания меньше времени
> измерения-
> это по-видимому нужно понимать так: для заправки единичных
> данных в комп
> необходимо положим 10 секунд, а для считывания в одном
> положении установки
> числа фотонов - 7 секунд, т.е. данные хронически не
> успевают считываться...

Odin iz vozmozhnyx reshenij, ili prosto variantov :
zapusti paru potokov kotorye budut schityvat' dannye.
dopustim :
1) pomimo glavnogo potoka, ty sozdal 2 potoka thread_1 & thread_2
2) U tebya est 1 static DataBuffer peremennaya (ili chto to v etom rode) - xranilishe dannyx.
3) I-yj potok schityvaet dannye i tratit na eto 7 sec.
4) kak tol'ko I-yj potok schital dannye, II-oj potok nachinaet schityvat' ostatok dannyx
5) dannye iz Iogo potoka zapisyvayutsya v DataBuffer
6) Dannye iz vtorogo potok a zapisyvajutsya v DataBuffer.
7) povotrit' vse s punkta (3).

Esli ty znaesh' nachalo i konec dannyx postupajush' s vashego mudrenogo ustrojstva, to
1) Dostatochno sozdat' odin potok
2) on postojanno sidit na "listen", t.e. postoyanno vrashaetsya v cikle
3) kak tol'ko dannye postupili, on schityvaet ego i zapisyvaet, pri etom on znaet nachalo i konec dannyx, takim obrazom ty poluchaesh' 1 DataBuffer dlya kazhdogo postuplenia dannyx.

Odnim slovom, esli konechno ya pravil'no ponyal zadachu, tebe nado razobrat'sya s vozmozhnostyami synchronizaciiPORTAcherez kotoryj dannye zagonyajutsya v comp. Navernyaka driver porta obespechivaet Buffering, v takom sluchaet tebe nado dumat' tol'ko o tom kak synchronizirovat' potok. Tak chto tut skoree vsego ne mulitzadachnost', a multipotochnost' :-)))

ne dumaju chto eto uzh ochen' cherez chur slozhno, prosto nado nemnogo pofantazirovat' i poeksperementirovat' :-)))


udachi.
[C++] Спасибо друзья! 26.11.01 23:13  
Автор: КоЛЯн Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Спасибо мужики!

По моему, kabanchik ближе подошел к сути с многопоточностью, я и сам , честно говоря , склонялся к такому же результату - посмотрим, куда меня с таким объяснением пошлют...

Спасибо и "последнему из могикан" - твое решение на сто процентов совпадает с моим первоначальным, которое я через 5 минут после вникания в суть показал 'шефу'- ну тот меня и пошел гнать (вот зараза) по много***чности- не нравится ентому субъекту видите-ли паскаль+асм - давай ему ооп. Он бы меня еще за яву вебстарт посадил - у нас сейчас последний писк - работы предлагают от 400 у.е. до непреличия ...
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach