Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание документации http://www.cyberforum.ru/cpp/thread231772.html
Один из самых больных вопросов для плохо организованных проектов :) Вопрос собственно такой: чем (в чём, в каком редакторе) создавать документацию и в каком формате хранить? Есть мысли-вопрос по структуре. Очевидно, что документация бывает нескольких типов, например для разработчиков: описание внутреннего устройства и логики работы + интерфейс (API Referense) + Programming...
C++ Автоматизация OpenOffice 3.2 Доброго времени суток. Необходимо прикрутить OpenOffice 3.2 API к VS 2008 или Qt Creator(вроде как, правда, Оо не дружит особо с MinGW, но все таки). ОС Win7. Долго читал различные манула, форумы и прочее, пришел к такому порядку действий: 1)скачать Оо 3.2 2)скачать Оо SDK 3.2/3.2.1 3)в сдк найти файл setsdkenv_windows.bat, запустить, получить примерно такое: SDK = c:\OpenOfficeSDK\sdk ... http://www.cyberforum.ru/cpp/thread231355.html
Как написать функцию, которая бы автоматически определяла типа принимаемых параметров? C++
Друзья! На самом деле примеров подобных функций много, я имею ввиду конструкторы объектов классов из библиотеки STL Но там принимаемые параметры различаются явно. А у меня- никак, но тем не менее, они разные. Ну то есть я хочу написать класс, работающую как с переменными типа int, так и Verylong (большие числа, суть последовательность элементов). То есть объекты такого класса создастся...
Подключение TLB-файла C++
Доброе время суток. Попросили написать программу учета для кассового аппарата. Чтобы хозяин пришел глянул что как, подредактировал и ушел. На сайте производителя нашел описание протокола связи между ПК и КА, но он был не полным, были описаны некоторые методы считывания информации, но без записи, была затронута запись но данных не дали. Короче документация ужасная. В точке по продажам мне...
C++ Log по основанию 2 http://www.cyberforum.ru/cpp/thread230077.html
Люди, помогите!!! Нужно написать функцию (Log по основанию 2). Я делал через классы. Так что, все что можно было перегрузить (+,-,*,/) я перегрузил. за скорость плачу
C++ не могу разобраться с процессом незнал куда написать необходимо разобраться с процессом прикрепленным ниже а именно принцип работы. При работе с дизасемблером(я еще новичок не разбираюсь) суть не открылась мне если кто разбирается прощу помощи подробнее

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

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

21.01.2011, 04:15. Просмотров 2331. Ответов 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? Никто не объяснит?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru