Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 08.04.2008
Сообщений: 13

Нет ли от сом порта особого сообщения...?

28.08.2008, 17:28. Показов 1640. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нет ли от сом порта особого сообщения, при поступлении в него данных для чтения передаваемого сразу в приложение? Имею ввиду сообщения типа, как от щелчка мыши или клавиатуры WM_. Проблема в том, что сейчас в нашей проге поставлены отжидающие функции типа WaitCommEvent и
C++
1
2
3
4
5
6
if(!ReadFile (hCOM, &sBf, Kbait,&dwBytTransf,&o))
 {
 dwRes = WaitForSingleObject(o.hEvent,500);
if(dwRes == WAIT_TIMEOUT)
continue;
 }
и почему-то этот способ работает лишь, если ставить [SIZE=2]
Sleep(..) перед чтением.. но в это время теряются ценные данные. Нельзя ли прямо как-то поступление данных в СОМ обрабатывать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.08.2008, 17:28
Ответы с готовыми решениями:

График из СОМ порта
Доброго времени суток! Не получается решить довольно тривиальную задачу - графически отобразить данные, принимаемые из СОМ порта. За...

От СОМ-порта к OpenGL
Ещё раз здравствуйте! Проблема в следующем: с СОМ-порта поступают данные, я их обрабатываю и всё вроде ничего... НО! Если принимать...

Прерывание от сом порта
Читаю с порта данные, т.е. данные в буфер приходят нормально, но я наверно чет пропустил и не могу понять почему не отрабатывает прерывание...

8
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
28.08.2008, 17:30
а если WaitForSingleObject(o.hEvent,INFINITE);
0
Эксперт С++
 Аватар для XuTPbIu_MuHTAu
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
28.08.2008, 17:38
Я так понимаю,нужно параллельно с ожиданием ввода от СOM порта обрабатывать все остальное? COM порт,конечно,ничего не отправит изза того,что в системе что-то происходит. Выход из ситуации - использование потоков. Один поток для ком порта,другой для остального.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
28.08.2008, 20:31
Что-то типа этого:
C++
1
2
3
4
5
6
dword dwError = CE_BREAK;
COMSTAT cs;
ClearCommError(hCom, &dwError, &cs);
if(cs.cbInQue){
    // пришло байт: cs.cbInQue
}
Только это нужно вызывать с некоторой частотой.
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
31.08.2008, 00:38
Цитата Сообщение от Olenka_foxy Посмотреть сообщение
Нет ли от сом порта особого сообщения, при поступлении в него данных для чтения передаваемого сразу в приложение? Имею ввиду сообщения типа, как от щелчка мыши или клавиатуры WM_.
Нет.
Встречный вопрос: а как COM порт должен "понять", что:
1. данные пришли полностью?
2. данные пришли без искажений?
0
0 / 0 / 0
Регистрация: 08.04.2008
Сообщений: 13
03.09.2008, 10:59  [ТС]
данные приходят по частям и все это постепенно считывается с СОМ порта в отдельном потоке. СОМ не должен распозновать полностью ли и без искажений ли пришли данные, все это делает приложение самостоятельно после прочтения данных в отдельном потоке. т.о. есть 3 параллельных потока: 1. по таймеру (мультимедийному) вывод на экран кол-ва переданных и прочтенных данных, 2 . передача данных(тоже по таймеру, но в отдельном потоке), 3. чтение данных, постоянно, бесконечным циклом до остановки кнопкой "стоп" или закрытием окна.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
03.09.2008, 20:41
Ну все правильно, с COM'ом так и работают. Только в потоке чтения данных из COM'а должна быть функция sleep(сколько-нибудь), чтобы прога проц не жрала (обычно 20-50 мс хватает).
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
03.09.2008, 22:11
Только вот чего я не понял: а Sleep то зачем??? Все прекрасно и без него работает...
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
04.09.2008, 20:33
Посмотри в диспетчере задач загрузку процессора твоей прогой, когда она читает данные. Если больше 5%, то плохо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.09.2008, 20:33
Помогаю со студенческими работами здесь

Настройка СОМ-порта
Здравствуйте! Хотел бы попросить помощи в настройке структуры termios для правильной работы с СОМ-портом. Я честно пытался сам...

Сохранить параметры СОМ-порта!
Здравствуйте! Помогите плиз! Я себе сделал диалоговое окно с параметрами Сом-порта (см.рис.). Скажите пожалуйста как эти параметры...

Прием данных с СОМ-порта
В общем надо мне написать программу для передачи и приема хотя бы текста через последовательный порт. Нашел пару исходников программ в...

Графика для сом-порта
Ребят помогите накидать красивую графику для сом-порта, можно самую обычную) пожалуйста

Чтение и запись СОМ-порта
Привет ребят, нужна небольшая помощь от вас, начал работать с СОМ портом, и немного не догоняю тут в одном месте, нашел пример работы с СОМ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru