Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 23

Тема: Пустые входящие пакеты по UDP

  1. #1

    По умолчанию Пустые входящие пакеты по UDP

    Hi
    Создали модбас сервер на ПЛК 100 через GPRS соединение по UDP.
    Возникла проблема. Принимаем запросы длинной 12байт (истинная длина запроса), но в приемном буфере одни нули.
    Используем функцию SysSockRecvFrom(). вопрос как победить, куда копать, может кто уже победил.????

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    победителей то много, а где вложение, телепатия на этом форуме не приветствуется
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #3

    По умолчанию

    Извиняемся. Проект тестовый, много барахла. plc100-modem-test.pro

  4. #4

    По умолчанию

    при выполнении кода чему равен Client.diSocket? и diSocket?

  5. #5

    По умолчанию

    Цитата Сообщение от lazy Посмотреть сообщение
    при выполнении кода чему равен Client.diSocket? и diSocket?
    Но у нас в проекте нет переменных Client, но SysSockBind возвращает TRUE и сокет = 16.
    Этим же сокетом отсылаю тестовые данные после SysSockRecvFrom, отсылает нормально.
    На PC приходит udp пакет.

  6. #6

    По умолчанию

    ЗдОрово! а это откуда?

    IF Client.diSocket = -1 THEN
    Client := TcpServerWaitForConnect(diSocket,100);
    END_IF

    IF Client.diSocket <> -1 THEN
    TcpReceiveData(Client.diSocket, ADR(byRecv), SIZEOF(byRecv), 1000);
    TcpSendData(Client.diSocket, ADR(bySend), SIZEOF(bySend), 1000);
    END_IF

    IF bCloseClient THEN
    bCloseClient := FALSE;
    SysSockClose(diSocket:=Client.diSocket);
    Client.diSocket := -1;
    END_IF

    кста SysSockRecvFrom в проектие не нашел )

    PS: дошло, не тот PRG смотрю )
    Последний раз редактировалось lazy; 20.08.2015 в 16:06.

  7. #7

    По умолчанию

    не помню по какой причине но я пишу ADR(R3_BUF[0])

  8. #8

    По умолчанию

    Цитата Сообщение от lazy Посмотреть сообщение
    не помню по какой причине но я пишу ADR(R3_BUF[0])
    Пробовал и этот вариант, то же самое происходит. Перед вызовом SysSockRecvFrom прописывал в буфер "мусор".
    Происходит очищение буфера на количество байт возвращенных функцией SysSockRecvFrom.

  9. #9
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    а как прокомментируете эти две строчки
    bytes_received := SysSockRecvFrom(sock, ADR(R3_BUF), 36, 0, ADR(cln_adr), SIZEOF(cln_adr));
    и если bytes_received больше нуля внутри
    mbas_inPLC(S_BUF:= S_BUF, R2_BUF:=R2_BUF , DATA:= DATA, ERROR=> ERROR);
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #10

    По умолчанию

    Извините , не понял что именно прокоментировать. Если Вы о разных буферах приема SysSockRecvFrom(sock, ADR(R3_BUF).... и передачи этого буфера в mbas_inPLC(S_BUF:= S_BUF, R2_BUF:=R2_BUF ... то это след эксперимента.
    Я смотрю приёмный буфер R3_BUF в отладчике. mbas_inPLC сейчас не использует приёмный буфер.
    Последний раз редактировалось Nikosoff; 21.08.2015 в 09:45.

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

Похожие темы

  1. UDP и SysLibSockets.lib
    от cer_cer в разделе ПЛК1хх
    Ответов: 26
    Последнее сообщение: 29.01.2016, 17:39
  2. Обмен через UDP
    от maks-tver в разделе Сетевые технологии
    Ответов: 29
    Последнее сообщение: 01.01.2015, 03:04
  3. ПЛК UDP сервер
    от PhilipLykov в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 07.03.2012, 12:53
  4. Проблема с UDP
    от Andrey в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 24.08.2007, 09:48

Ваши права

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