Страница 4 из 4 ПерваяПервая ... 234
Показано с 31 по 34 из 34

Тема: Странная работа скрипта

  1. #31
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,669

    По умолчанию

    а делает ли? Хотя без разницы, вы присваиваете in_p = in_c и оно становится true.

  2. #32

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    а делает ли? Хотя без разницы, вы присваиваете in_p = in_c и оно становится true.
    В скриптах и там и тут у меня все верно сделано. Только там без дополнительных скобок не работает, а здесь работает. Это означает, что компиляторы там и тут по разному код интерпретируют.

    Надо прогнать мой код, тот что в CoDeSys, через другие компиляторы. Сдается мне, что в FastScript 1.9, C++Script компилятор плохо реализован.
    Последний раз редактировалось Тимур Назарбоев; 04.10.2023 в 09:06.

  3. #33

    По умолчанию

    Проблема в вашем коде может быть связана с последовательностью операций. Кажется, что in_p устанавливается в in_c до выполнения инкремента out1 или out2, что может привести к нежелательным изменениям.

    Попробуйте переупорядочить ваш код следующим образом:

    python
    Copy code
    Bool in_c;
    Bool in_p;
    int out1;
    int out2;

    in_c = readValue("_1"); // Чтение состояния кнопки

    if (in_c == true && in_p == false) {
    out1++; // Инкремент out1, только если кнопка была нажата и до этого не была нажата
    writeValue("_2", out1); // Вывод значения
    }

    if (in_c == false && in_p == true) {
    out2++; // Инкремент out2, только если кнопка была отжата и до этого была нажата
    writeValue("_3", out2); // Вывод значения
    }

    in_p = in_c; // Обновление предыдущего состояния кнопки

    Этот код гарантирует, что инкремент out1 происходит только при нажатии кнопки, а инкремент out2 - только при ее отжатии.

  4. #34
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    Цитата Сообщение от Faus Посмотреть сообщение
    Попробуйте
    От исходного (#1) ничем не отличается. И так же каждый цикл колбасицца от 2 до 4 проверок. Причем за каким то буля с булем (раньше сказали). И много лишнего

    Bool p;

    if(readValue("_1") != p){ //дергаемся по изменению

    if (p = !p) {out1++; ...;} //нажали
    else {out2++; ...;}; //отжали

    }


    Цитата Сообщение от Faus Посмотреть сообщение
    Этот код гарантирует, что...
    Скобки гарантируют всё/всегда/везде. Зачем пыжится с каким-то "переупорядочиванием" кода ?

Страница 4 из 4 ПерваяПервая ... 234

Похожие темы

  1. Странная зависимость
    от Ollema в разделе Эксплуатация
    Ответов: 23
    Последнее сообщение: 09.01.2022, 23:35
  2. Странная работа ПИД регулятора
    от Newcomer в разделе ПЛК1хх [М02]
    Ответов: 8
    Последнее сообщение: 02.12.2021, 20:42
  3. странная логика в ФБ COM_SERVICE
    от Ian в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 24.06.2021, 06:38
  4. Странная работа PID
    от skinnbatter в разделе ПЛК1хх
    Ответов: 28
    Последнее сообщение: 14.11.2018, 12:59
  5. странная работа буста
    от Andrupel в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 12.09.2012, 10:16

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •