![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Allest |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 17.9.2003 Где: Санкт-Петербург Репутация: нет Всего: нет |
Есть прибор, который с определённой периодичностью посылает данные на COM-порт.
Я открыл этот порт (CreateFile), настроил как требуется (Скорость 19200, 8 бит, 1 стоповый), и начинаю считывать в Thread с помощью ReadFile, но где-то на 7 вызове этой функции Thread виснет. Почему? помогите. поток информации почти 2 кб в секунду |
|||
|
||||
| Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Покажи код инициализации порта и чтения
-------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
| shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
Может виснуть из-за того, что время ожидания данных при чтении стоит 0. И если на порт не приходит, указанное в ReadFile, число байт, то функция не возвращает управление, вызвавшему её потоку, до тех пор, пока не получит все байты.
-------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
| Allest |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 17.9.2003 Где: Санкт-Петербург Репутация: нет Всего: нет |
Инициализация
Чтение в потоке BYTE m_rgbD[16384]; DWORD dw;
а какое время мне установить? |
||||||
|
|||||||
| shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
Может тебе за один раз читать по меньше байт? Ты хочешь сразу прочесть 16384 байт, а там может приходит меньше, он и ждйт до бесконечности пока не придут все 16384 байт. -------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
| Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Попробуй установить ReadIntervalTimeout = MAXDWORD. В хелпе написано, что такое значение в сочетании с ReadTotalTimeoutMultiplier = 0 и ReadTotalTimeoutConstant = 0 вызывает мгновенный возврат накопленного буфера, даже если там ничего нет.
ЗЫ Если не поможет, могу дать рабочий исходник Это сообщение отредактировал(а) Ars - 30.9.2003, 13:36 -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |