Дмитрий, спасибо за новую версию!
Первым делом, проверил набор/сброс промежуточных позиций)
Фиксация ЭКГ на промежуточных позициях больше не происходит, но теперь нет возможности зафиксировать 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();
}
}
Делал в блокноте, возможны опечатки.
P. S. Всех с наступающим!