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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> RS-232 на скоростях 115200 и х2
редактор
сообщение Jul 3 2015, 06:43
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 341
Регистрация: 9-06-07
Пользователь №: 28 315



Цитата
Даже если сформировать массив из 11520 байт и одной посылкой отправить с СОМ-порт, то все равно между передаваемыми байтами будут некоторые временные интервалы.

В зависимости от железа может составлять от 1 до 4-х битовых интервалов, без учета прочих временных задержек.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 3 2015, 07:32
Сообщение #17


Гуру
******

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



Цитата(Abrams @ Jul 3 2015, 12:38) *
Даже если сформировать массив из 11520 байт и одной посылкой отправить с СОМ-порт, то все равно между передаваемыми байтами будут некоторые временные интервалы.

Ню-ню... с чего бы это? Сказки рассказываете.
Интересно почему это у меня тогда получается между моим виндовым приложением и устройством получать 11520 б/сек? rolleyes.gif
Осциллограф развеет Ваши заблуждения.

Цитата(редактор @ Jul 3 2015, 12:43) *
В зависимости от железа может составлять от 1 до 4-х битовых интервалов, без учета прочих временных задержек.

А ещё - в зависимости от фаз луны. А скорее - кривости рук кодера.
Go to the top of the page
 
+Quote Post
rf_pcb
сообщение Jul 5 2015, 13:56
Сообщение #18


Участник
*

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



Жаль что никто не может внятно ответить кто виноват и как быть.
Какая же все таки скорость возможна при описанных условиях? 400 байт/с это же явно очень мало.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2015, 14:01
Сообщение #19


Гуру
******

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



QUOTE (rf_pcb @ Jul 5 2015, 16:56) *
Жаль что никто не может внятно ответить...

Вообще-то, на самом деле, это "кто-то" совершенно не хочет НИЧЕГО понимать из более чем внятных объяснений и рекомендаций sad.gif sad.gif sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rf_pcb
сообщение Jul 5 2015, 14:27
Сообщение #20


Участник
*

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



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


Гуру
******

Группа: Свой
Сообщений: 2 181
Регистрация: 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
rf_pcb
сообщение Jul 5 2015, 18:30
Сообщение #22


Участник
*

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



Ситуация понятна.
Изначально я ориентировался на опубликованные скорости, считая, что могу получить через порт требуемое количество ОБРАЩЕНИЙ (запись-чтение) за секунду с помощью программы, скомпилированной в Builder C++. Задача именно в этом и состоит - получить максимально возможное количество ОБРАЩЕНИЙ за секунду через порт посредством программных средств верхнего уровня.
Понятно, что драйвера и система Windows съели ресурс времени, потому я получаю с помощью своей программы совершенно смешное количество обращений через порт.
Я не такой специалист по железу, как некоторые местные гуру-пупки, программирую в Builder, потому не знаю многих тонкостей железа.
Ясно одно - реально расчёт количества ОБРАЩЕНИЙ за секунду через порт нельзя вести по стандартной формуле, которая дана в популярной литературе.
И для достижения заявленных характеристик порта для программы из Builder требуется "чистый", не загруженный Windows, и ещё чёрт знает чего...
Интересно, а в Линуксе такая же песня, как и в Windows, по моей задаче?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 6 2015, 05:07
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 3 297
Регистрация: 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
редактор
сообщение Jul 6 2015, 08:01
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 341
Регистрация: 9-06-07
Пользователь №: 28 315



Цитата
И в линухе и где угодно у Вас будут те же самые проблемы

В DOS возможно их не будет, если через прерывание и FIFO работать.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
rf_pcb
сообщение Jul 6 2015, 13:38
Сообщение #25


Участник
*

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



Цитата(jcxz @ Jul 6 2015, 09:07) *
Вы неспециалист не по железу, а неспециалист в программировании под винду.
Тут уже раз сто популярно разжевали.
Что посоветуете, как специалисты, почитать из книг по виндам относительно моей задачи?
Go to the top of the page
 
+Quote Post
редактор
сообщение Jul 7 2015, 06:19
Сообщение #26


Местный
***

Группа: Участник
Сообщений: 341
Регистрация: 9-06-07
Пользователь №: 28 315



Цитата
Задача именно в этом и состоит - получить максимально возможное количество ОБРАЩЕНИЙ за секунду

Почитайте про мультимедиа таймеры - разрешение до 1 мс обеспечивают. Если этого мало - Thread и PerformanceCounter может быть выжмут больше


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
V_G
сообщение Jul 7 2015, 10:04
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 706
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(rf_pcb @ Jul 6 2015, 23:38) *
Что посоветуете, как специалисты, почитать из книг по виндам относительно моей задачи?

Вы своей конечной задачи так и не описали. Судя по всему, она не состоит в передаче данных, т.к. про то, что нужно сделать для нормальной передачи и приема вплоть до 900 кбит/с, вам уже рассказали . Для какой задачи нужно считать число обращений к порту за секунду? Просто по максимуму загрузить проц? Просто учебная задача без внятного смысла?
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 16 2015, 16:15
Сообщение #28


Профессионал
*****

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



Цитата(rf_pcb @ Jul 6 2015, 16:38) *
Что посоветуете, как специалисты, почитать из книг по виндам относительно моей задачи?


Тут уже и намекали и впрямую советовали обратить внимание что пишите под виндой, а драйверы винды созданы с учетом пакетной работы устройств ввода-вывода, к коим относится и ком-порт, вы же пытаетесь размер пакета ужать до 1 символа, соотв. крайне нерационально используете данные вам методы. Если так уж прижало обмениваться по 1 байту, что считаю полным бредом, пишите свой драйвер под DDK или под досом, тогда получите прямой доступ к УАРТу и получите свои заветные скорости, даже на 1 байте...
Данный вопрос так же не актуален при программировании на микроконтроллерах...
Go to the top of the page
 
+Quote Post
Дмитрий_Б
сообщение Nov 22 2016, 17:05
Сообщение #29


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

Группа: Участник
Сообщений: 199
Регистрация: 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
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 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

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

 


RSS Текстовая версия Сейчас: 29th May 2017 - 05:51
Рейтинг@Mail.ru


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