Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> COM-port, режим работы 
:(
    Опции темы
Nos
  Дата 4.8.2004, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 29.3.2004

Репутация: нет
Всего: нет



Уважаемые коллеги!
Такое вот дело: нужно написать программулинку для устройства, управляемого через ком-порт... так вот в описании алгоритма помимо всякой ерунды написано - режим работы ком-порта: скорость - 9600, 1 старт-бит, 8 бит данных, 1 стоп-бит, контроль чётности отсутствует. Всё понятно, вот только что такое СТАРТ-БИТ?! В доке по ком-порту упоминаний о нём не встречал... может быть кто-то что-то подскажет? Будте добры!
PM MAIL   Вверх
PILOT
Дата 4.8.2004, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Просто поверьте на слово: он есть, причем всегда и везде в RS-232.
Именно по нему и осуществляется синхронизация этого асинхронного интерфейса.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Nos
Дата 4.8.2004, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 29.3.2004

Репутация: нет
Всего: нет



Спасибо! А как насчёт настроек? Всё остальное можно устанавливать в ручную, а этот бит что существует по-умолчанию?
PM MAIL   Вверх
PILOT
Дата 4.8.2004, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Ну не обращайте на этот бит никакого внимания.
Остальное настраивайте.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
val
Дата 5.8.2004, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 2
Всего: 7



Цитата
а этот бит что существует по-умолчанию?


Старт-бит установливает драйвер порта...



--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
Manfred
Дата 20.8.2004, 08:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Продолжая тему...

Пишется прога связи с устройством (черным ящиком), а ля драйвер. Известно поведение устройства и ожидаемое им поведение проги - протокол обмена.

Прога висит в ожидании либо передачи данных от устройства, либо пинка со стороны пользователя (в окончательном варианте возможно вызова через СОМ или появления файла с информацией для передачи на устройство в определенном каталоге).
В первом случае она начинает принимать какие-то сигналы, проверяет их на ожидаемые согласно протокола и т.д. Во втором она сама передает данные, причем точно так же контролирует состояние встречной передачи, отслеживает одновременные попытки передачи, считает таймауты ожиданий согласно протокола, прерывает передачу согласно сигнала от устройства и т.д и т.п.

Практически все действия описанные в протоколе основываются на необходимости знать что данные передаются с устройства и что устройство готово к принятию данных. Причем в процессе работы мне постоянно и в любой момент может понадобится узнать, например, начата ли передача удаленным устройством или не отказалось ли оно принимать дальнейшую информацию и т.п.

Пишу на С++Билдере, пытаюсь использовать ВинАПИ функции работы с устройством (CreateFile, ?etCommMask, WaitCommEvent,...) Подскажите как определять готовность к приему/передаче, в произвольный момент времени. Не висеть, ожидая сигнала, а именно проверять как флаг.

P.S. Устройство использует только три шнурка: передача, прием и земля. Если это важно...
  Вверх
PILOT
Дата 20.8.2004, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Ты бы спросил в форуме по C++.
я пользуюсь готовым компонентом либо asyncpro либо cpdrv либо comm32 и не думаю об ожиданиях, там все на событиях (по передаче, по приему).

СУВ.



--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Manfred
Дата 20.8.2004, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.8.2004

Репутация: нет
Всего: нет



PILOT
Цитата
Ты бы спросил в форуме по C++.

В принципе язык значения не имеет. Пишите на пасквиле - моя понять biggrin.gif

Цитата
я пользуюсь готовым компонентом либо asyncpro либо cpdrv либо comm32 и не думаю об ожиданиях, там все на событиях (по передаче, по приему).

Платные возможности нет приобрести. Да и не думаю я что там все так страшно руками писать... Вот только времени мало, потому и обращаюсь. Здесь в форуме частенько тему затрагивают, но еще нигде детально не рассмотрели интересующий меня вопрос... вроде бы...
PM MAIL   Вверх
PILOT
Дата 20.8.2004, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Это не платные.
Вот например.

СУВ.

Присоединённый файл ( Кол-во скачиваний: 38 )
Присоединённый файл  CPDRV.ZIP


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
shedon
Дата 20.8.2004, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 6
Всего: 11



Цитата

Пишу на С++Билдере, пытаюсь использовать ВинАПИ функции работы с устройством (CreateFile, ?etCommMask, WaitCommEvent,...) Подскажите как определять готовность к приему/передаче, в произвольный момент времени. Не висеть, ожидая сигнала, а именно проверять как флаг.

Тема уже сто раз поднималась на форуме, посмотри в факе
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
PM MAIL WWW ICQ   Вверх
Manfred
Дата 20.8.2004, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.8.2004

Репутация: нет
Всего: нет



shedon
Цитата
http://forum.vingrad.ru/index.php?act=ST&f=31&t=4043

только инициализация с установкой параметров. с этим справляемся без проблем. wink.gif

Цитата
здесь http://forum.vingrad.ru/index.php?act=ST&f...85&hl=writefile

Строго запись или чтение. Это тоже особых сложностей не вызовет.

А я все же повторюсь - нужно определение состояния линии приема и передачи. Не совсем себе представляю как это правильно называется, но это точно нигде не описывалось Вами rolleyes.gif

Пример кусочка алгоритма:

если нет встречной передачи, а также если порт готов к передаче передаю 2 служебных байта. дожидаюсь конца передачи и проверяю, нет ли встречной передачи (она не обязательно будет. она может быть). Если все тихо, передаю еще десяток байт данных. между каждым переданным байтом проверяю на встречный сигнал. По окончанию передачи данных жду от удаленного конца подтверждения (пара служебных байт) и, одновременно, анализирую возможность появления данных для дальнейшей передачи (из файла, из другой программы, из сокета etc.) Вполне может быть ситуация одновременной попытки посылки. Тогда прерываем и по таймеру ожидаем перепосылки данных.

Короче нужно в любой момент знать "есть готовность к передаче" / "начата удаленная передача". Также надо знать сколько байт прочитать из порта в текущий момент. Также есть ли понятие "конец файла" относительно порта и т.д.
Добавлено @ 10:52
Цитата(PILOT @ 20.8.2004, 09:46)
Это не платные.
Вот например.

СУВ.

Сейчас попробую с ним поразбираться... Хотелось бы к билдеру прикрутить, если смогу
PM MAIL   Вверх
Manfred
Дата 20.8.2004, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.8.2004

Репутация: нет
Всего: нет



PILOT
Прикрутить пока не получилось. Даже под Дельфями чет не хватало ему... Но зато очень удачно наличие исходных кодов. Именно там выискались такие полезные вещи как ClearCommError, которая, кто бы мог подумать, вернет заполненность буферов smile.gif

Сейчас еще почитаю - может еще чего-нить полезное найду. А вообще-то приятный компонентик... rolleyes.gif
PM MAIL   Вверх
Manfred
Дата 20.8.2004, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.8.2004

Репутация: нет
Всего: нет



Во, ткнули носом в собственную тупость - устройство не посылает сигналов (сам же писал: использует только три шнурка: передача, прием и земля). Так что и ловить-то нечего smile.gif Теперь только байты в приемном буфере ловить...

P.S. И почему это мне казалось что порт их сам генерирует? butbut.gif

Спасибо за помощь

Это сообщение отредактировал(а) Manfred - 20.8.2004, 12:39
PM MAIL   Вверх
PILOT
Дата 20.8.2004, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Пожалуйста, для этого и сущ-вуют форумы...

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
shedon
Дата 20.8.2004, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 6
Всего: 11



Цитата
. Также есть ли понятие "конец файла" относительно порта и т.д.

Стоповый бит smile.gif
Цитата
Короче нужно в любой момент знать "есть готовность к передаче" / "начата удаленная передача". Также надо знать сколько байт прочитать из порта в текущий момент.

Что ты понимаешь под готовностью к передаче ?
По-идее оно всегда готово, если не сломано smile.gif
У меня сейчас нету под рукой не вижуал студии не моих проектов, так, что конкретно сказать не могу, но посмотри функции SetCommMask, GetCommMask и WaitCommEvent,
должны помочь...


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1301 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.