Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Delphi и WinAPI

Войти
Регистрация
Восстановить пароль
 
 
MrTimmy
0 / 0 / 0
Регистрация: 05.11.2016
Сообщений: 8
#1

Скорость COM порта - Delphi WinAPI

05.11.2016, 18:05. Просмотров 1065. Ответов 21
Метки нет (Все метки)

Здравствуйте.

Ситуация такая. Налаживаю общение по UART между ПК и МК. Все делал на одном компьютере и вроде все шло хорошо пока не перешел на другой. Тут начались проблемы:

При чтении порта скорость в 2КК как бы задается если судить по соответствующему параметру, но на деле все печальнее. Замерял время посылки большого пакета и выходит примерно скорость не превышает 250К (т.е. при 2КК время примерно 15 секунд на пакет и при 250К то же значение).

На другом компьютере такого не замечено (Первый ПК на Win10 второй на Win7 если это критично).

В чем может быть беда (пишу на Delphi XE8)?

З.Ы. Я новичок не грузите терминами плиз =)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2016, 18:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Скорость COM порта (Delphi WinAPI):

спецификация COM порта - Delphi
Такая фишка. На Ком порту 2 проводка соеденены. Если их соединения размыкается, то мне нужно вывести какое нить сообщение. Кто нибудь...

Отслеживание 80 порта - Delphi
Помогите тогда вот с чем. Как мне сделать так, чтобы когда пользователь запускает Internet и нажал на кнопку коннект, отслеживать, куда...

Эмулятор COM порта - Delphi
Всем привет... Мне нужен эмулятор COM порта. Может у кого то есть скиньте пожайлуста, мне ссилку в Интернете, а то я ни как не могу...

Ввод из COM порта - Delphi
Подскажите, как правильно осуществить ввод из COM-порта - дело в том, что когда данных в буфере порта нет, функция ReadFile (Windows API)...

Программная перезагрузка COM порта - Delphi WinAPI
Есть кассовый аппарат, подключаемый к ПК посредством порта. Кассиры как-то умудряются загнать аппарат(или порт) до такой степени, что...

Неправильное чтение COM-порта - Delphi WinAPI
День добрый, Столкнулся с непонятной для меня проблемой, пишу программу для обработки данных со сканера штрих-кодов, данные со штрих-кода...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
northener
3089 / 2146 / 442
Регистрация: 15.07.2013
Сообщений: 12,539
16.11.2016, 02:23 #16
Цитата Сообщение от MrTimmy Посмотреть сообщение
не могли бы пояснить в чем причина столь долгой отправки байта?
Что значит "долгая отправка байта"?
Байты как раз отправляются как им и положено без всяких проблем. Вот многобайтовые посылки действительно отправляются "как Винда захочет". И замечено это должно было быть на любом компьютере с ОС Windows.
0
MrTimmy
0 / 0 / 0
Регистрация: 05.11.2016
Сообщений: 8
16.11.2016, 17:57  [ТС] #17
Цитата Сообщение от northener Посмотреть сообщение
Что значит "долгая отправка байта"?
В цикле была забита отправка 1 байта. Время выполнения 1 цикла если точнее то 0,1 мс.
Не думаю что это нормальная скорость передачи.

Должно же быть адекватное объяснение такой задержки на выполнение функции.

З.Ы. Со стороны МК все работает отлично, во всяком случае отправляет все на заявленной скорости.
0
northener
3089 / 2146 / 442
Регистрация: 15.07.2013
Сообщений: 12,539
16.11.2016, 19:22 #18
Так Винда всё-таки не ОС реального времени. У нее много всякой другой работы кроме этого цикла.
0
MrTimmy
0 / 0 / 0
Регистрация: 05.11.2016
Сообщений: 8
16.11.2016, 21:06  [ТС] #19
Цитата Сообщение от northener Посмотреть сообщение
Так Винда всё-таки не ОС реального времени. У нее много всякой другой работы кроме этого цикла.
Причем тут реального времени или нет. Это просто посылка без каких либо отчетов о передачи.
Судя по вашему ответу можно сказать, что на флешку информация должна кидаться днями если не месяцами, ведь у системы есть БОЛЕЕ важные задачи.
Ну и прием информации идет каким то магическим образом без задержек, на это видимо нет необходимости затрачивать ресурсы системы.

