![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
Nos |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 29.3.2004 Репутация: нет Всего: нет |
Уважаемые коллеги!
Такое вот дело: нужно написать программулинку для устройства, управляемого через ком-порт... так вот в описании алгоритма помимо всякой ерунды написано - режим работы ком-порта: скорость - 9600, 1 старт-бит, 8 бит данных, 1 стоп-бит, контроль чётности отсутствует. Всё понятно, вот только что такое СТАРТ-БИТ?! В доке по ком-порту упоминаний о нём не встречал... может быть кто-то что-то подскажет? Будте добры! |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Просто поверьте на слово: он есть, причем всегда и везде в RS-232.
Именно по нему и осуществляется синхронизация этого асинхронного интерфейса. СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
Nos |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 29.3.2004 Репутация: нет Всего: нет |
Спасибо! А как насчёт настроек? Всё остальное можно устанавливать в ручную, а этот бит что существует по-умолчанию?
|
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Ну не обращайте на этот бит никакого внимания.
Остальное настраивайте. СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: 2 Всего: 7 |
Старт-бит установливает драйвер порта... -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
Manfred |
|
|||
Unregistered |
Продолжая тему...
Пишется прога связи с устройством (черным ящиком), а ля драйвер. Известно поведение устройства и ожидаемое им поведение проги - протокол обмена. Прога висит в ожидании либо передачи данных от устройства, либо пинка со стороны пользователя (в окончательном варианте возможно вызова через СОМ или появления файла с информацией для передачи на устройство в определенном каталоге). В первом случае она начинает принимать какие-то сигналы, проверяет их на ожидаемые согласно протокола и т.д. Во втором она сама передает данные, причем точно так же контролирует состояние встречной передачи, отслеживает одновременные попытки передачи, считает таймауты ожиданий согласно протокола, прерывает передачу согласно сигнала от устройства и т.д и т.п. Практически все действия описанные в протоколе основываются на необходимости знать что данные передаются с устройства и что устройство готово к принятию данных. Причем в процессе работы мне постоянно и в любой момент может понадобится узнать, например, начата ли передача удаленным устройством или не отказалось ли оно принимать дальнейшую информацию и т.п. Пишу на С++Билдере, пытаюсь использовать ВинАПИ функции работы с устройством (CreateFile, ?etCommMask, WaitCommEvent,...) Подскажите как определять готовность к приему/передаче, в произвольный момент времени. Не висеть, ожидая сигнала, а именно проверять как флаг. P.S. Устройство использует только три шнурка: передача, прием и земля. Если это важно... |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Ты бы спросил в форуме по C++.
я пользуюсь готовым компонентом либо asyncpro либо cpdrv либо comm32 и не думаю об ожиданиях, там все на событиях (по передаче, по приему). СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
Manfred |
|
||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.8.2004 Репутация: нет Всего: нет |
PILOT
В принципе язык значения не имеет. Пишите на пасквиле - моя понять ![]()
Платные возможности нет приобрести. Да и не думаю я что там все так страшно руками писать... Вот только времени мало, потому и обращаюсь. Здесь в форуме частенько тему затрагивают, но еще нигде детально не рассмотрели интересующий меня вопрос... вроде бы... |
||||
|
|||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
-------------------- тут могла быть Ваша реклама... |
|||
|
||||
shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 6 Всего: 11 |
Тема уже сто раз поднималась на форуме, посмотри в факе http://forum.vingrad.ru/index.php?act=ST&f=31&t=4043 и здесь http://forum.vingrad.ru/index.php?act=ST&f...85&hl=writefile -------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
Manfred |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.8.2004 Репутация: нет Всего: нет |
shedon
только инициализация с установкой параметров. с этим справляемся без проблем. ![]()
Строго запись или чтение. Это тоже особых сложностей не вызовет. А я все же повторюсь - нужно определение состояния линии приема и передачи. Не совсем себе представляю как это правильно называется, но это точно нигде не описывалось Вами ![]() Пример кусочка алгоритма: если нет встречной передачи, а также если порт готов к передаче передаю 2 служебных байта. дожидаюсь конца передачи и проверяю, нет ли встречной передачи (она не обязательно будет. она может быть). Если все тихо, передаю еще десяток байт данных. между каждым переданным байтом проверяю на встречный сигнал. По окончанию передачи данных жду от удаленного конца подтверждения (пара служебных байт) и, одновременно, анализирую возможность появления данных для дальнейшей передачи (из файла, из другой программы, из сокета etc.) Вполне может быть ситуация одновременной попытки посылки. Тогда прерываем и по таймеру ожидаем перепосылки данных. Короче нужно в любой момент знать "есть готовность к передаче" / "начата удаленная передача". Также надо знать сколько байт прочитать из порта в текущий момент. Также есть ли понятие "конец файла" относительно порта и т.д. Добавлено @ 10:52
Сейчас попробую с ним поразбираться... Хотелось бы к билдеру прикрутить, если смогу |
||||||
|
|||||||
Manfred |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.8.2004 Репутация: нет Всего: нет |
PILOT
Прикрутить пока не получилось. Даже под Дельфями чет не хватало ему... Но зато очень удачно наличие исходных кодов. Именно там выискались такие полезные вещи как ClearCommError, которая, кто бы мог подумать, вернет заполненность буферов ![]() Сейчас еще почитаю - может еще чего-нить полезное найду. А вообще-то приятный компонентик... ![]() |
|||
|
||||
Manfred |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.8.2004 Репутация: нет Всего: нет |
Во, ткнули носом в собственную тупость - устройство не посылает сигналов (сам же писал: использует только три шнурка: передача, прием и земля). Так что и ловить-то нечего
![]() P.S. И почему это мне казалось что порт их сам генерирует? ![]() Спасибо за помощь Это сообщение отредактировал(а) Manfred - 20.8.2004, 12:39 |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Пожалуйста, для этого и сущ-вуют форумы...
СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
shedon |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 6 Всего: 11 |
Стоповый бит ![]()
Что ты понимаешь под готовностью к передаче ? По-идее оно всегда готово, если не сломано ![]() У меня сейчас нету под рукой не вижуал студии не моих проектов, так, что конкретно сказать не могу, но посмотри функции SetCommMask, GetCommMask и WaitCommEvent, должны помочь... -------------------- Programming is like sex: One mistake and you have to support it your lifetime |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |