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

 
 
> Работа с COM-портом
CSB
сообщение Feb 2 2007, 17:11
Сообщение #1


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

Группа: Новичок
Сообщений: 100
Регистрация: 9-03-06
Пользователь №: 15 088



Тема не раз поднималась, но все таки остались вопросы.
Есть датчик, который посылает на ПК некие промежуточные результаты. На ПК все нормально принимается и обсчитывется конечный результат. Пакеты по 8 байт. Скорость UART 115200 kbps. Использую ReadFile() и CPort ( В CPort тоже используется ReadFile() ). Но как только частота передачи возрастает до 1000 посылок в секунду, то в винде начинатся проблемы: приходят неполные пакеты, часто приходит только заголовок пакета, а остальная часть нули или заголовок может оказаться в середине пакета. Увеличение приемного буфера в винде не решило проблемы. При отключении графики и прочего пакеты иногда принимаются нормально. Но без отображения результатов никак.

ЗЫ
В Terminal все принимается нормально - там есть возможность записать в лог принимаемые байты.
Пробовал DLPortIО, но так и не понял как подружить COM с этим драйвером.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Sam_
сообщение Feb 6 2007, 20:39
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031



Цитата
Тут на форуме читал, что ReadFile() весьма медленная функция и нужно писать свой драйвер

Ну хз. Ни в Win98 ни в WinXP подобной проблемы у меня не было, хотя пакеты имели бо'льший размер!
ReadFile должна возвращать количество принятых байт, возвращает 8? Было бы неплохо посмотреть код настройки ком порта.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- CSB   Работа с COM-портом   Feb 2 2007, 17:11
- - beer_warrior   А каким образом вызывается ReadFile()? По событию,...   Feb 3 2007, 00:37
- - CSB   В потоке   Feb 3 2007, 02:28
- - beer_warrior   А portmonом его? Такое впечетление, что принимаетс...   Feb 3 2007, 04:07
- - CSB   Дык, я ж говорю, что терминальной программой все н...   Feb 3 2007, 12:24
- - lolikandr   ReadFile() вызывается в отдельном потоке по какому...   Feb 3 2007, 12:45
- - CSB   Сегодня выяснилось, что и в Terminal приходят обры...   Feb 3 2007, 16:05
|- - Andrew2000   Цитата(CSB @ Feb 3 2007, 16:05) Попробую ...   Feb 3 2007, 22:25
- - _Sam_   Может в паузе между байтами или пакетами?   Feb 3 2007, 22:38
- - CSB   ЦитатаСкорость чего? Ваши 8 байт раз в 1мс только ...   Feb 4 2007, 00:43
|- - Andrew2000   Цитата(CSB @ Feb 4 2007, 00:43) Скорость ...   Feb 4 2007, 01:33
- - CSB   ЦитатаМожет в паузе между байтами или пакетами? Не...   Feb 4 2007, 00:53
- - CSB   ЦитатаБит? т.е. без контроля - тока старт и стоп. ...   Feb 4 2007, 12:13
- - _Sam_   С байтами понятно вы их не затираете. Между пакета...   Feb 4 2007, 16:03
- - CSB   Пакет обрамлен стартовыми и оконечными байтами (пр...   Feb 4 2007, 18:24
- - immelstorm   В принципе, можно попробовать работать с портом на...   Feb 4 2007, 22:45
- - _Sam_   ЦитатаПакет обрамлен стартовыми и оконечными байта...   Feb 5 2007, 23:53
- - CSB   Байт стаффинг не используется: пакет-то обрамлен с...   Feb 6 2007, 09:32
- - lolikandr   Была такая же бага (потери кусков данных), когда ч...   Feb 6 2007, 09:52
- - Joy   Цитата(CSB @ Feb 2 2007, 16:11) Тема не р...   Feb 6 2007, 10:44
- - CSB   Цитататерминальной программой все нормально приним...   Feb 6 2007, 16:25
- - AndrewKirs   По-моему, надо использовать асинхронный режим IO (...   Feb 9 2007, 17:41
- - Georgy   А ни слова про длительность и амплитуду импульсов....   Feb 23 2007, 02:08
- - amw   Убедится в наличии паузы по сигналу Rx между пакет...   Feb 26 2007, 19:15


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

 


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


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