Думаю на этом тему можно закрывать. Если люди имеющие представление о данном вопросе имеются то они явно не заглядывали в эту тему.
0
northener
3089 / 2146 / 442
Регистрация: 15.07.2013
Сообщений: 12,539
17.11.2016, 01:28 #20
Цитата Сообщение от MrTimmy Посмотреть сообщение
Причем тут реального времени или нет. Это просто посылка без каких либо отчетов о передачи.
Дело не в посылке, а в цикле. Сама то посылка занимает ровно столько положено. А вот между двумя соседними вызовами WriteFile проходит сколько-то времени.

А прием тут ни при чем. Принимает данные сначала микросхема, затем драйвер. Так что тут задержкам взяться неоткуда.

Добавлено через 2 часа 54 минуты
Цитата Сообщение от MrTimmy Посмотреть сообщение
Думаю на этом тему можно закрывать.
Темы на этом форуме закрывают только при нарушении правил форума. А вот обсуждение её действительно стоит прекратить до той поры пока вы не вникните достаточно глубоко в принципы работы современных многозадачных операционных систем типа Windows.

Не по теме:

P.S.
Пишу программы для микропроцессоров и программы для связи с ними РС с начала 90-х.

P.P.S.
И кстати. Теоретически копирование на флешку в цикле по одному байту за итерацию цикла действительно может

Цитата Сообщение от MrTimmy Посмотреть сообщение
кидаться днями если не месяцами!
Примите и прочь.

0
MrTimmy
0 / 0 / 0
Регистрация: 05.11.2016
Сообщений: 8
17.11.2016, 08:35  [ТС] #21
Цитата Сообщение от northener Посмотреть сообщение
Дело не в посылке, а в цикле.
Причем тут цикл если измерение времени на посылку проводятся внутри тела цикла, и к тому же БЕЗ ЭТОЙ функции почему то задержек нет. Следовательно задержка реализована внутри функции, а не в цикле.

Цитата Сообщение от northener Посмотреть сообщение
Сама то посылка занимает ровно столько положено.
Судя по вашей логике передача 1 байта за 0,1 мс в современной технике это норма.

Цитата Сообщение от northener Посмотреть сообщение
Принимает данные сначала микросхема, затем драйвер. Так что тут задержкам взяться неоткуда.
Ага времени на чтение не нужно, учитывая что буфер приема постоянно перезаписывается. Как же вы умудряетесь что-то прочитать то без задержек.

Цитата Сообщение от northener Посмотреть сообщение
А вот обсуждение её действительно стоит прекратить до той поры пока вы не вникните достаточно глубоко в принципы работы современных многозадачных операционных систем типа Windows.
А что тут вникать? В начале темы вы сказали что 2 Mbps на WinOS принципиально не возможно, но у меня это получилось, не без помощи гугла. Сейчас вы говорите о мифических задержках цикла в 0,1 мс. Спасибо но вы только вводите в заблуждение и компетенция в этом вопросе у вас такая же как у Википедии.

Цитата Сообщение от northener Посмотреть сообщение
P.S.
Пишу программы для микропроцессоров и программы для связи с ними РС с начала 90-х.
Хвастовство временем работы. Действительно "достойный" показатель осведомленности в каком либо вопросе.
В следующий раз вы укажете на статистику под ником? Дату регистрации? Возраст?

З.Ы. http://dikoy44.narod.ru/projects/vkr11.htm (извините если ссылки запрещены такого рода) вот статья с которой я начал какие никакие потуги в программировании ПО и МК. Реализовано это в 2005 году, а то и раньше. Человек сделал это будучи студентом, а вы не можете дать даже направление поиска решения проблемы с вашим то "богатым" опытом.
0
Plus
0 / 0 / 0
Регистрация: 29.07.2015
Сообщений: 46
07.12.2016, 13:20 #22
могу предложить погонять байты моей программой на компонент «Serial Port ActiveX Control», правда у меня проблемы при приеме байтов свыше 12 байтов и поэтому сам подумываю применять Win API.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2016, 13:20
Привет! Вот еще темы с ответами:

Опрос состояния порта принтера - Delphi
Помогите выполнить сабж

Программа для прослушивания открытого порта. - Delphi
В общем есть приложение - которое открыло порт и общается по нему... Могу ли я Написать прогу - которая бы могла 'прослушивать' этот порт...

Как написать драйвер вирт. com-порта ??? - Delphi
Как написать драйвер, чтобы com5,например, появился. Пишешь в порт, данные в программу передаются.

Программа, которая принимала бы данные с com-порта - Delphi
Помогите! Нужно написать прогу которая принимала бы данные с com-порта (от мини АТС)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.12.2016, 13:20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru