Страница 12 из 23

Re: Версия 1.0.x

Добавлено: 29 дек 2019, 14:56
maisvendoo
KVictor писал(а):Всё-таки посмотрел код, чтобы подтвердить свою гипотезу
а какую ветку смотрели? Надо смотреть ветку develop - именно там всё самое новое. Проект ВЛ60 был разделен на два проекта: vl60pk и vl60k, с общей кодовой базой по оборудованию.
KVictor писал(а):Ещё небольшая ремарка, местами встречаются "магические числа", не лучше ли вынести их в константы (возможно даже, в какой-то централизованный или частично централизованный инклуд?)?
KVictor писал(а):В любом случае, полагаю, что константа вида NominalVoltage была бы в данном случае понятнее, чем число 25000.
Справедливые замечания. Сам придерживаюсь такого подхода, но зачастую бывает тороплюсь и допускаю такие оплошности.
KVictor писал(а):в некоторых файлах есть шапка, поясняющая назначение файла, в некоторых нет. Предположу, что единообразие было бы предпочтительнее
Вообще, шапку обычно добавляю, это корпоративный стиль оформления, принятый у меня в отделах на работе. Туда бы еще не помешали Doxygen-комменты. Опять таки, часто из-за спешки пропускаю.
KVictor писал(а):Не смог решить, в какую тему это было лучше написать
В эту вполне уместно, тестирование новых версий касается и оценки качества кода. Критика тоже вполне уместная

Re: Версия 1.0.x

Добавлено: 31 дек 2019, 11:51
maisvendoo
Итак, дорогие друзья и коллеги, в последний день уходящего года представляем на ваш суд версию 1.0.4!

Изображение

Изменения в версии:
  • Добавлен комплект оборудования электропневматического тормоза (ЭПТ);
  • Электровоз ВЛ60пк оснащен ЭПТ;
  • Добавлен грузовой электровоз ВЛ60к;
  • Инвертирована мышь при управлении камерой в кабине и свободном режиме;
  • Исправлен ряд ошибок связанных с работой оборудования электровозов ВЛ60;
  • Реализована правильная анимация рукоятки крана вспомогательного тормоза усл. №254;
  • Добавлен лаунчер на технологии QML (launcher2.exe)
  • Исправлены и доработаны модели пассажирских вагонов;
  • Добавлены модели грузовых вагонов-хоперов.
Скачать версию можно с официального сайта в разделе "Скачать RRS"

Поздравляю всех с наступающим Новым 2020 годом! Здоровья, счастья и успехов в новом году, столько, сколько унесете! Ура!

Re: Версия 1.0.x

Добавлено: 31 дек 2019, 12:00
alex2812
Огромное спасибо за подарок, протестим!!! Тоже хочу присоединиться к поздравлениям и пожелать всего самого наилучшего в новом году и новых побед как в личной жизни, так и в развитии нашего любимого симулятора RRS!!! ;)

Re: Версия 1.0.x

Добавлено: 31 дек 2019, 12:17
Ромыч РЖДУЗ
Отлично, спасибо за новую версию Дима! :D
Сегодня, после 23:00 по мск, выложу у себя на сайте, три дополнения для RRS:
- состав фирменного поезда "Молдова";
- рефрежираторный поезд "Дессау";
- патч для маршрута Котовск- Одесса.
Изображение

Re: Версия 1.0.x

Добавлено: 31 дек 2019, 13:53
KVictor
Дмитрий, спасибо за новую версию!

Первым делом, проверил набор/сброс промежуточных позиций)
Фиксация ЭКГ на промежуточных позициях больше не происходит, но теперь нет возможности зафиксировать 18-ю позицию, кроме того, если во время набора или сброса позиций перемещать ручку между ФВ и ФП позиции то набираются то сбрасываются. Не знаю, как это происходит на самом деле, возможно, кто-нибудь знакомый детальнее с ВЛ60/ВЛ80 сможет пояснить, что из этого правильно, что - нет?
maisvendoo писал(а):
29 дек 2019, 14:56
а какую ветку смотрели? Надо смотреть ветку develop - именно там всё самое новое. Проект ВЛ60 был разделен на два проекта: vl60pk и vl60k, с общей кодовой базой по оборудованию.
Смотрел изначально master, потом develop.
maisvendoo писал(а):
29 дек 2019, 14:56
Вообще, шапку обычно добавляю, это корпоративный стиль оформления, принятый у меня в отделах на работе. Туда бы еще не помешали Doxygen-комменты. Опять таки, часто из-за спешки пропускаю.
Почитал про Doxygen, интересная вещь.
Ещё мысль, может я этого просто не нашёл, возможно, имеет смысл сформировать общий подход к оформлению кода и Naming Conventions в виде какого-то документа, всё-таки, корпоративные стандарты могут сильно отличаться.

