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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Вопрос по приёму Ethernet в РС
_Anatoliy
сообщение Sep 17 2016, 08:49
Сообщение #1


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Есть самодельный девайс который связан с РС кабелем гигабитного эзернета,протокол UDP. РС отсылает девайсу команду "старт" и девайс начинает отправлять в РС пакеты с данными пока не придёт команда "стоп". Минимальный интервал между отсылаемыми пакетами - 1мс, максимальный интервал не определён - пакеты отсылаются по мере накопления данных. Наш программист в ступоре, он привык работать в режиме запрос-ответ с применением поллинга. Можно ли выполнить такой алгоритм на РС?
Go to the top of the page
 
+Quote Post
1113
сообщение Sep 17 2016, 08:51
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 24-02-06
Из: Москва
Пользователь №: 14 658



замените программиста
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 17 2016, 09:04
Сообщение #3


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(1113 @ Sep 17 2016, 11:51) *
замените программиста

Это нереально.А по сути что нибудь можете посоветовать? Как без поллинга узнать что нужный пакет пришёл?
Go to the top of the page
 
+Quote Post
1113
сообщение Sep 17 2016, 09:06
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 24-02-06
Из: Москва
Пользователь №: 14 658



вам нужно с поллингом или без поллинга?
насколько мне представляется механизм сокетов, ваше приложение может периодически обращаться к приёмному буферу и по ответу видеть - есть пакеты или нет пакетов. как часто это делать - ваше дело. хоть раз в час, если размер приёмного буфера PC позволяет накапливать данные за это время
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 17 2016, 09:19
Сообщение #5


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(1113 @ Sep 17 2016, 12:06) *
вам нужно с поллингом или без поллинга?
насколько мне представляется механизм сокетов, ваше приложение может периодически обращаться к приёмному буферу и по ответу видеть - есть пакеты или нет пакетов. как часто это делать - ваше дело. хоть раз в час, если размер приёмного буфера PC позволяет накапливать данные за это время

Спасибо! Т.е. ничего неестественного в таком алгоритме нет? Интересно, а как долго принятые пакеты могут находиться в приёмном буфере РС без обработки? Меня бы очень устроило забирать из буфера все пришедшие пакеты сразу с интервалом в 1 секунду. Так можно сделать?
Go to the top of the page
 
+Quote Post
1113
сообщение Sep 17 2016, 09:22
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 24-02-06
Из: Москва
Пользователь №: 14 658



раз в секунду - это не то время, о котором нужно беспокоиться
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 17 2016, 09:32
Сообщение #7


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(1113 @ Sep 17 2016, 12:22) *
раз в секунду - это не то время, о котором нужно беспокоиться

А можете чуть развернуть тему? Значит без обработки принятые пакеты будут спокойно лежать во входном буфере пока программа их не заберёт? Я же не программист РС и этих нюансов не знаю.
Go to the top of the page
 
+Quote Post
1113
сообщение Sep 17 2016, 09:34
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 24-02-06
Из: Москва
Пользователь №: 14 658



да
Go to the top of the page
 
+Quote Post
blackfin
сообщение Sep 17 2016, 09:37
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(_Anatoliy @ Sep 17 2016, 12:04) *
Как без поллинга узнать что нужный пакет пришёл?

Использовать GetOverlappedResult.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 17 2016, 09:54
Сообщение #10


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(1113 @ Sep 17 2016, 12:34) *
да

Спасибо! Значит в понедельник буду напрягать программиста.
beer.gif
p.s. Вы такой разговорчивый...

Цитата(blackfin @ Sep 17 2016, 12:37) *
Использовать GetOverlappedResult.

Спасибо за направление! Но эта функция вроде работает с файлами, или нет?
Go to the top of the page
 
+Quote Post
blackfin
сообщение Sep 17 2016, 10:08
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(_Anatoliy @ Sep 17 2016, 12:54) *
Спасибо за направление! Но эта функция вроде работает с файлами, или нет?

Вашему программисту следует почитать документацию на Winsock2.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 17 2016, 10:19
Сообщение #12


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Всем большое спасибо за помощь!
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Sep 17 2016, 14:49
Сообщение #13


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



Советую посмотреть на python , я вооооообще в программировании не волоку , но интереса ради и от скуки , лёжа в больнице за полчаса (потому что тормоз) сделал по примерам из инета клиент - сервер приложение, UDP обмен без запросов, а прям как вам надо.
Вроде что-то похожее на это : http://snakeproject.ru/rubric/article.php?...k_server_client

https://habrahabr.ru/post/149077/


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 19 2016, 06:12
Сообщение #14


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(Lmx2315 @ Sep 17 2016, 17:49) *

Да, python вещь хорошая, но это совсем другая история.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Sep 19 2016, 17:33
Сообщение #15


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(_Anatoliy @ Sep 19 2016, 09:12) *
...другая история.


под форточками можно как угодно. Если ему нравится поллинг - пускай делает _beginthread(...) и поллит в отдельном потоке. Правда 100% процессорного времени будет жрать. Если, как тут уже прозвучало выше,
сделать нормальный вэйтинг (в этом отдельном потоке) на WSA событийном хэндлере сокета, то и будет дёргаться лишь в тот момент когда что то свалилось из сети. Далее тупое чтение и разбор. ну понятно что механизм масштабирования
сразу заводим, автомат разбора и анализа загрузки - чтоб оно само подстраивалось под нагрузку.

короче говоря - программисту учиться.
Можно начать с Рихтора "Windows для профессионалов" плюс МСДН. Разделы синхронизации, объекты ядра. А МСДН - сокеты, оверлапед режим.

(круглый)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 17th June 2025 - 05:07
Рейтинг@Mail.ru


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