реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
mantech
сообщение Oct 25 2016, 12:16
Сообщение #16


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Pridnya @ Oct 24 2016, 11:32) *
Сергей Фетисов через USB работает по WEB-интерфейсу. Его пример рабочий, использует LwIP, Я его код проверял в работе на STM32F4DISCOVERY. Или его же Ethernet поверх USB на STM32F4.


Сорри за оффтоп, не понял, зачем это нужно вообще, вот интересно было б посмотреть на обратный пример (USB over Ethernet) rolleyes.gif
Go to the top of the page
 
+Quote Post
Pridnya
сообщение Oct 31 2016, 11:01
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159



Цитата(mantech @ Oct 25 2016, 15:16) *
Сорри за оффтоп, не понял, зачем это нужно вообще, вот интересно было б посмотреть на обратный пример (USB over Ethernet) rolleyes.gif

Чтобы управлять через WEB-интерфейс устройствами с интерфейсом USB. Один человек хорошо знает WEB, второй написал прокладку для управления через WEB-интерфейс какой-либо платформой без Ethernet MAC и PHY, только через USB.

Цитата(Сергей Борщ @ Oct 24 2016, 13:00) *
Если у вас в программе была поддержка DHCP, то UDP-сервер и UDP-клиент, работающие одновременно с вашим TCP-сервером, у вас были. Странно, что вы этого не заметили. После этого слабо верится в:

Я нигде не упоминал, что у меня была поддержка DHCP.
Go to the top of the page
 
+Quote Post
Pridnya
сообщение Nov 3 2016, 07:59
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159



Цитата(kolobok0 @ Oct 25 2016, 03:03) *
1) можно, не будет. т.к. см. выше моё предыдущий пост. Или скажем по другому => в RFC если это не запрещено - то однозначно МОЖНО.
2) пишется обработчик и разбор одного протокола, потом второго. Можно взять кота в мешке, тьху готовый серый ящик. Можно сделать его прозрачным,
можно вообще по мотивам написать более скоростной и компактный - тут поле для творчества вагон и маленькая кружка.
3) Ваш проект (с точки зрения наполнения логикой) очень и очень прост. Кстати совет дня (попробуйте написать модбас сервер, чтоб можно потом только декларотивно добавлять сколько
угодно функций-адресов) Поверьте - у Вас много кода сократиться... wink.gif

я всё правильно ответил на поставленные Вами вопросы?
только боюсь Вам от этого вряд-ли полегчало...

удачи Вам
(круглый)

Можно было так с самого начала и написать.
На счет Modbus: я примерно к этому и пришел, вот кусочек для ModbusRTU, он упрощает процесс: достаточно добавить в файл новую функцию и зарегистрировать её в таблице:
Код
// *************************************************************************** //
typedef  uint16_t  (* FUNC)(int8_t *Buf);

typedef struct {
    int8_t const idx; // Индекс функции таблице.
    int8_t const cmd; // Код функции.
    FUNC    func;     // Функция.
}COMMAND;
// *************************************************************************** //
uint16_t Exception(int8_t *Buf);
uint16_t WriteMultipleRegisters(int8_t *Buf);
uint16_t ReadHoldingRegisters(int8_t *Buf);

// Индекс, код функции, функция.
const COMMAND    cmds[] =
    {
    { 0, 0x00, Exception},   // Функция не поддерживается.
    { 1, 0x03, ReadHoldingRegisters},  // Чтение регистров.
    { 2, 0x10, WriteMultipleRegisters},  // Запись регистров.
};
// *************************************************************************** //
void Process(int8_t *Buf)
{  
    int8_t code = Buf[1];       // Код функции.
    int8_t i = FindIdx(code);   // Индекс.
    ...
    Size = cmds[i].func(Buf);
    ...
}
// *************************************************************************** //


Всем спасибо! Т.е. запустить на одном микроконтроллере TCP-сервер и UDP-клиент можно и примеры есть.

Сообщение отредактировал Pridnya - Nov 3 2016, 08:02
Go to the top of the page
 
+Quote Post
Pridnya
сообщение Nov 3 2016, 12:10
Сообщение #19


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159



Оказалось все проще простого: достаточно добавить два файла:
udp_client.h
void udp_echoclient_connect(void); // с прототипом функции

udp_client.c
с двумя функциями (функции из примера udp_echo_client):
void udp_echoclient_connect(void){...}
void udp_receive_callback(...){...}

В настройках проекта указать IP-адрес и порт UDP-сервера на стороне компьютера (IP=192.168.1.10, #define UDP_SERVER_PORT 7).

В файле main.c (или в любом другом) периодически, например через 4 секунды, вызываем функцию void udp_echoclient_connect(void);

Собираем проект, прошиваем микроконтроллер.
На стороне компьютера запускаем:
1) для проверки работы UDP-клиента в командной строке программу echotool с параметрами: echotool.exe /p udp /s 7
2) для проверки работы ModbusTCP-сервера - любой ModbusTCP-клиент (соединяемся с IP 192.168.1.101, TCP-порт 502).
Оба работают и не мешают друг другу.

Остался вопрос: как теперь заменить UDP-клиент на SNTP-клиент (SNTP-клиент работает как UDP-клиент, но есть свои особенности).
Эскизы прикрепленных изображений
 Р В Р’ Р’ Р в‚¬Р В РЎВ˜Р В Р’µР Р…ьшено Р Т‘Р С• 74%
Прикрепленное изображение
669 x 338 (29.88 килобайт)
 Р В Р’ Р’ Р в‚¬Р В РЎВ˜Р В Р’µР Р…ьшено Р Т‘Р С• 78%
Прикрепленное изображение
761 x 505 (28.44 килобайт)
 
Go to the top of the page
 
+Quote Post
krounis
сообщение Jan 25 2018, 11:03
Сообщение #20





Группа: Новичок
Сообщений: 2
Регистрация: 25-01-18
Пользователь №: 101 278



Цитата(Pridnya @ Oct 21 2016, 13:10) *
Всем привет!

Проект без операционной системы с LwIP-стеком (low-level "core" / "callback" or "raw" API) на одном микроконтроллере (основная программа + TCP-сервер (Modbus TCP)), работает.

Меня интересует, можно ли в этот проект добавить еще и UDP-клиент (SNTP-клиент) и не будет ли TCP-сервер конфликтовать с UDP-клиентом?
По отдельности TCP-сервер работает, UDP-клиент работает, а как все вместе совместить (в проект c TCP-сервером добавить UDP-клиент)? Я еще с такой задачей не сталкивался, поэтому сильно не ругайте.

Если что, то в качестве PHY используется LAN8720A, разъем RJ45 один, проект на STM32, но микроконтроллер пока не важен, меня интересует сама возможность совмещения серера и клиента.

Извините за некропостинг, но не могли бы вы скинуть мне проект без операционной системы с LwIP-стеком Raw API на МК. У меня stm32 nucleo-f767zi и как раз стоит подобная задача, никак не могу разобраться. Заранее спасибо!
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th July 2025 - 11:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01405 секунд с 7
ELECTRONIX ©2004-2016