|
DKW
|
|
STM32F407-lwip-sockets19.02.2014, 10:32. Показов 15889. Ответов 15
Метки нет (Все метки)
Связываю PC и STM32F407, подключаю через socket. Все работает, но, если разорвать коннект со стороны PC и опять законнектиться - STM32F407 не отвечает. Как проверять со стороны lwip (sockets) STM32F407, что коннект не разорван?
|
|
| 19.02.2014, 10:32 | |
|
Ответы с готовыми решениями:
15
Stm32f407 + Dp83848 + LWIP STM32F407+MICREL_KS8721BL+LwIP+UDP_Server/Client Одновременная работа LWIP и USB HS FreeRTOS STM32F407 |
|
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 115
|
|
| 19.02.2014, 12:12 | |
|
Можно периодические отправлять контрольные пакеты- определять отключение по ошибке.
Работа с RTOS или без? Максимальное количество клиентских сокетов какое задано? listen(sock, MAX_SOCKETS); Соединение через tcp? в lwipopts.h MEMP_NUM_TCP_PCB какое задано? На PC соединения с клиентского сокета открываются с одинакового номера порта или с разных? Даже после закрытия сокета структура TCP_PCB не освобождается,а помещается в TIME_WAIT состояние, для обработки пакетов которые могут прийти с задержкой. В этом состоянии она находится в течении 2х минут, слушая сообщения с адреса и порта клиента к которому была привязка. При нехватке TCP_PCB они могут принудительно выводиться из TIME_WAIT, до завершения таймаута. НО, для работы этой функции, новые соединения должны отличаться от старых, т.е происходить с другого номера клиентского порта.
0
|
|
|
DKW
|
|
| 19.02.2014, 12:55 | |
|
Работаю с Friirtos
MAX_SOCKETS= 5 Tcp MEMP_NUM_TCP_PCB = 10 С разных |
|
|
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 115
|
|
| 19.02.2014, 14:58 | |
|
Тогда показывайте как обработка новых соединений и чтение данных из сокета реализована
0
|
|
|
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 798
|
|
| 19.02.2014, 15:32 | |
|
не отвечает или не коннектится снова? у меня была фигня, что я не проверял код ошибки - вернее, я неправильно проверял, бо сокет там странные коды выдавал, все положительные и в полную кашу, критичные и некритичные - и просто не закрывал сокет, когда надо. В результате получалось подрубится только раз 5 или около того. Иногда вообще до странного доходило - можно было сколько угодно раз подключится с одного компа, в то же время другие компы уже не могли.
0
|
|
|
DKW
|
|
| 19.02.2014, 18:39 | |
|
Ммм... делаю так:
-коннектюсь с одного компа 192.xxx.xxx.xxx:1001; -с компа бросаю данные, STM принемает их и без обработки бросает обратно, но по USORT; -все ОК пока я не разорву связь на стороне PC. Повторно подключаюсь, но STM уже не видет коннект. Надо как-то проверять, что коннект существует. Когда разрываю коннект на STM программа на PC сразу выдает, что связь разорвана. Пример с диска (немного переделал) ктр пришел вместе с STM4F-BB. Могу бросить в почту если дадите. |
|
|
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 115
|
|
| 20.02.2014, 18:05 | |
|
otirt80 собака yomdex.ru
0
|
|
|
DKW
|
|
| 26.02.2014, 19:17 | |
|
Одну проблему решил, вроде. Поехали далее.
- открыто два сокета. С компа по каждому передаю и принимаю обратно (режим эха) какие-то данные, например: Tx | Rx | Tx | Rx сокет1 <-----> 1111 1111 2222 2222 сокет2 <-----> 3333 3333 4444 4444 все быстро и без накладок. - открываю третий сокет. Понеслось... Что-то происходит не то, первый признак, у меня крутится задача ктр мигает Led, так мигание прекращается и если запустить в отладчике то видно, что работает только задача последнего открытого сокета в др. задачи не залетает. Второе, передача/прием по сокетам (не-)работает ??? Например : Tx | Rx | Tx | Rx сокет1 <-----> 1111 2222 сокет2 <-----> 3333 3333 4444 по третьему сокету можно ни чего не делать, только открыть. Если закрыть сокет (любой) и оставить два, все опять работает, а потерянные (не переданные/не полученные) тут же после закрытия передаются. Подскажите куда посмотреть? Что изменить? Спасибо за помощь! |
|
|
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 115
|
|
| 26.02.2014, 21:31 | |
|
#define TCPIP_MBOX_SIZE попробовать увеличить до 100
в lwipopts.h включить #define LWIP_STATS 1 в основном коде вывести статистику stats_dysplay(); посмотреть, есть ли где ошибки. Запустить на компе wireshark, посмотреть есть ли ошибки по пакетам.
0
|
|
|
DKW
|
|
| 27.02.2014, 09:29 | |
|
Увеличил TCPIP_MBOX_SIZE - не помогло. Не понятно как выводить статистику, не работает ПО на STM32F407. Самое интересное, сто после открытия 3-ого сокета не происходит переключение задач (или неправильно переключаются), но данные переданные из PC по любому сокету не пропадают. Они возвращаюся назад в PC двумя способами:
1. разорвать 1 сокет; 2. начать передачу по любому др. сокету. Не знаю за что зацепиться, может FriiRTOS? |
|
|
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 115
|
|
| 27.02.2014, 12:23 | |
|
Для вывода статистики надо настроить в IDE, semihosting. В зависимости от IDE и дебаг адаптера появится возможность вывода stdout в окно IDE или терминала. Очень удобная штука.
0
|
|
|
DKW
|
|
| 27.02.2014, 14:57 | |
|
Я пользую Keil, не делал как Вы советуете. Как настроить, где посмотреть?
|
|
|
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 115
|
|
| 02.03.2014, 11:42 | |
|
Под keil не подскажу.
Пользовался CooCox, сейчас на EmBlocks перебрался.
0
|
|
|
0 / 0 / 0
Регистрация: 22.09.2010
Сообщений: 74
|
|||||||||||
| 12.06.2014, 11:52 | |||||||||||
|
Добрый день. у меня такой же вопрос. У меня проц stm32f207. Использую freertos и lwip. У меня есть один поток который работает как сервер. К нему подключается клиент. Так вот, как мне узнать что на той стороне клиент от меня отключился??? я бы тогда закрыл сокет и стал бы ждать нового подключения.
Вот так я жду подключения:
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 87
|
|
| 29.10.2014, 11:37 | |
|
Когда клиент закрываетСЯ )) срабатывает recv_callback, и если посмотреть статус твоего tcp_psb то он будет close_woyt. Далее понятно, по факту статуса закрываешь соединения со своей. стороны
0
|
|
|
DKW
|
|
| 17.11.2014, 14:04 | |
|
Всем Доброго дня.
Возникла следующая проблема. Проект написал, плату конструктор сделал и ж... Идут постоянные потери пакетов. Даже когда пингую идут разрывы. Догоняю, что проблемы с разводкой LAN8720, что можно сделать или где посмотреть. Обидно до соплей. |
|
| 17.11.2014, 14:04 | |
|
Помогаю со студенческими работами здесь
16
[РЕШЕНО] STM32F407+LSM303C, STM32F407 (дискавери) LwIP http без LwIP стека STM32F407 RTOS+ lwip sockets+lwip+atmega2560 LWIP Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
|
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
На примере нетипового документа разработанного в конфигурации КА2.
В качестве источника данных указан регистр накопления, в который записываются данные о. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|