Форум программистов, компьютерный форум, киберфорум
Наши страницы

Задержка между записью/чтением Serial-порта - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание документации http://www.cyberforum.ru/cpp/thread231772.html
Один из самых больных вопросов для плохо организованных проектов :) Вопрос собственно такой: чем (в чём, в каком редакторе) создавать документацию и в каком формате хранить? Есть мысли-вопрос...
C++ Автоматизация OpenOffice 3.2 Доброго времени суток. Необходимо прикрутить OpenOffice 3.2 API к VS 2008 или Qt Creator(вроде как, правда, Оо не дружит особо с MinGW, но все таки). ОС Win7. Долго читал различные манула, форумы и... http://www.cyberforum.ru/cpp/thread231355.html
Как написать функцию, которая бы автоматически определяла типа принимаемых параметров? C++
Друзья! На самом деле примеров подобных функций много, я имею ввиду конструкторы объектов классов из библиотеки STL Но там принимаемые параметры различаются явно. А у меня- никак, но тем не менее,...
Подключение TLB-файла C++
Доброе время суток. Попросили написать программу учета для кассового аппарата. Чтобы хозяин пришел глянул что как, подредактировал и ушел. На сайте производителя нашел описание протокола связи...
C++ не могу разобраться с процессом http://www.cyberforum.ru/cpp/thread230038.html
незнал куда написать необходимо разобраться с процессом прикрепленным ниже а именно принцип работы. При работе с дизасемблером(я еще новичок не разбираюсь) суть не открылась мне если кто разбирается...
C++ Программирование микшера для windows 7 Пишу программу - микшер через win API. На XP все работает без проблем, перенес на windows 7 и оказалось что микшер не работает. Проблему нашел при выполнении команды mixerSetControlDetails, выдавала... подробнее

Показать сообщение отдельно
Vitam1n
4 / 4 / 0
Регистрация: 19.01.2011
Сообщений: 26

Задержка между записью/чтением Serial-порта - C++

21.01.2011, 04:15. Просмотров 2516. Ответов 4
Метки (Все метки)

Доброе время суток.
Работаю с одним устройством через RS232 порт, точнее через его эмуляцию с помощью PL2303 (USB-to-RS232).

Подключаюсь к порту на скорости 38400, 8 бит, без учета четности.
Так же устанавливаю таймауты чтения записи (вот тут-то мне скорее всего и нужна ваша помощь).
Затем передаю два байта: необходимый мне байт и байт окончания данных '\0'.
Далее мне необходимо делать Sleep(1500); для того что бы ReadFile(..); дал какие-то результаты.
Находил в интернете всякие рассуждения по этому поводу, советовали эти таймауты менять. Но как бы я их не менял результат один и тот же, если не поставлю Sleep(1500); - данные не будут приняты (BytesRead = 0), а буффер пуст.

Получается что я считываю данные до того, как эти данные сгенерируются на устройстве.

Мне постоянно надо слип ставить между этими операциями? Ставить 1500 или рассчитывать число как количество_байт*время_передачи_1_байт?
Или может время узнавать какой-то функцией, которой передам хэндл порта а она узнает время?
Или может я что-то не правильно делаю с настройками таймаута?

Сейчас они такие:
C++
1
2
3
4
5
6
COMMTIMEOUTS CommTimeOuts;
CommTimeOuts.ReadIntervalTimeout = MAXDWORD;
CommTimeOuts.ReadTotalTimeoutMultiplier  = 0;
CommTimeOuts.ReadTotalTimeoutConstant    = 0;
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant   = 1500;
Добавлено через 20 минут
Проблему решил:

C++
1
2
3
4
5
6
COMMTIMEOUTS CommTimeOuts;
CommTimeOuts.ReadIntervalTimeout = MAXDWORD;
CommTimeOuts.ReadTotalTimeoutMultiplier  = 0;
CommTimeOuts.ReadTotalTimeoutConstant    = 1500;
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant   = 1500;
при таких параметрах программа ждала необходимое время и потом читало данные. все получилось, пока что, если что, буду писать, потому как мне не два байта передавать надо, а намного больше, предполагаю что в том случае мне придется 0 на 1 или 10 поменять))

1500 подобралось подбором. Но почему именно 1500? Никто не объяснит?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru