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

 
 
> RS-232 на скоростях 115200 и х2
rf_pcb
сообщение Jun 30 2015, 12:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 16-02-11
Пользователь №: 63 037



Прошу дать совет и прокоментировать мои рассуждения.
Пишу ПО по для приема данных от МК на скорости 115200 по интерфейсу RS-232.
В качестве простейшего теста ставлю на ПК перемычку между Rx и Tx.
1 байт, 1 стоп, без четности и всего остального.
Если я правильно понимаю я должен увидеть скорость приема близкую к 7200 байт/с (115200/8/2).
Пишу ПО в Билдере, использую стандартный API функции, но скорость вижу от 200 до 400 байт /с.
Пробовал с выводом на график и с записью в фаил и просто из памяти в фаил, но больше чем 400 байт /с не получил.
Заметил особенность что на XP и 7ке разные скорости.
Подскажиет как быть?
Получу я свои 7200? ну хоть 5000 байт/с?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rf_pcb
сообщение Jul 5 2015, 14:27
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 16-02-11
Пользователь №: 63 037



Zltio, ну вот вы скажите, сколько реально получить скорость при описанной ситуации?
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jul 5 2015, 15:06
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(rf_pcb @ Jul 5 2015, 17:27) *
Zltio, ну вот вы скажите, сколько реально получить скорость при описанной ситуации?

Неизвестны условия работы, так что неизвестен результат.
Если пользоваться на незагруженной машине и компилировать с помощью граммотно написанных примочек (напроимер, для C++Билдера встроенные либы не годятся, нужно внешние подключать) - то при передаче пакета увидете 115200. Да и то, все может упереться в размер аппаратного буфера порта.
При передаче отдельных байт- скорее всего, увиденные Вами 200-400 байт в секунду и будут пределом, зависит от сотни причин.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 6 2015, 05:07
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ruslan1 @ Jul 5 2015, 21:06) *
передаче пакета[/b] увидете 115200. Да и то, все может упереться в размер аппаратного буфера порта.

Никуда не упрётся. Поднимаете хоть до 921600 бод - при грамотной работе через WinAPI без всяких левых библиотек запросто получается скорость 92160 б/сек.
Обмен с функциями WinAPI конечно в отдельном треде (даже - 3-х отдельных тредах: отдельный для RX, для TX и для обработки событий порта WaitCommEvent()), а не в main-треде приложения.

Цитата(rf_pcb @ Jul 6 2015, 00:30) *
Я не такой специалист по железу, как некоторые местные гуру-пупки, программирую в Builder, потому не знаю многих тонкостей железа.

Вы неспециалист не по железу, а неспециалист в программировании под винду.
Тут уже раз сто популярно разжевали.

Цитата(rf_pcb @ Jul 6 2015, 00:30) *
Интересно, а в Линуксе такая же песня, как и в Windows, по моей задаче?

И в линухе и где угодно у Вас будут те же самые проблемы laughing.gif
Go to the top of the page
 
+Quote Post
Дмитрий_Б
сообщение Nov 22 2016, 17:05
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 25-10-09
Пользователь №: 53 195



Цитата(jcxz @ Jul 6 2015, 09:07) *
Обмен с функциями WinAPI конечно в отдельном треде (даже - 3-х отдельных тредах: отдельный для RX, для TX и для обработки событий порта WaitCommEvent()), а не в main-треде приложения.

Интересно, почему простой синхронный обмен в потоке основной программы не годится?
Если нет необходимости выполнять какие-либо операции в процессе ожидания получения данных, то какой смысл создавать новый поток? Почему просто не подождать, пока ReadFile не вернет управление основной программе?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 22 2016, 17:25
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Дмитрий_Б @ Nov 22 2016, 19:05) *
Почему просто не подождать, пока ReadFile не вернет управление основной программе?

Если у Вас одна единственная программа во всем компьютере, то можете и ждать sm.gif и не пущать никого пока не отберут время силой. Ну а по хорошему надо отдавать ненужное время добровольно.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Дмитрий_Б
сообщение Nov 22 2016, 20:19
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 25-10-09
Пользователь №: 53 195



