|
Программирование COM под Windows, не могу справится с переполнением приемного буфера |
|
|
|
 |
Ответов
|
Nov 19 2012, 19:08
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 29-10-06
Из: Тула
Пользователь №: 21 769

|
Цитата(zombi @ Nov 19 2012, 21:18)  1. Попробуйте всегда перед началом работы с портом выполнить PurgeComm. Не получится. После переполения теряется дескриптор, а он нужен в том числе и для PurgeComm. Цитата(zombi @ Nov 19 2012, 21:18)  2. Не думаю что виндовский буфер может что то затирать кроме себя.  Неужели Вы думаете что винда может не контролировать переполнение буфера и что то там затирать?  Честно - совсем так не думал. Но это происходит и я не могу понять почему. Цитата(Xenia @ Nov 19 2012, 21:20)  Мне не понятно ваше возражение о том, что "Буфер любого размера все равно когда-то переполнится". С чего бы ему вдруг переполняться, если вы посылки регулярно забираете? Этот буфер FIFO, и переполниться он может только если посылки будут приходить, а получать вы их не будете. Забираю я из буфера не регулярно. А ненужные посылки идут непрерывно. Ситуация такая. Есть посылки которые шлет компьютер по нажатию мышкой, и получает тут же ответ. Это все работает. А можно переключить пульт в автономный режим. И в этом режиме в компьютер непрерывно шлется мусор. Компьютер в это время ничего не делает, но буфер его наполняется мусором. И количество мусора ничем не ограничено. Цитата(Xenia @ Nov 19 2012, 21:20)  На ваш вопрос я уже ответила (или попыталась ответить) советом увеличить размер буфера. Если вы знаете размер посылки, то сделайте размер приемного буфера раз в 10 больше, Да хоть в 1000 раз, все равно он теоретически может переполниться, я уже сказал что такой вариант мне не подходит.
|
|
|
|
|
Nov 19 2012, 19:39
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 29-10-06
Из: Тула
Пользователь №: 21 769

|
Цитата(Сергей Борщ @ Nov 19 2012, 22:10)  Но подумайте, что вы такое пишете? Дескриптор в винде - это указатель, которая винда дает вам при открытии прота. Вы его храните у себя, как он может потеряться? Разве что ваша программа неловким движением что-то пишет в ту ячейку, куда вы положили этот указатель. Ну не знаю, просто говорю что вижу в отладчике. А я этот дескриптор не трогаю. Да и происходит это во время когда моя программа ничего не делает, но в порт летит мусор. Завтра еще перепроверю. Ну а как бы временно приостановить прием есть варианты?
|
|
|
|
|
Nov 20 2012, 08:50
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(paskal @ Nov 19 2012, 23:39)  Ну а как бы временно приостановить прием есть варианты? Прием останавливается сам, как раз при переполнении буфера (при этом порт переходит в состояние ошибки). Затираться ничего нигде не должно. Цитата Ну не знаю, просто говорю что вижу в отладчике. А я этот дескриптор не трогаю. Да и происходит это во время когда моя программа ничего не делает, но в порт летит мусор. Ищите ошибку у себя в программе. Скорее всего вы не обрабатываете ошибки, которые функции работы с портом будут возвращать после переполнения буфера.
|
|
|
|
Сообщений в этой теме
paskal Программирование COM под Windows Nov 19 2012, 16:10 Xenia Посоветую увеличить размер буфера (можно входного ... Nov 19 2012, 16:17 paskal Цитата(Xenia @ Nov 19 2012, 19:17) Посове... Nov 19 2012, 16:42  Xenia Цитата(paskal @ Nov 19 2012, 20:42) Нет, ... Nov 19 2012, 16:52 paskal Таймер там не нужен потому что алгоритм работы пре... Nov 19 2012, 17:16 Xenia Цитата(paskal @ Nov 19 2012, 21:16) Можно... Nov 19 2012, 18:20 zombi Цитата(Xenia @ Nov 19 2012, 22:20) ... Эт... Nov 19 2012, 18:50  zombi Цитата(paskal @ Nov 19 2012, 21:55) После... Nov 19 2012, 19:09   paskal дубль. сорри. Nov 19 2012, 19:42   paskal Цитата(Сергей Борщ @ Nov 19 2012, 22:10) ... Nov 20 2012, 15:24 MrYuran Цитата(zombi @ Nov 19 2012, 22:18) 2. Не ... Nov 20 2012, 09:39 dac ТС походу объявил в проге массив, и считывает в не... Nov 20 2012, 10:36 ARV я конечно извиняюсь... но нафига вообще открывать ... Nov 20 2012, 11:19 Xenia Цитата(ARV @ Nov 20 2012, 15:19) я конечн... Nov 20 2012, 12:20  ARV Цитата(Xenia @ Nov 20 2012, 16:20) А вот ... Nov 20 2012, 12:32   vvs157 Цитата(ARV @ Nov 20 2012, 16:32) что може... Nov 20 2012, 13:08   Xenia Цитата(ARV @ Nov 20 2012, 16:32) Xenia, б... Nov 20 2012, 14:52 vvs157 Цитата(paskal @ Nov 19 2012, 20:10) что п... Nov 20 2012, 11:23 zombi Цитата(MrYuran @ Nov 20 2012, 12:39) Откр... Nov 20 2012, 11:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|