Итак прошу собраться всех знающихся на этих двух протокалах:
Сначала пару вопросов:
1. Кто сказал что скорость работы фсупика с симом более 16 мс? Где это написано/проверено/доказано?
2. Тот же вопрос но касающийся ИОКАРДсов, где указана скорость обмена данными с иосервером и его с симом?…
3. Кто из разработчиков роутеров(или просто юзеров) какой скорости вообще добивался в работе с этими протоколами?
Я не хочу создавать тему что круче из них, но как я понимаю они используют одну и ту же библиотеку (указанную в СДК), но каждый работает по-своему, хотелось бы окончательно найти ответы о подводных камнях и о слабых сторонах того и другого.

Скорость записи или скорость чтения?
Скорость чтения можно сделать очень высокой, у меня получается. А вот скорость записи — это полная жопа.
Сама функция записи работает быстро, но, вот если для чтения, я могу в цикле прочитать кучу параметров и сделать FSUIPC_Process после цикла, то для записи — FSUIPC_Process нужно делать после каждой FSUIPC_Write, вот тут и начинаются тормоза. Добиться скорости, больше чем 10 раз в секунду, я так и не смог
По второму вопросу ничего не знаю.
Круче всего работать напрямую с памятью сима
FSUIPC ее не использует, по крайней мере для 9ки.
Скорость записи или скорость чтения?
Скорость чтения можно сделать очень высокой, у меня получается. А вот скорость записи — это полная жопа.
Сама функция записи работает быстро, но, вот если для чтения, я могу в цикле прочитать кучу параметров и сделать FSUIPC_Process после цикла, то для записи — FSUIPC_Process нужно делать после каждой FSUIPC_Write, вот тут и начинаются тормоза.
А Вы попробуйте так-же как с чтением ) Поназаписывать а потом процесс(). У меня работает =) 15 мс или иногда даже меньше) Желательно конечно из отдельного потока.. =)
А как при этом быть с потокобезопасностью? Сим же тоже по-идее хочет иметь монопольный доступ к своим переменным? =) Как оно вообще реализуется?
Скорость записи или скорость чтения?
Скорость чтения можно сделать очень высокой, у меня получается. А вот скорость записи — это полная жопа.
Сама функция записи работает быстро, но, вот если для чтения, я могу в цикле прочитать кучу параметров и сделать FSUIPC_Process после цикла, то для записи — FSUIPC_Process нужно делать после каждой FSUIPC_Write, вот тут и начинаются тормоза.
А Вы попробуйте так-же как с чтением ) Поназаписывать а потом процесс(). У меня работает =) 15 мс или иногда даже меньше) Желательно конечно из отдельного потока.. =)
А как при этом быть с потокобезопасностью? Сим же тоже по-идее хочет иметь монопольный доступ к своим переменным? =) Как оно вообще реализуется?
можно простой пример?
Кусок кода, рабочий, чтоб, предположим, менял по кругу частоту ком ?
Я думаете не пробовал так?
Не работает, у меня.
реализуется, очень просто, через вин АПИ — он сам обо все (почти) заботится. смотрите сдк на предмер readprocesmemory и writeprocesmemory
Тока к переменным сима это отношение не имеет. Это имеет отношение к памяти сима.
Сообщение отредактировал ryko_m — 15.02.2009 23:54
По теме:
Нигде в документации к IOCP-серверу я не встречал данных о скорсти чтения/записи в Сим. По опыту практического использования могу сказать следующее:
SIOC через IOCP-сервер способен считывать каждое пятое значение симовского таймера, меняющего своё значение 100 раз в секунду. Итого на чтение имеем частоту обновления 20ms.
На запись экспериментов и замеров никогда не делал, поскольку нужды не возникало — всё просто (и на глаз мгновенно) отрабатывало…
С FSUIPC всё было значительно хуже…
SIOC через IOCP-сервер способен считывать каждое пятое значение симовского таймера, меняющего своё значение 100 раз в секунду. Итого на чтение имеем частоту обновления 20ms.
На запись экспериментов и замеров никогда не делал, поскольку нужды не возникало — всё просто (и на глаз мгновенно) отрабатывало…
С FSUIPC всё было значительно хуже…
Только что специально проверил еще одним способом — 14 мс =) С мсфс 2004.
С фсх точно не мерял, но на глаз еще быстрее)
ту рико_м:
Пример привести не смогу т.к. оч много кода и выдрать работающий кусок сложно)
Но все именно так как я написал) Просто чтение-запись, все что нужно, в конце всего этого ПРОЕЦСС();
Писано на сишарп, использовал обертку для фсюписи длл отсюда:
http://forums.simflight.com/viewtopic.php?…d9837e1550b5709
По теме:
Нигде в документации к IOCP-серверу я не встречал данных о скорсти чтения/записи в Сим. По опыту практического использования могу сказать следующее:
SIOC через IOCP-сервер способен считывать каждое пятое значение симовского таймера, меняющего своё значение 100 раз в секунду. Итого на чтение имеем частоту обновления 20ms.
На запись экспериментов и замеров никогда не делал, поскольку нужды не возникало — всё просто (и на глаз мгновенно) отрабатывало…
С FSUIPC всё было значительно хуже…
Яков, 20 мс для иосервера — это конечно уже много, к сожалению…
На ФСХ через фсупик получается 3-10 мс (странно не правда ли?). А «на глаз» оно бывает обманчиво ))
Кстати, сравнили работу м-джоя и АЦП с фсупиком — так у м-джоя можно войти в противофазу работы железного и ВК штурвала если им очень быстро дергать, у нас я такого добиться не смог! Вы ставили такие эксперементы с иокардсами? — это возможно один из визуальных тестов на скорость.
1/5 секунды равна 200 ms, а не 20 (потому как 1 сек = 1000 ms, а один цикл таймера у Вас занимает 10 ms).
1/5 секунды равна 200 ms, а не 20 (потому как 1 сек = 1000 ms, а один цикл таймера у Вас занимает 10 ms).
Да я вообще вчера какую-то ерунду написал — поздно уже было
Специальных замеров скорости работы IOCP-сервера я никогда не проводил, поскольку с момента отказа от FSUIPC все проблемы связанные со скоростью работы просто ушли. Что либо замерять или оптимизировать не было никакой нужды.
Увидев вопрос Жени, я просто решил посмотреть с какой частотой приходит в Сиок значение симовской переменной ELAPSED_SECONDS. Смотрел по логу, и увидел, что значения приходят с дикретностью 0.05 сек, т.е. 50мс или 20 раз в секунду. У меня есть подозрение, что с такой дискретностью меняется значение ELAPSED_SECONDS в самом симе, а следовательно судить о скорости IOCP-сервера по этому эксперименту нельзя.
—
Вобщем, чтоб замерять надо IOCP-клиента писать.
Блин, опять ерунду сказал (что-то не мой день сегодня): максимальная частота таймера в SIOC — 0.1с, то есть попробовал я его на частоте 100мс
Но повторюсь: нигде, никогда и не в каком виде скорость IOCP-сервера не заставляла о ней задумываться.
Сообщение отредактировал 601 — 16.02.2009 21:49
—
Вобщем, чтоб замерять надо IOCP-клиента писать.
Блин, опять ерунду сказал (что-то не мой день сегодня): максимальная частота таймера в SIOC — 0.1с, то есть попробовал я его на частоте 100мс
Но повторюсь: нигде, никогда и не в каком виде скорость IOCP-сервера не заставляла о ней задумываться.
У вас есть в кокпите индикаторы, управляемые энкодерами?
Если нет, то проблема скорости станет, когда энкодеры подключать начнете.
01 сек это ОЧЕНЬ МНОГО.
Сообщение отредактировал ryko_m — 16.02.2009 21:59
Нее…. что-то мне не верится в 0.1С, ну не могли они придумать такой тормоз!
Яков, может сам СИОК отрабатывает скрипт с такой частотой? Но даже для скрипта — это очень мало.
Насчёт энкодеров — скажите, уже ведь довольно много построено кокпитов на иокардсах, неужели там везде проблемы со скоростью?
Если нет, то проблема скорости станет, когда энкодеры подключать начнете.
01 сек это ОЧЕНЬ МНОГО.
Проблема не встанет — и энкодеры и индикаторы отрабатывают идеально. Максим, вы не поняли, о каком таймере я говорил: 0.1 — это самый быстрый таймер, который можно самоcтоятельно создать в SIOC с целью написания дополнительной логики. К работе с энкодерами и индикаторами эти таймеры не имеют никакого отношения.
Нее…. что-то мне не верится в 0.1С, ну не могли они придумать такой тормоз!
Яков, может сам СИОК отрабатывает скрипт с такой частотой? Но даже для скрипта — это очень мало.
Насчёт энкодеров — скажите, уже ведь довольно много построено кокпитов на иокардсах, неужели там везде проблемы со скоростью?
Так, давайте отделим мух от котлет. Когда я говорил о таймере частотой 0.1 я имел ввиду скриптовую сиоковскую функцию TIMER. Используются они тогда, когда вам в скриптовом коде нужно породить таймер и привязать к нему какую-нибудь логику. Я их, кстати не использую, поскольку всю логику вяжу к симовской переменной ELAPSED_SECONDS.
Упомянул я здесь о сиоковском таймере только потому, что хотел с его помошью установить максимальную частоту надёжной записи/считывания в IOCP-сервер с помошью вот такого скрипта:
Var 2 name TimerStart
{
&T = Timer 10 1 1
}
Var 3 name T
{
&Test = &Test + 1
}
Для этой цели он не подошёл.
Я кстати, тоже подумывал о симовской переменной в качестве таймера, но мне многовато будет секунды (
Будем пользовать свой, побыстрее, кстати, он и считает у нас скорость работы протоколов.
Я кстати, тоже подумывал о симовской переменной в качестве таймера, но мне многовато будет секунды (
Будем пользовать свой, побыстрее, кстати, он и считает у нас скорость работы протоколов.
Женя, она отсичывает сотые доли секунды…
Если нет, то проблема скорости станет, когда энкодеры подключать начнете.
01 сек это ОЧЕНЬ МНОГО.
Проблема не встанет — и энкодеры и индикаторы отрабатывают идеально. Максим, вы не поняли, о каком таймере я говорил: 0.1 — это самый быстрый таймер, который можно самоcтоятельно создать в SIOC с целью написания дополнительной логики. К работе с энкодерами и индикаторами эти таймеры не имеют никакого отношения.
Ага, теперь понятно.
А есть где-ть видео, которое показывает скорости отработки энкодеров?
Максим, не сочтите за резкость, но вам надо чаще ходить в кино 😉
Я отмою платы Displays II, поставлю новый БП для мастерплаты, иначе со старым она у меня глючит. Накидаю скриптик и сниму Вам видео — не проблема.
Мы в свое время тестировали энкодеры с СИОКОМ. Нам понравилось что отрабатывает четко и без ложных срабатываний. Но к симовской переменной мы его не вязали.
Но в любом случае, если делать радиостек Боинга, то изменение переменной надо будет «пропускать через сим», тут я согласен. Мы делали по-другому. Мы вязали энкодер с сиоковской переменной и индикацио смотрели по сиоковской переменной — там быстро и четко. Вопросов не было. А вот если вязать энкодер к сиоковской переменной, переменную загонять в сим, а дисплей читать из симовской переменной, тут другое дело. Но это мы проверим как только у меня очередная серия дисплейс заработает.