Цитата(zltigo @ Nov 22 2016, 21:25) *
Если у Вас одна единственная программа во всем компьютере, то можете и ждать sm.gif и не пущать никого пока не отберут время силой. Ну а по хорошему надо отдавать ненужное время добровольно.

Если верить Microsoft, то это как раз не так. ReadFile в не-overlapped (синхронном) режиме приостанавливает вызвавший ее поток на время получения данных. Во время ожидания другие потоки получают возможность работать.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- rf_pcb   RS-232 на скоростях 115200 и х2   Jun 30 2015, 12:05
- - jcxz   Цитата(rf_pcb @ Jun 30 2015, 18:05) Если ...   Jun 30 2015, 12:21
- - rf_pcb   115200/9/2=6400 Скорость приема. Скорее такой пара...   Jun 30 2015, 12:24
- - Gorby   Цитата(rf_pcb @ Jun 30 2015, 16:05) Прошу...   Jun 30 2015, 12:28
- - rf_pcb   Подскажите пожалуйста какие функции Вы используете...   Jun 30 2015, 17:42
- - rf_pcb   В программе использую поток - выставляю максимальн...   Jun 30 2015, 20:23
|- - kolobok0   Цитата(rf_pcb @ Jun 30 2015, 23:23) ...(1...   Jul 1 2015, 06:25
- - Сергей Борщ   Отсылайте сразу килограмм символов, после чего при...   Jul 1 2015, 05:54
- - rf_pcb   Прошу меня услышать. Я спросил, как мне передавая ...   Jul 1 2015, 07:23
|- - zltigo   QUOTE (rf_pcb @ Jul 1 2015, 10:23) В реша...   Jul 1 2015, 07:32
- - rf_pcb   может и угадали)) Сейчас я тестирую с перемычкой ...   Jul 1 2015, 11:30
|- - jcxz   Цитата(rf_pcb @ Jul 1 2015, 17:30) Откуда...   Jul 1 2015, 16:41
||- - zltigo   QUOTE (jcxz @ Jul 1 2015, 19:41) ... поци...   Jul 2 2015, 05:11
|- - Abrams   Цитата(rf_pcb @ Jul 1 2015, 14:30) может ...   Jul 3 2015, 06:38
|- - jcxz   Цитата(Abrams @ Jul 3 2015, 12:38) Даже е...   Jul 3 2015, 07:32
- - soldat_shveyk   Уважаемый rf_pcb, Вы попробуйте проделать один про...   Jul 1 2015, 19:08
- - редактор   ЦитатаДаже если сформировать массив из 11520 байт ...   Jul 3 2015, 06:43
- - rf_pcb   Жаль что никто не может внятно ответить кто винова...   Jul 5 2015, 13:56
|- - zltigo   QUOTE (rf_pcb @ Jul 5 2015, 16:56) Жаль ч...   Jul 5 2015, 14:01
|- - zltigo   QUOTE (Дмитрий_Б @ Nov 22 2016, 22:19) Ес...   Nov 23 2016, 09:14
|- - Дмитрий_Б   Цитата(zltigo @ Nov 23 2016, 13:14) Вы же...   Nov 23 2016, 15:31
- - rf_pcb   Ситуация понятна. Изначально я ориентировался на о...   Jul 5 2015, 18:30
- - редактор   ЦитатаИ в линухе и где угодно у Вас будут те же са...   Jul 6 2015, 08:01
- - rf_pcb   Цитата(jcxz @ Jul 6 2015, 09:07) Вы неспе...   Jul 6 2015, 13:38
|- - V_G   Цитата(rf_pcb @ Jul 6 2015, 23:38) Что по...   Jul 7 2015, 10:04
|- - mantech   Цитата(rf_pcb @ Jul 6 2015, 16:38) Что по...   Aug 16 2015, 16:15
- - редактор   ЦитатаЗадача именно в этом и состоит - получить ма...   Jul 7 2015, 06:19
- - Дмитрий_Б   Могу только подтвердить, что чтение в отдельном по...   Nov 25 2016, 15:30


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

 


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


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