Author Topic: Checking pressing  (Read 27665 times)

0 Members and 8 Guests are viewing this topic.

NooBAsTiK

  • Jr. Member
  • **
  • Posts: 33
  • Karma: 0
    • View Profile
    • SquaD Skulls
Re: Checking pressing
« Reply #75 on: February 12, 2015, 02:01:38 PM »
I have about 5-10%

nime5ter

  • Administrator
  • Hero Member
  • *****
  • Posts: 1999
  • Karma: 61
    • View Profile
    • Getting Started with VoxCommando
Re: Checking pressing
« Reply #76 on: February 20, 2015, 11:01:25 AM »
If VoxCommando recognizes voice commands when volume levels show 5-10%, then great.

If not, you can try experimenting with your microphone input levels. This is done in the Windows sound settings, not in VoxCommando.



TIPS: POST VC VERSION #. Explain what you want VC to do. Say what you've tried & what happened, or post a video demo. Attach VC log. Link to instructions followed.  Post your command (xml)

Link

  • Jr. Member
  • **
  • Posts: 6
  • Karma: 0
    • View Profile
Re: Checking pressing
« Reply #77 on: January 30, 2019, 05:20:03 PM »
Здравствуйте! Я как и автор темы тоже увлекаюсь авиасимуляторами, и мне очень помогла эта ветка форума. Но у меня возникла пара вопросов.

1. В посте #45 nime5ter показал пример, как можно изменять положения закрылков отслеживая время нажатия клавиш.
Теперь сам вопрос - сколько может быть таких команд в пределах одной Group Collection?
Если, например, я хочу в этой же группе сделать подобное управление не только для закрылков, но и для радиаторов двигателей(открытие/закрытие), управление шагом винта и топливновоздушной смесью? Простое копирование приводит к конфликту этих двух команд, не говоря о трех или четырех. Как их можно разделить или сделать так чтобы они друг другу не мешали?

2.Плагин DxInput. В настройках плагина есть возможность изменить продолжительность нажатия комбинации клавиш. Его можно изменить и сохранить изменения. Но они сохраняются только до перезапуска программы. После закрытия и повторного открытия VoxCommando - значения сбрасываются. По умолчанию стоит 5 миллисекунд, но некоторым играм требуется несколько большее время в пределах 8-10 миллисекунд, иначе они не видят нажатия сочетаний клавиш.
Это так задумано, или это баг у меня?

Заранее спасибо за ответ, но если даже не ответите - тоже не обижусь :)))

jitterjames

  • Administrator
  • Hero Member
  • *****
  • Posts: 7714
  • Karma: 116
    • View Profile
    • VoxCommando
Re: Checking pressing
« Reply #78 on: January 30, 2019, 06:34:33 PM »
Hello Link. Thanks for posting.

#1 You can have many commands in a group.  Hundreds is probably OK.

I am not sure what you mean by a conflict.  Can you provide more information please?

Note that every group must have a unique name.  Commands should have unique phrases that are used to trigger the command because there is no way for VoxCommando to know which command you want.  If you put the commands in different groups and you only enable one group at a time, then it is OK for commands to have the same phrases because only the command in a group that is enabled will be recognized.

#2 Is a bug.  I am surprised no person ever mentioned this before.  Thanks for telling us.  Here is a fixed version of the plugin (DxInput.dll attached)

See notes for downloading dll files: https://voxcommando.com/mediawiki/index.php?title=Unblock_DLL

Link

  • Jr. Member
  • **
  • Posts: 6
  • Karma: 0
    • View Profile
Re: Checking pressing
« Reply #79 on: January 31, 2019, 04:43:58 AM »
Попробую объяснить что я делаю. Например, я создаю новую Group Collection - "Flightsim", затем в ней новую группу "Закрылки". В  неё помещаю код из поста #47  и прикрепленный файл в папку payloads. Переназначаю на нужные мне клавиши. Запускаю авиасимулятор, проверяю - всё работает. Затем делаю такую же группу, но уже для управления радиаторами двигателя. Создаю новый payload файл для этой группы, с другим названием и временем срабатывания. Радиаторы полностью открываются за 4 секунды. Сохраняю, делаю перезапуск Voxcommdo и на этом всё перестаёт работать. Voxcommdo без команды самостоятельно пытается что то открыть, на другие команды реагирует только сообщением - "Выполняется предыдущая команда". Я понимаю что из меня программист как из слона балерина, но хотелось бы понять что я делаю не так::confused
Code: [Select]
<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands version="2.2.1.6" space="preserve" date="1/31/2019 12:00:00 AM">
    <groupCollection open="True" name="Flysim">
        <commandGroup open="True" name="Закрылки" enabled="True" prefix="" priority="0" requiredProcess="" description="">
            <command id="178" name="Закрылки" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)==(B)</ifType>
                    <ifParams>{var.eventSet}&amp;&amp;True</ifParams>
                    <then>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Выполняется предыдущая команда.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>VC.StopMacro</cmdType>
                            <params />
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else />
                </if>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)==(B)</ifType>
                    <ifParams>{var.mode}&amp;&amp;</ifParams>
                    <then>
                        <action>
                            <cmdType>Results.SetVar</cmdType>
                            <params>
                                <param>mode</param>
                                <param>0</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>VC.StopMacro</cmdType>
                            <params />
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else />
                </if>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)==(B)</ifType>
                    <ifParams>{var.mode}&amp;&amp;{1}</ifParams>
                    <then>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Закрылки в выбраной позиции.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>VC.StopMacro</cmdType>
                            <params />
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else />
                </if>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)&lt;(B)</ifType>
                    <ifParams>{var.mode}&amp;&amp;{1}</ifParams>
                    <then>
                        <action>
                            <cmdType>PY.ExecString</cmdType>
                            <params>
                                <param>result = abs({1} - {var.mode})</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Выпуск закрылок через {LastResult} секунд</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>DxInput.KeyDown</cmdType>
                            <params>
                                <param>F</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>VC.SetEventTimer</cmdType>
                            <params>
                                <param>{LastResult}s</param>
                                <param>releaseKey</param>
                                <param>F</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Results.SetVar</cmdType>
                            <params>
                                <param>eventSet</param>
                                <param>True</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Results.SetVar</cmdType>
                            <params>
                                <param>mode</param>
                                <param>{1}</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>PY.ExecString</cmdType>
                            <params>
                                <param>result = abs({var.mode} - {1})</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Уборка закрылок через {LastResult} секунд</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>DxInput.KeyDown</cmdType>
                            <params>
                                <param>K</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>VC.SetEventTimer</cmdType>
                            <params>
                                <param>{LastResult}s</param>
                                <param>releaseKey</param>
                                <param>K</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Results.SetVar</cmdType>
                            <params>
                                <param>eventSet</param>
                                <param>True</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Results.SetVar</cmdType>
                            <params>
                                <param>mode</param>
                                <param>{1}</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <phrase>Закрылки</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\flaps.xml</payloadFromXML>
                <event>vc.loaded</event>
            </command>
            <command id="274" name="release key" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>DxInput.KeyUp</cmdType>
                    <params>
                        <param>{1}</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>DxInput.KeyUp</cmdType>
                    <params>
                        <param>{2}</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>Results.SetVar</cmdType>
                    <params>
                        <param>eventSet</param>
                        <param>False</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>TTS.Speak</cmdType>
                    <params>
                        <param>Есть!</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <event>releaseKey</event>
            </command>
        </commandGroup>
        <commandGroup open="True" name="Радиаторы" enabled="True" prefix="" priority="0" requiredProcess="" description="">
            <command id="180" name="Радиторы" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)==(B)</ifType>
                    <ifParams>{var.eventSet}&amp;&amp;True</ifParams>
                    <then>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Выполняется предыдущая команда.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>VC.StopMacro</cmdType>
                            <params />
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else />
                </if>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)==(B)</ifType>
                    <ifParams>{var.mode}&amp;&amp;</ifParams>
                    <then>
                        <action>
                            <cmdType>Results.SetVar</cmdType>
                            <params>
                                <param>mode</param>
                                <param>0</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>VC.StopMacro</cmdType>
                            <params />
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else />
                </if>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)==(B)</ifType>
                    <ifParams>{var.mode}&amp;&amp;{1}</ifParams>
                    <then>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Створки в выбраной позиции.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>VC.StopMacro</cmdType>
                            <params />
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else />
                </if>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)&lt;(B)</ifType>
                    <ifParams>{var.mode}&amp;&amp;{1}</ifParams>
                    <then>
                        <action>
                            <cmdType>PY.ExecString</cmdType>
                            <params>
                                <param>result = abs({1} - {var.mode})</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Открытие створок через {LastResult} секунд</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>DxInput.KeyDown</cmdType>
                            <params>
                                <param>Z</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>VC.SetEventTimer</cmdType>
                            <params>
                                <param>{LastResult}s</param>
                                <param>releaseKey</param>
                                <param>Z</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Results.SetVar</cmdType>
                            <params>
                                <param>eventSet</param>
                                <param>True</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Results.SetVar</cmdType>
                            <params>
                                <param>mode</param>
                                <param>{1}</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>PY.ExecString</cmdType>
                            <params>
                                <param>result = abs({var.mode} - {1})</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Закрытие створок через {LastResult} секунд</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>DxInput.KeyDown</cmdType>
                            <params>
                                <param>X</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>VC.SetEventTimer</cmdType>
                            <params>
                                <param>{LastResult}s</param>
                                <param>releaseKey</param>
                                <param>X</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Results.SetVar</cmdType>
                            <params>
                                <param>eventSet</param>
                                <param>True</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Results.SetVar</cmdType>
                            <params>
                                <param>mode</param>
                                <param>{1}</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <phrase>Радиаторы</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\radiators.xml</payloadFromXML>
                <event>vc.loaded</event>
            </command>
            <command id="276" name="release key" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>DxInput.KeyUp</cmdType>
                    <params>
                        <param>{1}</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>DxInput.KeyUp</cmdType>
                    <params>
                        <param>{2}</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>Results.SetVar</cmdType>
                    <params>
                        <param>eventSet</param>
                        <param>False</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>TTS.Speak</cmdType>
                    <params>
                        <param>Есть!</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <event>releaseKey</event>
            </command>
        </commandGroup>
    </groupCollection>
</VoiceCommands>

PS Попробовал заменить DxInput.dll на тот что вы прикрепили в предыдущем посту, после этого плагин DxInput у меня вообще исчез из списка установленных плагинов.

jitterjames

  • Administrator
  • Hero Member
  • *****
  • Posts: 7714
  • Karma: 116
    • View Profile
    • VoxCommando
Re: Checking pressing
« Reply #80 on: January 31, 2019, 08:09:11 AM »
PS Попробовал заменить DxInput.dll на тот что вы прикрепили в предыдущем посту, после этого плагин DxInput у меня вообще исчез из списка установленных плагинов.

See notes for downloading dll files: https://voxcommando.com/mediawiki/index.php?title=Unblock_DLL

Link

  • Jr. Member
  • **
  • Posts: 6
  • Karma: 0
    • View Profile
Re: Checking pressing
« Reply #81 on: January 31, 2019, 08:50:04 AM »
Да, моя ошибка. Прошу прощения, поторопился. В плагине DxInput теперь всё сохраняется. Спасибо! :)

jitterjames

  • Administrator
  • Hero Member
  • *****
  • Posts: 7714
  • Karma: 116
    • View Profile
    • VoxCommando
Re: Checking pressing
« Reply #82 on: January 31, 2019, 10:31:40 AM »
It is a very complex command.  You can't just make a copy of it with minor changes.  The conflict is caused by the fact that both commands are using the same variables and events.

Unfortunately I did not write the original command.  I am not familiar with flight simulators, and I can't read Russian so it is difficult for me to solve your problem.  To fix it someone will first need to really understand everything that is happening in the original command.

If you are lucky you might just be able to modify the second command to make sure the variables and event names are different from the first command, but the chances of making a mistake are quite high.

nime5ter

  • Administrator
  • Hero Member
  • *****
  • Posts: 1999
  • Karma: 61
    • View Profile
    • Getting Started with VoxCommando
Re: Checking pressing
« Reply #83 on: February 02, 2019, 12:00:27 PM »
You do not need a separate folder for each command, unless it helps you to find commands in your command tree.

Each unique command must use its own variable. Otherwise, the two commands interfere with one another.

In the XML that you posted, you were using the same variable ({var.mode}) to control two separate functions ("flaps" and "radiators").

I have now deleted all {var.mode} references and replaced it with two unique variables: {var.flaps} and {var.radiators}.

The following commands function. I do not know if they accomplish what you need, but they work. :)


Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.2.4.5-->
<commandGroup open="True" name="FlightSim control" enabled="True" prefix="" priority="0" requiredProcess="" description="">
  <command id="133" name="инициализировать переменные" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>Results.SetVar</cmdType>
      <params>
        <param>flaps</param>
        <param>0</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Results.SetVar</cmdType>
      <params>
        <param>radiators</param>
        <param>0</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>vc.loaded</event>
  </command>
  <command id="188" name="Закрылки" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <if ifBlockDisabled="False" ifNot="False">
      <ifType>(A)==(B)</ifType>
      <ifParams>{var.eventSet}&amp;&amp;True</ifParams>
      <then>
        <action>
          <cmdType>TTS.Speak</cmdType>
          <params>
            <param>Выполняется предыдущая команда.</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>VC.StopMacro</cmdType>
          <params />
          <cmdRepeat>1</cmdRepeat>
        </action>
      </then>
      <else />
    </if>
    <if ifBlockDisabled="False" ifNot="False">
      <ifType>(A)==(B)</ifType>
      <ifParams>{var.flaps}&amp;&amp;{1}</ifParams>
      <then>
        <action>
          <cmdType>TTS.Speak</cmdType>
          <params>
            <param>Закрылки в выбраной позиции.</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>VC.StopMacro</cmdType>
          <params />
          <cmdRepeat>1</cmdRepeat>
        </action>
      </then>
      <else />
    </if>
    <if ifBlockDisabled="False" ifNot="False">
      <ifType>(A)&lt;(B)</ifType>
      <ifParams>{var.flaps}&amp;&amp;{1}</ifParams>
      <then>
        <action>
          <cmdType>PY.ExecString</cmdType>
          <params>
            <param>result = abs({1} - {var.flaps})</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>TTS.Speak</cmdType>
          <params>
            <param>Выпуск закрылок через {LastResult} секунд</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>DxInput.KeyDown</cmdType>
          <params>
            <param>F</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>VC.SetEventTimer</cmdType>
          <params>
            <param>{LastResult}s</param>
            <param>releaseKey</param>
            <param>F</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Results.SetVar</cmdType>
          <params>
            <param>eventSet</param>
            <param>True</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Results.SetVar</cmdType>
          <params>
            <param>flaps</param>
            <param>{1}</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
      </then>
      <else>
        <action>
          <cmdType>PY.ExecString</cmdType>
          <params>
            <param>result = abs({var.flaps} - {1})</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>TTS.Speak</cmdType>
          <params>
            <param>Уборка закрылок через {LastResult} секунд</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>DxInput.KeyDown</cmdType>
          <params>
            <param>K</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>VC.SetEventTimer</cmdType>
          <params>
            <param>{LastResult}s</param>
            <param>releaseKey</param>
            <param>K</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Results.SetVar</cmdType>
          <params>
            <param>eventSet</param>
            <param>True</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Results.SetVar</cmdType>
          <params>
            <param>flaps</param>
            <param>{1}</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
      </else>
    </if>
    <phrase>Закрылки</phrase>
    <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\flaps.xml</payloadFromXML>
  </command>
  <command id="190" name="Радиторы" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <if ifBlockDisabled="False" ifNot="False">
      <ifType>(A)==(B)</ifType>
      <ifParams>{var.eventSet}&amp;&amp;True</ifParams>
      <then>
        <action>
          <cmdType>TTS.Speak</cmdType>
          <params>
            <param>Выполняется предыдущая команда.</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>VC.StopMacro</cmdType>
          <params />
          <cmdRepeat>1</cmdRepeat>
        </action>
      </then>
      <else />
    </if>
    <if ifBlockDisabled="False" ifNot="False">
      <ifType>(A)==(B)</ifType>
      <ifParams>{var.radiators}&amp;&amp;{1}</ifParams>
      <then>
        <action>
          <cmdType>TTS.Speak</cmdType>
          <params>
            <param>Створки в выбраной позиции.</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>VC.StopMacro</cmdType>
          <params />
          <cmdRepeat>1</cmdRepeat>
        </action>
      </then>
      <else />
    </if>
    <if ifBlockDisabled="False" ifNot="False">
      <ifType>(A)&lt;(B)</ifType>
      <ifParams>{var.radiators}&amp;&amp;{1}</ifParams>
      <then>
        <action>
          <cmdType>PY.ExecString</cmdType>
          <params>
            <param>result = abs({1} - {var.radiators})</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>TTS.Speak</cmdType>
          <params>
            <param>Открытие створок через {LastResult} секунд</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>DxInput.KeyDown</cmdType>
          <params>
            <param>Z</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>VC.SetEventTimer</cmdType>
          <params>
            <param>{LastResult}s</param>
            <param>releaseKey</param>
            <param>Z</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Results.SetVar</cmdType>
          <params>
            <param>eventSet</param>
            <param>True</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Results.SetVar</cmdType>
          <params>
            <param>radiators</param>
            <param>{1}</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
      </then>
      <else>
        <action>
          <cmdType>PY.ExecString</cmdType>
          <params>
            <param>result = abs({var.radiators} - {1})</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>TTS.Speak</cmdType>
          <params>
            <param>Закрытие створок через {LastResult} секунд</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>DxInput.KeyDown</cmdType>
          <params>
            <param>X</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>VC.SetEventTimer</cmdType>
          <params>
            <param>{LastResult}s</param>
            <param>releaseKey</param>
            <param>X</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Results.SetVar</cmdType>
          <params>
            <param>eventSet</param>
            <param>True</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Results.SetVar</cmdType>
          <params>
            <param>radiators</param>
            <param>{1}</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
      </else>
    </if>
    <phrase>Радиаторы</phrase>
    <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\radiators.xml</payloadFromXML>
  </command>
  <command id="236" name="release key" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>DxInput.KeyUp</cmdType>
      <params>
        <param>{1}</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>DxInput.KeyUp</cmdType>
      <params>
        <param>{2}</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Results.SetVar</cmdType>
      <params>
        <param>eventSet</param>
        <param>False</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>TTS.Speak</cmdType>
      <params>
        <param>Есть!</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>releaseKey</event>
  </command>
</commandGroup>
« Last Edit: February 06, 2019, 09:55:18 PM by nime5ter »
TIPS: POST VC VERSION #. Explain what you want VC to do. Say what you've tried & what happened, or post a video demo. Attach VC log. Link to instructions followed.  Post your command (xml)

nime5ter

  • Administrator
  • Hero Member
  • *****
  • Posts: 1999
  • Karma: 61
    • View Profile
    • Getting Started with VoxCommando
Re: Checking pressing
« Reply #84 on: February 02, 2019, 12:12:09 PM »
PS - In order to properly test the new commands, you will need to:

1. Create a backup copy of your old "Flysim" commands on your computer.

2. In VoxCommando, delete the old commands.

3. Copy and paste the new XML into your command tree. Save and close the command tree.

4. Restart VoxCommando.

5. Now you can try the new commands.

TIPS: POST VC VERSION #. Explain what you want VC to do. Say what you've tried & what happened, or post a video demo. Attach VC log. Link to instructions followed.  Post your command (xml)

Link

  • Jr. Member
  • **
  • Posts: 6
  • Karma: 0
    • View Profile
Re: Checking pressing
« Reply #85 on: February 06, 2019, 02:39:59 AM »
Спасибо большое за ответ, теперь я вижу что начал искать ошибку совсем не там. :)
Вот пример того что делал я на основе вашей команды из из поста #47:
Code: [Select]
<?xml version="1.0" encoding="utf-8" ?>
- <VoiceCommands version="2.2.1.6" space="preserve" date="2/6/2019 12:00:00 AM">
  <groupCollection open="False" name="Flysim" />
- <commandGroup open="True" name="Закрылки" enabled="True" prefix="" priority="0" requiredProcess="" description="">
- <command id="211" name="Закрылки" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
- <if ifBlockDisabled="False" ifNot="False">
  <ifType>(A)==(B)</ifType>
  <ifParams>{var.eventFLAPS}&&True</ifParams>
- <then>
- <action>
  <cmdType>TTS.Speak</cmdType>
- <params>
  <param>Выполняется предыдущая команда закрылки.</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>VC.StopMacro</cmdType>
  <params />
  <cmdRepeat>1</cmdRepeat>
  </action>
  </then>
  <else />
  </if>
- <if ifBlockDisabled="False" ifNot="False">
  <ifType>(A)==(B)</ifType>
  <ifParams>{var.flaps}&&</ifParams>
- <then>
- <action>
  <cmdType>Results.SetVar</cmdType>
