Например TDA7294

Форум РадиоКот • Просмотр темы - Переполнение буфера COM порта
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт июн 13, 2025 01:00:16

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Переполнение буфера COM порта
СообщениеДобавлено: Пн ноя 19, 2012 19:44:33 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн сен 05, 2011 10:03:06
Сообщений: 160
Откуда: Тула
Рейтинг сообщения: 0
Добрый вечер!
Сваял программку на Билдере для работы с COM портом. Программа простенькая, использую открытие порта через CreateFile, запись/чтение через WriteFile/ReadFile. Режим работы синхронный: программа послала блок, ждет ответный блок с заранее известным числом байт. Это у меня работает.
А проблема связана с тем что устройство иногда передает большой поток данных. Программа с ними не должна ничего делать, просто игнорировать. Но они все равно поступают в приемный буфер и переполняют его. Да так что клинит всю дальнейшую работу. Хуже всего что затирается переменная в которой записан дескриптор порта, а без дескриптора я ничего не могу сделать. Ни сбросить буфер, ни закрыть порт. В общем надо как то предотвратить переполнение буфера. Какие есть варианты для этого?

_________________
Если бы на станции "Мир" стояли Винды, она бы еще висела и висела...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Переполнение буфера COM порта
СообщениеДобавлено: Пн ноя 19, 2012 23:11:36 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3377
Рейтинг сообщения: 0
paskal писал(а):
Хуже всего что затирается переменная в которой записан дескриптор порта
Как это? :shock:
Видимо вы не правильно построили программу. Буфер у вас где находится?
И функция ReadFile читает столько байт, сколько запросили, а не сколько пришло. Видимо у вас есть проблемы в коде. :idea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Переполнение буфера COM порта
СообщениеДобавлено: Вт ноя 20, 2012 12:54:27 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 56
Зарегистрирован: Вт авг 28, 2012 22:21:33
Сообщений: 535
Рейтинг сообщения: 0
Код работы с портом в студию.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Переполнение буфера COM порта
СообщениеДобавлено: Вс ноя 25, 2012 06:19:10 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
paskal писал(а):
В общем надо как то предотвратить переполнение буфера

Для этого надо своевременно читать данные буфера, или чаще читайте или увеличьте объем буфера.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Переполнение буфера COM порта
СообщениеДобавлено: Вт дек 04, 2012 16:11:42 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Какой именно буфер переполняется? у порта есть аппаратный буфер в 15 байт, иногда больше но он практически НИКОГДА не переполняется, поскольку современные чипы работают с DMA. Данные с этого буфера поступают в виндовый буфер порядка 1-2Мб, при переполнении которого просто возникает ошибка в программе... но затирать дескриптор? скорей всего у вас переполняется какой-то свой внутренний буфер реализованный средствами программы - тут поможет ТОЛЬКО проверка выхода за границы отведенной памяти - не принимать данных больше чем можно поместить в выделенную память. Причем во многих случаях такое поведение приводит к ошибке AV в программе, но бывает так что массив располагается до каких-то еще переменных в одной области памяти выделенной программе - в таких случаях операционка не может отследить выход за пределы отведенной памяти под буффер и ошибка AV не возникает, поскольку с точки зрения операционки программа что-то делает именно со своей областью памяти.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y