Также проверил по ветке develop актуальный код обработки нажатий клавиш и, поскольку проблема с Alt пока осталась, осмелюсь предложить свой вариант правки метода keyProcess :) . Пока здесь, среду разработки и git ещё не настраивал.
Вариант для ВЛ60пк, в ВЛ60к нескольких клавиш нет, правка там, должна быть аналогичная. Кратко: закомментировал строки 168-175, перенёс автозапуск наверх, там же, сделал проверку на нажатие Control и Alt.

Код: Выделить всё

#include    "vl60.h"

//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
void VL60pk::keyProcess()
{
    if (autoStartTimer->isStarted())
        return;

    // Проверка на нажатие Ctrl, пока в комбинациях не используется, но, может быть полезна впоследствии
    if (isControl())
        return;

    // Проверка на нажатие Alt
    if (isAlt())
    {
        // Проверка !autoStartTimer->isStarted()) не нужна, поскольку она уже есть выше
        if (getKeyState(KEY_R))
            autoStartTimer->start();
        // больше Alt нигде не используется, поэтому выходим
        return;
    }

    // Управление тумблером "Токоприемники"
    if (getKeyState(KEY_U))
    {
        if (isShift())
            pants_tumbler.set();
        else
            pants_tumbler.reset();
    }

    // Подъем/опускание переднего токоприемника
    if (getKeyState(KEY_I))
    {
        // Переводим тумблер в нужное фиксированное положение
        if (isShift())
            pant1_tumbler.set();
        else
            pant1_tumbler.reset();

        // Задаем статус токоприемнику
        //pantographs[0]->setState(pants_tumbler.getState());
    }

    // Подъем/опускание заднего токоприемника
    if (getKeyState(KEY_O))
    {
        // Переводим тумблер в нужное фиксированное положение
        if (isShift())
            pant2_tumbler.set();
        else
            pant2_tumbler.reset();

        // Задаем статус токоприемнику
        //pantographs[1]->setState(pants_tumbler.getState());
    }

    // Включение/выключение ГВ
    if (getKeyState(KEY_P))
    {
        if (isShift())
            gv_tumbler.set();
        else
            gv_tumbler.reset();
    }

    // Возврат защиты
    if (getKeyState(KEY_K))
        gv_return_tumbler.set();
    else
        gv_return_tumbler.reset();

    // Включение/выключение расщепителя фаз
    if (getKeyState(KEY_T))
    {
        if (isShift())
            fr_tumbler.set();
        else
            fr_tumbler.reset();
    }

    // Включение/выключение мотор-верниляторов

    // МВ1
    if (getKeyState(KEY_R))
    {
        if (isShift())
            mv_tumblers[MV1].set();
        else
            mv_tumblers[MV1].reset();
    }

    // МВ2
    if (getKeyState(KEY_F))
    {
        if (isShift())
            mv_tumblers[MV2].set();
        else
            mv_tumblers[MV2].reset();
    }

    // МВ3
    if (getKeyState(KEY_Y))
    {
        if (isShift())
            mv_tumblers[MV3].set();
        else
            mv_tumblers[MV3].reset();
    }

    // МВ4
    if (getKeyState(KEY_5))
    {
        if (isShift())
            mv_tumblers[MV4].set();
        else
            mv_tumblers[MV4].reset();
    }

    // МВ5
    if (getKeyState(KEY_6))
    {
        if (isShift())
            mv_tumblers[MV5].set();
        else
            mv_tumblers[MV5].reset();
    }

    // МВ6
    if (getKeyState(KEY_7))
    {
        if (isShift())
            mv_tumblers[MV6].set();
        else
            mv_tumblers[MV6].reset();
    }

    // Включение/выключение мотор-компрессора
    if (getKeyState(KEY_E))
    {
        if (isShift())
            mk_tumbler.set();
        else
            mk_tumbler.reset();
    }

    // Включение/выключение цепей управления
    if (getKeyState(KEY_J))
    {
        if (isShift())
            cu_tumbler.set();
        else
            cu_tumbler.reset();
    }

    // Нажатие РБ-1
    if (getKeyState(KEY_Z))
        rb[RB_1].set();
    else
        rb[RB_1].reset();

    // Нажатие РБС
    if (getKeyState(KEY_M))
        rb[RBS].set();
    else
        rb[RBS].reset();

    // Нажатие РБП
    if (getKeyState(KEY_Q))
        rb[RBP].set();
    else
        rb[RBP].reset();

/*  Старый автозапуск закомментирован
    if (getKeyState(KEY_R))
    {
        if (isAlt() && !autoStartTimer->isStarted())
            autoStartTimer->start();
    }
*/

    // Включение/выключение ЭПТ
    if (getKeyState(KEY_V))
    {
        if (isShift())
            ept_switch.set();
        else
            ept_switch.reset();
    }
}
Делал в блокноте, возможны опечатки. :oops:

