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

 
 
> Вопрос по приёму 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
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 18)
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
Alex11
сообщение Sep 20 2016, 11:03
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Еще надо обратить внимание на размер буфера. По умолчанию он небольшой, но при создании сокета можно указать требуемый размер, чтобы Вам хватило на секунду приема данных.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 20 2016, 12:20
Сообщение #17


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

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



Цитата(Alex11 @ Sep 20 2016, 14:03) *
Еще надо обратить внимание на размер буфера. По умолчанию он небольшой, но при создании сокета можно указать требуемый размер, чтобы Вам хватило на секунду приема данных.

Спасибо за эти тонкости,передам программисту.
Go to the top of the page
 
+Quote Post
gosha-z
сообщение Sep 21 2016, 10:57
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 327
Регистрация: 30-10-05
Пользователь №: 10 288



А я слепой, или ТС не сказал слова Windows?
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 21 2016, 11:24
Сообщение #19


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

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



Цитата(gosha-z @ Sep 21 2016, 13:57) *
А я слепой, или ТС не сказал слова Windows?

Виноват,ключевое слово 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 Текстовая версия Сейчас: 22nd July 2025 - 11:43
Рейтинг@Mail.ru


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