Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 21 по 30 из 54

Тема: СПК1хх & Сокеты

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Супер! Теперь осталось понять, почему она хреново работает.

    Я складываю свою строку из многих компонентов.
    Вот код:
    Код:
    sDataSend := '{"calibr_unit":10,"data":{"cmd":"add_launch","algoritm":"';          // уникальный номер стенда
    sDataTEMP := 'Test';                                                                                        // уникальное имя алгоритма
    STU.StrConcatA(ADR(sDataTEMP), ADR(sDataSend), 10000);                             // сначала кусок для прибавления, потом то, к чему нужно прибавить.
    Получаю нормальную склейку:
    Безымянный121212.png

    А далее:
    Код:
    sDataTEMP := '2022-12-05 12:00:00';                                                              // дата/время
    STU.StrConcatA(ADR(sDataTEMP), ADR(sDataSend), 10000);
    Что тут:
    Безымянный44444.png

    Почему так?

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,619

    По умолчанию

    Выложите простейший проект (без сервера, CASE и т.д.), в котором я смогу повторить проблему.

  3. #3

    По умолчанию

    Проблема создать простейший проект.
    Удалил визуализацию и получил кучу ошибок. Мол, нету визуализации.
    Ну неужели нельзя сделать проект для СПК без использования визуализации?

    Буду делать еще раз.

  4. #4

    По умолчанию

    Готово: DropMeFiles – бесплатный файлообменник без регистрации

    Проблема проявляется и в этом проекте.

  5. #5
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,619

    По умолчанию

    Вы указываете функции, что у вас размер буфера - 10000 байт, но в реальности под указатель подкладываете переменную типа STRING, которая занимает 81 байт
    (по умолчанию - если макс. размер строки не указан - выделяется память под 80 символов + терминирующий ноль).
    Поэтому у вас переполнение буфера происходит.

    Сделайте так:

    Код:
    ...
    sDataSend : STRING(10000);
    ...

  6. #6

    По умолчанию

    Да. Действительно заработало. Кто бы мог подумать про гребанную строку длинной в 10к символов?!

    Теперь другая проблема: у меня не открывается клиент.
    Но тут, наверное, мне нужно более фундаментально подойти к проблеме.
    Мне кажется, что я вообще не догоняю как строить эти программы.

  7. #7

    По умолчанию

    Вот можно открыть сокет так:

    Код:
    
    CASE bState OF
        05: // Формируем строку для отправки
              // Тут мы уже разобрались, оказывается надо строку делать с длинной в 10к символов.
            bState := 10;
        10: // создаем TCP-клиента
            fbTcpClient(xEnable:=TRUE, udiTimeOut:=1000, ipAddr:=stIpServer, uiPort:=uiPortServer);
            IF fbTcpClient.xActive THEN
                bState := 20;
            ELSIF bTries > 10 OR fbTcpClient.xError THEN
                bError := 10; // код шага, где произошла ошибка
                xError := TRUE; // флаг ошибки
                bState := 50; // Выход из автомата шагов
            END_IF
        20: ... // Другие шаги, через неделю до них дойдем.

  8. #8

  9. #9

    По умолчанию

    Вот такой вопрос.
    Я открываю сокет и даю время на его открытие 10 секунд.
    Но программа сразу же мне выдает ошибку TIME_OUT.
    Что я делаю не так?
    Безымянный777777.png

    Получается, что ФБ TcpClient подымает флаг xError и причина этого флага лежит в eError? Их надо контролировать?
    Последний раз редактировалось ВладОвен; 06.12.2022 в 17:08.

  10. #10
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,619

    По умолчанию

    Я открываю сокет и даю время на его открытие 10 секунд.
    Вы ошибаетесь. Таймаут задается в микросекундах.

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя

Похожие темы

  1. UDP + Python + сокеты
    от БугиВуги в разделе Сетевые технологии
    Ответов: 0
    Последнее сообщение: 08.05.2020, 12:17
  2. PLC 110-30 v2 & сокеты
    от lazy в разделе ПЛК1хх [М02]
    Ответов: 50
    Последнее сообщение: 23.11.2018, 15:26
  3. ПЛК100 2.17 не работают сокеты
    от murdemon в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 02.07.2018, 21:15
  4. ПЛК100 + Сокеты
    от ribamuka в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 30.08.2017, 11:55
  5. Возможно ли в режиме эмуляции Codesys тестировать работу через сокеты TCP
    от Денис Бердяев в разделе Сетевые технологии
    Ответов: 2
    Последнее сообщение: 09.10.2014, 07:23

Ваши права

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