P. S. Всех с наступающим!

Re: Версия 1.0.x

Добавлено: 31 дек 2019, 17:15
maisvendoo
Надо бы прикрутить к форуму нормальный просмотрщик кода с подсветкой синтаксиса...
Код вполне логичный, попробую, ну уже в следующем году ;)
KVictor писал(а): среду разработки и git ещё не настраивал
git вещь, в общем обязательная, так как не будет проблем со слиянием изменений. Я бы уже давно запутался во всем этом хозяйстве без системы версионного контроля.
KVictor писал(а):Ещё мысль, может я этого просто не нашёл, возможно, имеет смысл сформировать общий подход к оформлению кода и Naming Conventions в виде какого-то документа
Вообще необходимость назревает, так как в основном дереве проекта не только мной написанный код

Re: Версия 1.0.x

Добавлено: 01 янв 2020, 01:09
maisvendoo
Ребята, очень интересует мнение о нашем новом лаунчере (launcher2.exe). Я пока не стал цеплять его на ярлык, но оцените дизайн и функциональность и не стесняйтесь критиковать. Наш новый разработчик, Дмитрий Терещенко, примет ваши замечания к сведению и будет развивать эту часть проекта. Сейчас, когда в проект пришли новые разработчики, мы хотим реализовать концепцию разделения труда, когда за каждую часть проекта будет отвечать не главный разработчик а кто-то другой. Чем больше будет таких людей, тем быстрее будет развиваться проект. Так что прошу отнестись серьезно к работе Дмитрия.

С наступившим вас!

Re: Версия 1.0.x

Добавлено: 01 янв 2020, 07:03
lord_vl80
KVictor писал(а):
31 дек 2019, 13:53
Дмитрий, спасибо за новую версию!

теперь нет возможности зафиксировать 18-ю позицию, кроме того, если во время набора или сброса позиций перемещать ручку между ФВ и ФП позиции то набираются то сбрасываются.
Первое подтверждаю, и, кажется, знаю, почему такое (при кратковременной постановке РК в АП так же происходит набор 2х позиций а не одной, здесь видимо что-то с этим связано, ведь П1-П4 набираются автоматически, и в алгоритме сима этот автомат включен до выхода на 18ю позицию и также срабатывает переход на 19ю).

При ФВ-ФП - ничего не происходит как и в ФП-ФВ)

Re: Версия 1.0.x

Добавлено: 01 янв 2020, 08:03
Ромыч РЖДУЗ
Так я так и не понял, если рукоятку контроллера, кратковременно установить в положение АП, тогда происходит набор 2-х позиций сразу. Это правильно или нет? :?

Re: Версия 1.0.x

Добавлено: 01 янв 2020, 11:32
KVictor
Проверил в разных вариантах, есть два момента, показавшиеся мне странными, один, насколько я понимаю, ошибка, второй - не уверен, правильно это или нет, нужен комментарий от кого-то, лучше знакомого с электровозом
1. Шаги по воспроизведению: набираем 17 позицию, ставим ручку контролера машиниста в РП или АП (не принципиально в данном случае), переводим в ФП, ЭКГ набирает позиции до 19-й, хотя, насколько я понимаю, зафиксироваться должна была 18-я
2. Шаги по воспроизведению: набираем 17 позицию, ставим ручку контролера машиниста в РП или АП (не принципиально в данном случае), пока набираются промежуточные позиции, переводим ручку в ФВ, ЭКГ начинает сбрасывать промежуточные позиции, возвращаясь к 17-й.
Насчёт пункта 2, не знаю, как происходит на настоящем электровозе, поэтому не могу утверждать, ошибка это или нет.