Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: Проблема с макросом

  1. #1

    По умолчанию Проблема с макросом

    Добрый день

    Написал макрос, но оператор CASE не хочет работать. Я его упростил, но не помогло. В результате работы переменная I1 должна принять значение 5, но она почему-то 0.


    int MacroEntry()
    {
    static unsigned short I1 = 0;
    unsigned short I2 = 0;
    unsigned short K;
    unsigned short N1 = 1;
    unsigned short _P1[3] = {1,2,76};
    float _P2[3] = {3.1, 10.6, 70.4};
    unsigned int _P10[3][8] = {
    {82, 101, 99, 105, 112, 101, 32, 49},
    {82, 101, 99, 105, 112, 101, 32, 50},
    {82, 101, 99, 105, 112, 101, 32, 51}
    };
    bool Up_c;
    bool Down_c;

    J = J + 1;
    N = N1;
    _I1 = I1;

    Up_c = Up;
    Down_c = Down;

    switch (I1){

    case 0:
    //if (Up_c == true) {I1 = 10;}
    I1 = 5;
    break;

    case 5:
    ;
    break;

    case 10:
    if (N1 >= 3) {N1 = 1;} else {N1 = N1 + 1;}
    I1 = 20;

    case 20:
    if (Up_c == false) {I1 = 0;}
    }

    for (K = 0; K < 8; K++) {P10[K] = _P10[N1-1][K];}
    for (K = 0; K < 2; K++) {P1[K] = _P1[K];}
    for (K = 0; K < 2; K++) {P2[K] = _P2[K];}


    return 0;
    }


    Убрал из макроса все лишнее и оператор CASE начал работать верно.

    int MacroEntry()
    {
    static unsigned short I1 = 0;


    switch (I1){

    case 0:

    I1 = 5;
    break;

    case 5:
    ;
    break;

    case 10:
    if (N1 >= 3) {N1 = 1;} else {N1 = N1 + 1;}
    I1 = 20;

    case 20:
    if (Up_c == false) {I1 = 0;}
    }

    return 0;
    }

    В чем может быть причина ?

  2. #2

    По умолчанию

    Ничего в этом си непонимаю... А не то ли, что в первом примере ошибка какаято возникает раньше, чем присваиваете переменной 5, а во втором случае она позже... И не все переменные вроде определены...

  3. #3

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    Ничего в этом си непонимаю... А не то ли, что в первом примере ошибка какаято возникает раньше, чем присваиваете переменной 5, а во втором случае она позже... И не все переменные вроде определены...
    Часть переменных задана в конфигураторе панели. Оба кода компилируется без ошибок. У меня такое чувство что конфигуратор косячный.
    Последний раз редактировалось Newcomer; 05.05.2025 в 18:27.

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

    По умолчанию

    брэка в шаге 10 нету - это задумка такая?

  5. #5

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    брэка в шаге 10 нету - это задумка такая?
    Он не обязателен. Второй код же правильно работает.

  6. #6

    По умолчанию

    А в
    P10[K] = _P10[N1-1][K];

    P10 - это что?

  7. #7

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    А в
    P10[K] = _P10[N1-1][K];

    P10 - это что?
    Похоже на массив, но другой размерности... А вот это и ошибка походу, из-за которой макрос просто не работает...

    PS Хотя без описания переменных неясно (о чем я сначала и спрашивал). Может там в бул реал пытаются записать.
    Последний раз редактировалось МихаилГл; 06.05.2025 в 04:57.

  8. #8

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    А в
    P10[K] = _P10[N1-1][K];

    P10 - это что?
    Это массив.

  9. #9

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Это массив.
    Если объявить этот массив внутри кода макроса - тоже неправильно работает?

  10. #10

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Если объявить этот массив внутри кода макроса - тоже неправильно работает?
    Этот массив нужен для связи с визуальным элементом. Объявлять его внутри кода макроса бессмысленно.
    Изображения Изображения
    Последний раз редактировалось Newcomer; 06.05.2025 в 08:41.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Помогите с макросом для СП307
    от Name11 в разделе Панели оператора (HMI)
    Ответов: 6
    Последнее сообщение: 05.12.2024, 09:22
  2. Помогите с макросом на 1 кнопку и 2 выхода, пожалуйста.
    от Govorkoff в разделе Среда программирования OWEN Logic
    Ответов: 11
    Последнее сообщение: 05.03.2024, 10:54

Ваши права

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