- <params>
  <param>flaps</param>
  <param>0</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>VC.StopMacro</cmdType>
  <params />
  <cmdRepeat>1</cmdRepeat>
  </action>
  </then>
  <else />
  </if>
- <if ifBlockDisabled="False" ifNot="False">
  <ifType>(A)==(B)</ifType>
  <ifParams>{var.flaps}&&{1}</ifParams>
- <then>
- <action>
  <cmdType>TTS.Speak</cmdType>
- <params>
  <param>Закрылки в выбраной позиции.</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>VC.StopMacro</cmdType>
  <params />
  <cmdRepeat>1</cmdRepeat>
  </action>
  </then>
  <else />
  </if>
- <if ifBlockDisabled="False" ifNot="False">
  <ifType>(A)<(B)</ifType>
  <ifParams>{var.flaps}&&{1}</ifParams>
- <then>
- <action>
  <cmdType>PY.ExecString</cmdType>
- <params>
  <param>result = abs({1} - {var.flaps})</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>TTS.Speak</cmdType>
- <params>
  <param>Выпуск закрылок через {LastResult} секунд</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>DxInput.KeyDown</cmdType>
- <params>
  <param>F</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>VC.SetEventTimer</cmdType>
- <params>
  <param>{LastResult}s</param>
  <param>releaseKey</param>
  <param>F</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>Results.SetVar</cmdType>
- <params>
  <param>eventFLAPS</param>
  <param>True</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>Results.SetVar</cmdType>
- <params>
  <param>flaps</param>
  <param>{1}</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
  </then>
- <else>
- <action>
  <cmdType>PY.ExecString</cmdType>
- <params>
  <param>result = abs({var.flaps} - {1})</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>TTS.Speak</cmdType>
- <params>
  <param>Уборка закрылок через {LastResult} секунд</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>DxInput.KeyDown</cmdType>
- <params>
  <param>K</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>VC.SetEventTimer</cmdType>
- <params>
  <param>{LastResult}s</param>
  <param>releaseKey</param>
  <param>K</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>Results.SetVar</cmdType>
- <params>
  <param>eventFLAPS</param>
  <param>True</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>Results.SetVar</cmdType>
- <params>
  <param>flaps</param>
  <param>{1}</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
  </else>
  </if>
  <phrase>Закрылки</phrase>
  <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\flaps.xml</payloadFromXML>
  <event>vc.loaded</event>
  </command>
- <command id="307" name="release key" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
- <action>
  <cmdType>DxInput.KeyUp</cmdType>
- <params>
  <param>{1}</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>DxInput.KeyUp</cmdType>
- <params>
  <param>{2}</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>Results.SetVar</cmdType>
- <params>
  <param>eventFLAPS</param>
  <param>False</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>TTS.Speak</cmdType>
- <params>
  <param>Есть!</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
  <event>releaseKey</event>
  </command>
  </commandGroup>
- <commandGroup open="True" name="Радиаторы" enabled="True" prefix="" priority="0" requiredProcess="" description="">
- <command id="193" name="Радиаторы" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
- <if ifBlockDisabled="False" ifNot="False">
  <ifType>(A)==(B)</ifType>
  <ifParams>{var.eventRADS}&&True</ifParams>
- <then>
- <action>
  <cmdType>TTS.Speak</cmdType>
- <params>
  <param>Выполняется предыдущая команда радиаторы.</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>VC.StopMacro</cmdType>
  <params />
  <cmdRepeat>1</cmdRepeat>
  </action>
  </then>
  <else />
  </if>
- <if ifBlockDisabled="False" ifNot="False">
  <ifType>(A)==(B)</ifType>
  <ifParams>{var.rads}&&</ifParams>
- <then>
- <action>
  <cmdType>Results.SetVar</cmdType>
- <params>
  <param>rads</param>
  <param>0</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>VC.StopMacro</cmdType>
  <params />
  <cmdRepeat>1</cmdRepeat>
  </action>
  </then>
  <else />
  </if>
- <if ifBlockDisabled="False" ifNot="False">
  <ifType>(A)==(B)</ifType>
  <ifParams>{var.rads}&&{3}</ifParams>
- <then>
- <action>
  <cmdType>TTS.Speak</cmdType>
- <params>
  <param>Створки выбраной позиции.</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>VC.StopMacro</cmdType>
  <params />
  <cmdRepeat>1</cmdRepeat>
  </action>
  </then>
  <else />
  </if>
- <if ifBlockDisabled="False" ifNot="False">
  <ifType>(A)<(B)</ifType>
  <ifParams>{var.rads}&&{3}</ifParams>
- <then>
- <action>
  <cmdType>PY.ExecString</cmdType>
- <params>
  <param>result = abs({3} - {var.rads})</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>TTS.Speak</cmdType>
- <params>
  <param>Открою через {LastResult} секунд</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>DxInput.KeyDown</cmdType>
- <params>
  <param>z</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>VC.SetEventTimer</cmdType>
- <params>
  <param>{LastResult}s</param>
  <param>releaseKey</param>
  <param>z</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>Results.SetVar</cmdType>
- <params>
  <param>eventRADS</param>
  <param>True</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>Results.SetVar</cmdType>
- <params>
  <param>rads</param>
  <param>{3}</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
  </then>
- <else>
- <action>
  <cmdType>PY.ExecString</cmdType>
- <params>
  <param>result = abs({var.rads} - {3})</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>TTS.Speak</cmdType>
- <params>
  <param>Закрою через {LastResult} секунд</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>DxInput.KeyDown</cmdType>
- <params>
  <param>x</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>VC.SetEventTimer</cmdType>
- <params>
  <param>{LastResult}s</param>
  <param>releaseKey</param>
  <param>x</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>Results.SetVar</cmdType>
- <params>
  <param>eventRADS</param>
  <param>True</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>Results.SetVar</cmdType>
- <params>
  <param>rads</param>
  <param>{3}</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
  </else>
  </if>
  <phrase>Радиаторы</phrase>
  <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\radiators.xml</payloadFromXML>
  <event>vc.loaded</event>
  </command>
- <command id="288" name="release key" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
- <action>
  <cmdType>DxInput.KeyUp</cmdType>
- <params>
  <param>{3}</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>DxInput.KeyUp</cmdType>
- <params>
  <param>{4}</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>Results.SetVar</cmdType>
- <params>
  <param>eventRADS</param>
  <param>False</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
- <action>
  <cmdType>TTS.Speak</cmdType>
- <params>
  <param>Есть!</param>
  </params>
  <cmdRepeat>1</cmdRepeat>
  </action>
  <event>releaseKey</event>
  </command>
  </commandGroup>
  </VoiceCommands>
« Last Edit: February 06, 2019, 03:08:52 AM by Link »

Link

  • Jr. Member
  • **
  • Posts: 6
  • Karma: 0
    • View Profile
Re: Checking pressing
« Reply #86 on: February 06, 2019, 02:57:49 AM »
You do not need a separate folder for each command, unless it helps you to find commands in your command tree.

Each unique command must use its own variable. Otherwise, the two commands interfere with one another.

In the XML that you posted, you were using the same variable ({var.mode}) to control two separate functions ("flaps" and "radiators").

I have now deleted all{var.mode} references and replaced it with two unique variables: {var.flaps} and {var.radiators}.

The following commands function. I do not know if they accomplish what you need, but they work. :)

Спасибо Вам огромное! Работает!!!
Это именно то, что я хотел сделать, но у меня не получалось! :bonk
:)

И еще один вопрос - можно ли задать время нажатия клавиши меньше 1 секунды, к примеру 0,5 секунды?
 

jitterjames

  • Administrator
  • Hero Member
  • *****
  • Posts: 7714
  • Karma: 116
    • View Profile
    • VoxCommando
Re: Checking pressing
« Reply #87 on: February 06, 2019, 07:49:04 AM »

И еще один вопрос - можно ли задать время нажатия клавиши меньше 1 секунды, к примеру 0,5 секунды?

Unfortunately VC.SetEventTimer uses seconds as the smallest unit of time.

To get a half second you would need another method such as VC.Pause, which uses milliseconds.

Link

  • Jr. Member
  • **
  • Posts: 6
  • Karma: 0
    • View Profile
Re: Checking pressing
« Reply #88 on: February 06, 2019, 09:50:00 AM »
Unfortunately VC.SetEventTimer uses seconds as the smallest unit of time.

To get a half second you would need another method such as VC.Pause, which uses milliseconds.

Спасибо за ответ! :)