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

 
 
> Работа с 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
Ответов
lolikandr
сообщение Feb 6 2007, 09:52
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 56
Регистрация: 25-06-05
Пользователь №: 6 300



Была такая же бага (потери кусков данных), когда читал просто в цикле по такому же принципу:
Код
if stat1.cbInQue>0  then

И тоже терминальной программой все нормально принималось.
Только, когда использовал компонент TComm от AsyncPro и событие OnRxChar, получил все данные без потерь от непрерывного потока на обычном COM-порту при скорости 115200.
На том же компоненте удалось получать данные и при скорости 921600 на виртуальном COM-порту от FTDI.
По поводу проверки железа - Rx и Tx закорачивается в конце кабеля. Пишется микрокусок программы (а то и отдельная микропрограмма) на передачу-прием-контроль. Сразу видно, что не так. Для виндовс программы тоже желательно провести такую процедуру, чтобы быть увереным в своей программе.
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
- - Joy   Цитата(CSB @ Feb 2 2007, 16:11) Тема не р...   Feb 6 2007, 10:44
- - CSB   Цитататерминальной программой все нормально приним...   Feb 6 2007, 16:25
- - _Sam_   ЦитатаТут на форуме читал, что ReadFile() весьма м...   Feb 6 2007, 20:39
- - 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 Текстовая версия Сейчас: 26th June 2025 - 22:14
Рейтинг@Mail.ru


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